{
  "openapi": "3.0.2",
  "info": {
    "title": "Digital Retail Engine — Public API (REST)",
    "description": "Use the Core.LongDescription or Core.Description annotation on your CDS service to provide a meaningful description.",
    "version": "1.13.0",
    "x-minor-version": 13
  },
  "x-sap-api-type": "ODATAV4",
  "x-odata-version": "4.01",
  "x-sap-shortText": "Use the Core.Description annotation on your CDS service to provide a meaningful short text.",
  "servers": [
    {
      "url": "/api/v1"
    }
  ],
  "tags": [
    {
      "name": "Action Article List Item",
      "description": "Article entry in an action-level article list for discount targeting"
    },
    {
      "name": "Action Exclusion",
      "description": "Rule excluding specific articles from receiving a discount"
    },
    {
      "name": "Action Types"
    },
    {
      "name": "Application Quantity Modes"
    },
    {
      "name": "Article",
      "description": "Product master data used for promotion condition matching"
    },
    {
      "name": "Article Group",
      "description": "Logical grouping of articles for promotion targeting"
    },
    {
      "name": "Article Group Item",
      "description": "Assignment of an article to an article group"
    },
    {
      "name": "Article Import Job",
      "description": "Deprecated since Sprint 115. Use ImportJobs + ImportJobErrors for PublicAPI bulk import tracking. ArticleImportJobs tracks POS /pos/articles/import-batch jobs only."
    },
    {
      "name": "Article Sources"
    },
    {
      "name": "Audit Logs"
    },
    {
      "name": "Budget",
      "description": "Spending limit for promotions with consumption tracking"
    },
    {
      "name": "Budget Consumption",
      "description": "Audit record of a budget consumption event"
    },
    {
      "name": "Budget Notification",
      "description": "Threshold-based alert rule for budget consumption monitoring"
    },
    {
      "name": "Budget Promotion Assignment",
      "description": "Assignment of a promotion to a budget for spending control"
    },
    {
      "name": "Budget Stakeholder Assignment",
      "description": "Links a stakeholder to a budget with a cost-sharing percentage"
    },
    {
      "name": "Budget Statuses"
    },
    {
      "name": "Bundle Component",
      "description": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition."
    },
    {
      "name": "Calculation Configuration"
    },
    {
      "name": "Calculation Log",
      "description": "Audit record of a confirmed POS transaction with applied promotions"
    },
    {
      "name": "Calculation Log Item",
      "description": "Per-item discount details for a confirmed transaction"
    },
    {
      "name": "Calculation Log Promotion",
      "description": "Per-promotion application details for a confirmed transaction"
    },
    {
      "name": "Calculation Log Statuses"
    },
    {
      "name": "Calculation Modes"
    },
    {
      "name": "Campaign",
      "description": "Container for related promotions (e.g. Easter 2026, BBQ Summer)"
    },
    {
      "name": "Campaign POS Group",
      "description": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners."
    },
    {
      "name": "Campaign Statuses"
    },
    {
      "name": "Comparison Operators"
    },
    {
      "name": "Condition",
      "description": "Individual condition for promotion eligibility evaluation"
    },
    {
      "name": "Condition Article List Item",
      "description": "Article entry in a condition-level article list for eligibility matching"
    },
    {
      "name": "Condition Types"
    },
    {
      "name": "Condition Value Categories"
    },
    {
      "name": "Condition Value List Item",
      "description": "Value entry in a condition-level value list for eligibility matching"
    },
    {
      "name": "Control POS Group Assignment",
      "description": "POS group assigned to the control arm of a PromotionPilotConfig"
    },
    {
      "name": "Coupon Code",
      "description": "Individual coupon code instance with lifecycle tracking"
    },
    {
      "name": "Coupon Code Batch",
      "description": "Batch generation request with progress tracking"
    },
    {
      "name": "Coupon Code Configuration",
      "description": "Reusable template defining how coupon codes are generated"
    },
    {
      "name": "Coupon Code Statuses"
    },
    {
      "name": "Coupon Code Types"
    },
    {
      "name": "Coupon Refill Schedule",
      "description": "Auto-refill configuration with distributed locking"
    },
    {
      "name": "Coupon Statuses"
    },
    {
      "name": "Coupon Type",
      "description": "Template defining coupon generation rules, redemption limits, and validity"
    },
    {
      "name": "Coupon Type Promotion Assignment",
      "description": "Assignment of a promotion to a coupon type for activation on redemption"
    },
    {
      "name": "Currencies"
    },
    {
      "name": "Discount Action",
      "description": "Reward definition specifying what discount is applied when a promotion triggers"
    },
    {
      "name": "Discount Types"
    },
    {
      "name": "Distribution Modes"
    },
    {
      "name": "Exclusion Article List Item",
      "description": "Article entry in an exclusion-level article list"
    },
    {
      "name": "Exclusion Group Promotion Assignment",
      "description": "Assignment of a promotion to a mutual exclusion group"
    },
    {
      "name": "Exclusion Types"
    },
    {
      "name": "Exclusivity Levels"
    },
    {
      "name": "Group Types"
    },
    {
      "name": "Import Item",
      "description": "Deprecated since Sprint 115. Use ImportJobErrors for PublicAPI bulk import error tracking. ArticleImportJobItems tracks POS /pos/articles/import-batch job items only."
    },
    {
      "name": "Import Job",
      "description": "Async-job state for Public API bulk imports and DRFOUT master-data ingest"
    },
    {
      "name": "Import Job Error",
      "description": "Per-row failure detail captured on all-or-nothing rollback"
    },
    {
      "name": "Local Deployments"
    },
    {
      "name": "Logical Connectors"
    },
    {
      "name": "Loyalty Action",
      "description": "Loyalty point operation applied when a loyalty promotion triggers"
    },
    {
      "name": "Loyalty Action Types"
    },
    {
      "name": "Loyalty Target Scopes"
    },
    {
      "name": "Mutual Exclusion Group",
      "description": "Named group of promotions that cannot be applied simultaneously"
    },
    {
      "name": "Notification Log",
      "description": "Audit record of a notification delivery attempt"
    },
    {
      "name": "Pilot POS Group Assignment",
      "description": "POS group assigned to the pilot arm of a PromotionPilotConfig"
    },
    {
      "name": "POS Group",
      "description": "Named group of POS systems for targeted promotion delivery"
    },
    {
      "name": "Priority Group",
      "description": "Named group controlling promotion application order when multiple promotions match"
    },
    {
      "name": "Priority Group Promotion Assignment",
      "description": "Assignment of a promotion to a priority group"
    },
    {
      "name": "Promotion",
      "description": "Core promotion definition with validity, type and calculation settings"
    },
    {
      "name": "Promotion Pilot Configuration",
      "description": "Pilot/control POS group split + pilot window for a Promotion (F9.a)"
    },
    {
      "name": "Promotion POS Group Assignment",
      "description": "Assignment of a promotion to a POS group"
    },
    {
      "name": "Promotion Statuses"
    },
    {
      "name": "Promotion Template",
      "description": "Frozen Promotion-shaped snapshot used to spawn new Promotions via materialize / cloneToPromotion"
    },
    {
      "name": "Promotion Types"
    },
    {
      "name": "Quantity Price Tier",
      "description": "Volume-based discount tier for QUANTITY_TIER promotions"
    },
    {
      "name": "Recharge Contribution",
      "description": "Budget contribution from a stakeholder"
    },
    {
      "name": "Redemption Log",
      "description": "Audit record of a coupon code redemption event"
    },
    {
      "name": "Resolution Strategies"
    },
    {
      "name": "Rounding Modes"
    },
    {
      "name": "Scaled Receipt Tier",
      "description": "Threshold-based discount tier for scaled receipt promotions"
    },
    {
      "name": "Selection Types"
    },
    {
      "name": "Stakeholder",
      "description": "Party that funds budgets (supplier, brand, or internal)"
    },
    {
      "name": "Stakeholder Promotion Assignment",
      "description": "Links a stakeholder to a promotion with a cost-sharing percentage (deprecated)"
    },
    {
      "name": "Stakeholder Types"
    },
    {
      "name": "Sync History"
    },
    {
      "name": "Template Condition",
      "description": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions"
    },
    {
      "name": "Template Condition Article List Item",
      "description": "Article entry in a template condition article list; mirrors ConditionArticleListItems"
    },
    {
      "name": "Template Condition Value List Item",
      "description": "Value entry in a template condition value list; mirrors ConditionValueListItems"
    },
    {
      "name": "Template Discount Action",
      "description": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions"
    },
    {
      "name": "Template Discount Action Article List Item",
      "description": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions"
    },
    {
      "name": "Template Discount Action Bundle Component",
      "description": "Mirrors BundleComponents for template-side BUNDLE actions"
    },
    {
      "name": "Template Discount Action Exclusion",
      "description": "Mirrors ActionExclusions for template-side discount exclusions"
    },
    {
      "name": "Template Discount Action Exclusion Article List Item",
      "description": "Mirrors ExclusionArticleListItems for template-side exclusion lists"
    },
    {
      "name": "Template Discount Action Quantity Tier",
      "description": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025)"
    },
    {
      "name": "Template Discount Action Scaled Receipt Tier",
      "description": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions"
    },
    {
      "name": "Template Loyalty Action",
      "description": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions"
    },
    {
      "name": "Use Cases"
    },
    {
      "name": "Webhook Subscription",
      "description": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery"
    }
  ],
  "paths": {
    "/$batch": {
      "post": {
        "summary": "Sends a group of requests",
        "description": "Group multiple requests into a single request payload, see [Batch Requests](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BatchRequests).\n\n*Please note that \"Try it out\" is not supported for this request.*",
        "tags": [
          "Batch Requests"
        ],
        "requestBody": {
          "required": true,
          "description": "Batch request",
          "content": {
            "multipart/mixed;boundary=request-separator": {
              "schema": {
                "type": "string"
              },
              "example": "--request-separator\nContent-Type: application/http\nContent-Transfer-Encoding: binary\n\nGET Promotions HTTP/1.1\nAccept: application/json\n\n\n--request-separator--"
            }
          }
        },
        "responses": {
          "200": {
            "description": "Batch response",
            "content": {
              "multipart/mixed": {
                "schema": {
                  "type": "string"
                },
                "example": "--response-separator\nContent-Type: application/http\n\nHTTP/1.1 200 OK\nContent-Type: application/json\n\n{...}\n--response-separator--"
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionArticleListItems": {
      "get": {
        "summary": "Retrieves a list of action article list items.",
        "tags": [
          "Action Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "fixedPrice",
                  "fixedPrice desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "ean",
                  "fixedPrice"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ActionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single action article list item.",
        "tags": [
          "Action Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in an action-level article list for discount targeting",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created action article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionArticleListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single action article list item.",
        "tags": [
          "Action Article List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "ean",
                  "fixedPrice"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single action article list item.",
        "tags": [
          "Action Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in an action-level article list for discount targeting",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single action article list item.",
        "tags": [
          "Action Article List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionArticleListItems({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a action article list item.",
        "tags": [
          "Action Article List Item",
          "Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionExclusions": {
      "get": {
        "summary": "Retrieves a list of action exclusions.",
        "tags": [
          "Action Exclusion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "action_ID",
                  "action_ID desc",
                  "exclusionType",
                  "exclusionType desc",
                  "articleNumber",
                  "articleNumber desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "articleGroupId",
                  "articleGroupId desc",
                  "manufacturer",
                  "manufacturer desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action exclusions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ActionExclusions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single action exclusion.",
        "tags": [
          "Action Exclusion"
        ],
        "requestBody": {
          "description": "Rule excluding specific articles from receiving a discount",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionExclusions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created action exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionExclusions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single action exclusion.",
        "tags": [
          "Action Exclusion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single action exclusion.",
        "tags": [
          "Action Exclusion"
        ],
        "requestBody": {
          "description": "Rule excluding specific articles from receiving a discount",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionExclusions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single action exclusion.",
        "tags": [
          "Action Exclusion"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionExclusions({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a action exclusion.",
        "tags": [
          "Action Exclusion",
          "Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionExclusions({ID})/articleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves article group of a action exclusion.",
        "tags": [
          "Action Exclusion",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionExclusions({ID})/exclusionArticleListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of exclusion article list items of a action exclusion.",
        "tags": [
          "Action Exclusion",
          "Exclusion Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusion_ID",
                  "exclusion_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusion_ID",
                  "articleNumber",
                  "ean"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single exclusion article list item of a action exclusion.",
        "tags": [
          "Action Exclusion",
          "Exclusion Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in an exclusion-level article list",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created exclusion article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionTypes": {
      "get": {
        "summary": "Retrieves a list of action types.",
        "tags": [
          "Action Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ActionTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ActionTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single action type.",
        "tags": [
          "Action Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a action type.",
        "tags": [
          "Action Types",
          "Action Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ActionTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a action type.",
        "tags": [
          "Action Types",
          "Action Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ActionTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ActionTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a action type.",
        "tags": [
          "Action Types",
          "Action Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ApplicationQuantityModes": {
      "get": {
        "summary": "Retrieves a list of application quantity modes.",
        "tags": [
          "Application Quantity Modes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved application quantity modes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ApplicationQuantityModes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ApplicationQuantityModes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single application quantity mode.",
        "tags": [
          "Application Quantity Modes"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved application quantity mode",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ApplicationQuantityModes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a application quantity mode.",
        "tags": [
          "Application Quantity Modes",
          "Application Quantity Modes texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ApplicationQuantityModes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a application quantity mode.",
        "tags": [
          "Application Quantity Modes",
          "Application Quantity Modes texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ApplicationQuantityModes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a application quantity mode.",
        "tags": [
          "Application Quantity Modes",
          "Application Quantity Modes texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroupItems": {
      "get": {
        "summary": "Retrieves a list of article group items.",
        "tags": [
          "Article Group Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "article_ID",
                  "article_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "articleGroup_ID",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "articleGroup",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article group items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleGroupItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article group item.",
        "tags": [
          "Article Group Item"
        ],
        "requestBody": {
          "description": "Assignment of an article to an article group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article group item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroupItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single article group item.",
        "tags": [
          "Article Group Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "articleGroup_ID",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "articleGroup",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article group item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single article group item.",
        "tags": [
          "Article Group Item"
        ],
        "requestBody": {
          "description": "Assignment of an article to an article group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single article group item.",
        "tags": [
          "Article Group Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroupItems({ID})/article": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves article of a article group item.",
        "tags": [
          "Article Group Item",
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroupItems({ID})/articleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves article group of a article group item.",
        "tags": [
          "Article Group Item",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups": {
      "get": {
        "summary": "Retrieves a list of article groups.",
        "tags": [
          "Article Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "articleGroupId",
                  "articleGroupId desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "type",
                  "type desc",
                  "parentGroup_ID",
                  "parentGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article group.",
        "tags": [
          "Article Group"
        ],
        "requestBody": {
          "description": "Logical grouping of articles for promotion targeting",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single article group.",
        "tags": [
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single article group.",
        "tags": [
          "Article Group"
        ],
        "requestBody": {
          "description": "Logical grouping of articles for promotion targeting",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single article group.",
        "tags": [
          "Article Group"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups({ID})/items": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of items of a article group.",
        "tags": [
          "Article Group",
          "Article Group Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "article_ID",
                  "article_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "articleGroup_ID",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "articleGroup",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleGroupItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single item of a article group.",
        "tags": [
          "Article Group",
          "Article Group Item"
        ],
        "requestBody": {
          "description": "Assignment of an article to an article group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups({ID})/localized": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a article group.",
        "tags": [
          "Article Group",
          "Article Groups texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups({ID})/parentGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves parent group of a article group.",
        "tags": [
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved parent group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups({ID})/subGroups": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of sub groups of a article group.",
        "tags": [
          "Article Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "articleGroupId",
                  "articleGroupId desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "type",
                  "type desc",
                  "parentGroup_ID",
                  "parentGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved sub groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single sub group of a article group.",
        "tags": [
          "Article Group"
        ],
        "requestBody": {
          "description": "Logical grouping of articles for promotion targeting",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created sub group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups({ID})/texts": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a article group.",
        "tags": [
          "Article Group",
          "Article Groups texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "ID",
                  "ID desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleGroups_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a article group.",
        "tags": [
          "Article Group",
          "Article Groups texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleGroups/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Article Group"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ArticleImportJobItems": {
      "get": {
        "summary": "Retrieves a list of article import job items.",
        "tags": [
          "Import Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "job_ID",
                  "job_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "name",
                  "name desc",
                  "ean",
                  "ean desc",
                  "manufacturer",
                  "manufacturer desc",
                  "category",
                  "category desc",
                  "status",
                  "status desc",
                  "errorMessage",
                  "errorMessage desc",
                  "article_ID",
                  "article_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "job_ID",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "status",
                  "errorMessage",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "job",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article import job items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleImportJobItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleImportJobItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleImportJobItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single article import job item.",
        "tags": [
          "Import Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "job_ID",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "status",
                  "errorMessage",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "job",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article import job item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleImportJobItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleImportJobItems({ID})/article": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves article of a import item.",
        "tags": [
          "Import Item",
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleImportJobItems({ID})/job": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves job of a import item.",
        "tags": [
          "Import Item",
          "Article Import Job"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "status",
                  "totalItems",
                  "successCount",
                  "failedCount",
                  "startedAt",
                  "completedAt",
                  "tenantId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleImportJobs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleImportJobs": {
      "get": {
        "summary": "Retrieves a list of article import jobs.",
        "tags": [
          "Article Import Job"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "status",
                  "status desc",
                  "totalItems",
                  "totalItems desc",
                  "successCount",
                  "successCount desc",
                  "failedCount",
                  "failedCount desc",
                  "startedAt",
                  "startedAt desc",
                  "completedAt",
                  "completedAt desc",
                  "tenantId",
                  "tenantId desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "status",
                  "totalItems",
                  "successCount",
                  "failedCount",
                  "startedAt",
                  "completedAt",
                  "tenantId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article import jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleImportJobs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleImportJobs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleImportJobs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single article import job.",
        "tags": [
          "Article Import Job"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "status",
                  "totalItems",
                  "successCount",
                  "failedCount",
                  "startedAt",
                  "completedAt",
                  "tenantId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article import job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleImportJobs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleImportJobs({ID})/items": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of items of a article import job.",
        "tags": [
          "Article Import Job",
          "Import Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "job_ID",
                  "job_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "name",
                  "name desc",
                  "ean",
                  "ean desc",
                  "manufacturer",
                  "manufacturer desc",
                  "category",
                  "category desc",
                  "status",
                  "status desc",
                  "errorMessage",
                  "errorMessage desc",
                  "article_ID",
                  "article_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "job_ID",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "status",
                  "errorMessage",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "job",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleImportJobItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleImportJobItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleSources": {
      "get": {
        "summary": "Retrieves a list of article sources.",
        "tags": [
          "Article Sources"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article sources",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleSources",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleSources"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleSources('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single article source.",
        "tags": [
          "Article Sources"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article source",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleSources"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleSources('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a article source.",
        "tags": [
          "Article Sources",
          "Article Sources texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleSources_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ArticleSources('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a article source.",
        "tags": [
          "Article Sources",
          "Article Sources texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleSources_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleSources_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a article source.",
        "tags": [
          "Article Sources",
          "Article Sources texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleSources_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleSources_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Articles": {
      "get": {
        "summary": "Retrieves a list of articles.",
        "tags": [
          "Article"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "articleNumber",
                  "articleNumber desc",
                  "name",
                  "name desc",
                  "ean",
                  "ean desc",
                  "manufacturer",
                  "manufacturer desc",
                  "category",
                  "category desc",
                  "source",
                  "source desc",
                  "articleType",
                  "articleType desc",
                  "discountable",
                  "discountable desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved articles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Articles",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Articles"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article.",
        "tags": [
          "Article"
        ],
        "requestBody": {
          "description": "Product master data used for promotion condition matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Articles-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Articles({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single article.",
        "tags": [
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single article.",
        "tags": [
          "Article"
        ],
        "requestBody": {
          "description": "Product master data used for promotion condition matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Articles-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single article.",
        "tags": [
          "Article"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Articles({ID})/groupAssignments": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of group assignments of a article.",
        "tags": [
          "Article",
          "Article Group Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "article_ID",
                  "article_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "articleGroup_ID",
                  "article_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "articleGroup",
                  "article"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved group assignments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ArticleGroupItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single group assignment of a article.",
        "tags": [
          "Article",
          "Article Group Item"
        ],
        "requestBody": {
          "description": "Assignment of an article to an article group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created group assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Articles({ID})/localized": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a article.",
        "tags": [
          "Article",
          "Articles texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Articles({ID})/texts": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a article.",
        "tags": [
          "Article",
          "Articles texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "ID",
                  "ID desc",
                  "name",
                  "name desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Articles_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Articles_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a article.",
        "tags": [
          "Article",
          "Articles texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Articles_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Articles/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Article"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/AuditLogs": {
      "get": {
        "summary": "Retrieves a list of audit logs.",
        "tags": [
          "Audit Logs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "timestamp",
                  "timestamp desc",
                  "actor",
                  "actor desc",
                  "action",
                  "action desc",
                  "entityType",
                  "entityType desc",
                  "entityId",
                  "entityId desc",
                  "entityName",
                  "entityName desc",
                  "note",
                  "note desc",
                  "tenantId",
                  "tenantId desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "timestamp",
                  "actor",
                  "action",
                  "entityType",
                  "entityId",
                  "entityName",
                  "note",
                  "tenantId"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved audit logs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of AuditLogs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.AuditLogs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/AuditLogs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single audit log.",
        "tags": [
          "Audit Logs"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "timestamp",
                  "actor",
                  "action",
                  "entityType",
                  "entityId",
                  "entityName",
                  "note",
                  "tenantId"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved audit log",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.AuditLogs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetConsumptions": {
      "get": {
        "summary": "Retrieves a list of budget consumptions.",
        "tags": [
          "Budget Consumption"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "budget_ID",
                  "budget_ID desc",
                  "transactionId",
                  "transactionId desc",
                  "amount",
                  "amount desc",
                  "promotionId",
                  "promotionId desc",
                  "consumedAt",
                  "consumedAt desc",
                  "customerId",
                  "customerId desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "transactionId",
                  "amount",
                  "promotionId",
                  "consumedAt",
                  "customerId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget consumptions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetConsumptions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetConsumptions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetConsumptions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single budget consumption.",
        "tags": [
          "Budget Consumption"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "transactionId",
                  "amount",
                  "promotionId",
                  "consumedAt",
                  "customerId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget consumption",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetConsumptions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetConsumptions({ID})/budget": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves budget of a budget consumption.",
        "tags": [
          "Budget Consumption",
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetNotifications": {
      "get": {
        "summary": "Retrieves a list of budget notifications.",
        "tags": [
          "Budget Notification"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "budget_ID",
                  "budget_ID desc",
                  "threshold",
                  "threshold desc",
                  "notificationEmail",
                  "notificationEmail desc",
                  "triggered",
                  "triggered desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "threshold",
                  "notificationEmail",
                  "triggered",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget notifications",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetNotifications",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetNotifications"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single budget notification.",
        "tags": [
          "Budget Notification"
        ],
        "requestBody": {
          "description": "Threshold-based alert rule for budget consumption monitoring",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetNotifications-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created budget notification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetNotifications"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetNotifications({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single budget notification.",
        "tags": [
          "Budget Notification"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "threshold",
                  "notificationEmail",
                  "triggered",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget notification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetNotifications"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single budget notification.",
        "tags": [
          "Budget Notification"
        ],
        "requestBody": {
          "description": "Threshold-based alert rule for budget consumption monitoring",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetNotifications-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single budget notification.",
        "tags": [
          "Budget Notification"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetNotifications({ID})/budget": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves budget of a budget notification.",
        "tags": [
          "Budget Notification",
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetPromotions": {
      "get": {
        "summary": "Retrieves a list of budget promotions.",
        "tags": [
          "Budget Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "budget_ID",
                  "budget_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "customerCapAmount",
                  "customerCapAmount desc",
                  "customerCapCount",
                  "customerCapCount desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "budget_ID",
                  "promotion_ID",
                  "customerCapAmount",
                  "customerCapCount",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single budget promotion.",
        "tags": [
          "Budget Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a budget for spending control",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created budget promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetPromotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single budget promotion.",
        "tags": [
          "Budget Promotion Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "budget_ID",
                  "promotion_ID",
                  "customerCapAmount",
                  "customerCapCount",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single budget promotion.",
        "tags": [
          "Budget Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a budget for spending control",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetPromotions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single budget promotion.",
        "tags": [
          "Budget Promotion Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetPromotions({ID})/budget": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves budget of a budget promotion assignment.",
        "tags": [
          "Budget Promotion Assignment",
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetPromotions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a budget promotion assignment.",
        "tags": [
          "Budget Promotion Assignment",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStakeholders": {
      "get": {
        "summary": "Retrieves a list of budget stakeholders.",
        "tags": [
          "Budget Stakeholder Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "stakeholder_ID",
                  "stakeholder_ID desc",
                  "budget_ID",
                  "budget_ID desc",
                  "sharePercentage",
                  "sharePercentage desc",
                  "isPrimary",
                  "isPrimary desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "budget_ID",
                  "sharePercentage",
                  "isPrimary",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget stakeholders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetStakeholders",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single budget stakeholder.",
        "tags": [
          "Budget Stakeholder Assignment"
        ],
        "requestBody": {
          "description": "Links a stakeholder to a budget with a cost-sharing percentage",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created budget stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStakeholders({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single budget stakeholder.",
        "tags": [
          "Budget Stakeholder Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "budget_ID",
                  "sharePercentage",
                  "isPrimary",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single budget stakeholder.",
        "tags": [
          "Budget Stakeholder Assignment"
        ],
        "requestBody": {
          "description": "Links a stakeholder to a budget with a cost-sharing percentage",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single budget stakeholder.",
        "tags": [
          "Budget Stakeholder Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStakeholders({ID})/budget": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves budget of a budget stakeholder assignment.",
        "tags": [
          "Budget Stakeholder Assignment",
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStakeholders({ID})/stakeholder": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves stakeholder of a budget stakeholder assignment.",
        "tags": [
          "Budget Stakeholder Assignment",
          "Stakeholder"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStatuses": {
      "get": {
        "summary": "Retrieves a list of budget statuses.",
        "tags": [
          "Budget Statuses"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetStatuses",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetStatuses"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStatuses('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single budget status.",
        "tags": [
          "Budget Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStatuses('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a budget status.",
        "tags": [
          "Budget Statuses",
          "Budget Statuses texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BudgetStatuses('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a budget status.",
        "tags": [
          "Budget Statuses",
          "Budget Statuses texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetStatuses_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetStatuses_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a budget status.",
        "tags": [
          "Budget Statuses",
          "Budget Statuses texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetStatuses_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets": {
      "get": {
        "summary": "Retrieves a list of budgets.",
        "tags": [
          "Budget"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "tenantId",
                  "tenantId desc",
                  "totalAmount",
                  "totalAmount desc",
                  "consumedAmount",
                  "consumedAmount desc",
                  "remainingAmount",
                  "remainingAmount desc",
                  "currency_code",
                  "currency_code desc",
                  "status",
                  "status desc",
                  "validFrom",
                  "validFrom desc",
                  "validTo",
                  "validTo desc",
                  "customerCapAmount",
                  "customerCapAmount desc",
                  "customerCapCount",
                  "customerCapCount desc",
                  "stopOnExhaustion",
                  "stopOnExhaustion desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budgets",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Budgets",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Budgets"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single budget.",
        "tags": [
          "Budget"
        ],
        "requestBody": {
          "description": "Spending limit for promotions with consumption tracking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Budgets-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single budget.",
        "tags": [
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single budget.",
        "tags": [
          "Budget"
        ],
        "requestBody": {
          "description": "Spending limit for promotions with consumption tracking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Budgets-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single budget.",
        "tags": [
          "Budget"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})/PublicAPI.addPromotion": {
      "post": {
        "summary": "Link a promotion to this budget. PublicAPI-only (AdminService uses draft + composition).",
        "tags": [
          "Budget"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "parameters": [
          {
            "description": "key: ID",
            "in": "path",
            "name": "ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "01234567-89ab-cdef-0123-456789abcdef"
            }
          }
        ],
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "promotionId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Budgets({ID})/PublicAPI.removePromotion": {
      "post": {
        "summary": "Unlink a promotion from this budget. PublicAPI-only (AdminService uses draft + composition).",
        "tags": [
          "Budget"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "parameters": [
          {
            "description": "key: ID",
            "in": "path",
            "name": "ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "01234567-89ab-cdef-0123-456789abcdef"
            }
          }
        ],
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "promotionId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Budgets({ID})/consumptions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of consumptions of a budget.",
        "tags": [
          "Budget",
          "Budget Consumption"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "budget_ID",
                  "budget_ID desc",
                  "transactionId",
                  "transactionId desc",
                  "amount",
                  "amount desc",
                  "promotionId",
                  "promotionId desc",
                  "consumedAt",
                  "consumedAt desc",
                  "customerId",
                  "customerId desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "transactionId",
                  "amount",
                  "promotionId",
                  "consumedAt",
                  "customerId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved consumptions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetConsumptions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetConsumptions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})/currency": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves currency of a budget.",
        "tags": [
          "Budget",
          "Currencies"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code",
                  "symbol",
                  "minorUnit"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved currency",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})/notifications": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of notifications of a budget.",
        "tags": [
          "Budget",
          "Budget Notification"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "budget_ID",
                  "budget_ID desc",
                  "threshold",
                  "threshold desc",
                  "notificationEmail",
                  "notificationEmail desc",
                  "triggered",
                  "triggered desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "threshold",
                  "notificationEmail",
                  "triggered",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved notifications",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetNotifications",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetNotifications"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single notification of a budget.",
        "tags": [
          "Budget",
          "Budget Notification"
        ],
        "requestBody": {
          "description": "Threshold-based alert rule for budget consumption monitoring",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetNotifications-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created notification",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetNotifications"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a budget.",
        "tags": [
          "Budget",
          "Budget Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "budget_ID",
                  "budget_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "customerCapAmount",
                  "customerCapAmount desc",
                  "customerCapCount",
                  "customerCapCount desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "budget_ID",
                  "promotion_ID",
                  "customerCapAmount",
                  "customerCapCount",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion of a budget.",
        "tags": [
          "Budget",
          "Budget Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a budget for spending control",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})/stakeholders": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of stakeholders of a budget.",
        "tags": [
          "Budget",
          "Budget Stakeholder Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "stakeholder_ID",
                  "stakeholder_ID desc",
                  "budget_ID",
                  "budget_ID desc",
                  "sharePercentage",
                  "sharePercentage desc",
                  "isPrimary",
                  "isPrimary desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "budget_ID",
                  "sharePercentage",
                  "isPrimary",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetStakeholders",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single stakeholder of a budget.",
        "tags": [
          "Budget",
          "Budget Stakeholder Assignment"
        ],
        "requestBody": {
          "description": "Links a stakeholder to a budget with a cost-sharing percentage",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets({ID})/webhookSubscriptions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of webhook subscriptions of a budget.",
        "tags": [
          "Budget",
          "Webhook Subscription"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "tenantId",
                  "tenantId desc",
                  "callbackUrl",
                  "callbackUrl desc",
                  "secretHash",
                  "secretHash desc",
                  "eventFilter",
                  "eventFilter desc",
                  "active",
                  "active desc",
                  "secretEncrypted",
                  "secretEncrypted desc",
                  "maxAttempts",
                  "maxAttempts desc",
                  "backoffPolicy",
                  "backoffPolicy desc",
                  "retryIntervalMs",
                  "retryIntervalMs desc",
                  "secret",
                  "secret desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "callbackUrl",
                  "secretHash",
                  "eventFilter",
                  "active",
                  "secretEncrypted",
                  "maxAttempts",
                  "backoffPolicy",
                  "retryIntervalMs",
                  "secret",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved webhook subscriptions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of WebhookSubscriptions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single webhook subscription of a budget.",
        "tags": [
          "Budget",
          "Webhook Subscription"
        ],
        "requestBody": {
          "description": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Budgets/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Budget"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/BundleComponents": {
      "get": {
        "summary": "Retrieves a list of bundle components.",
        "tags": [
          "Bundle Component"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "minQuantity",
                  "maxQuantity",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved bundle components",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BundleComponents",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BundleComponents"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single bundle component.",
        "tags": [
          "Bundle Component"
        ],
        "requestBody": {
          "description": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BundleComponents-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created bundle component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BundleComponents"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BundleComponents({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single bundle component.",
        "tags": [
          "Bundle Component"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "minQuantity",
                  "maxQuantity",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved bundle component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BundleComponents"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single bundle component.",
        "tags": [
          "Bundle Component"
        ],
        "requestBody": {
          "description": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BundleComponents-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single bundle component.",
        "tags": [
          "Bundle Component"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/BundleComponents({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a bundle component.",
        "tags": [
          "Bundle Component",
          "Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationConfigs": {
      "get": {
        "summary": "Retrieves a list of calculation configs.",
        "tags": [
          "Calculation Configuration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "up__ID",
                  "up__ID desc",
                  "calculationMode",
                  "calculationMode desc",
                  "roundingMode",
                  "roundingMode desc",
                  "precision",
                  "precision desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "up__ID",
                  "calculationMode",
                  "roundingMode",
                  "precision"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "up_"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation configs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationConfigs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationConfigs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single calculation config.",
        "tags": [
          "Calculation Configuration"
        ],
        "requestBody": {
          "description": "New calculation config",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CalculationConfigs-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created calculation config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationConfigs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single calculation config.",
        "tags": [
          "Calculation Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "up__ID",
                  "calculationMode",
                  "roundingMode",
                  "precision"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "up_"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single calculation config.",
        "tags": [
          "Calculation Configuration"
        ],
        "requestBody": {
          "description": "New property values",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CalculationConfigs-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single calculation config.",
        "tags": [
          "Calculation Configuration"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationConfigs({ID})/up_": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves up  of a calculation configuration.",
        "tags": [
          "Calculation Configuration",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved up ",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogItems": {
      "get": {
        "summary": "Retrieves a list of calculation log items.",
        "tags": [
          "Calculation Log Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "calculationLog_ID",
                  "calculationLog_ID desc",
                  "lineReference",
                  "lineReference desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "quantity",
                  "quantity desc",
                  "originalPrice",
                  "originalPrice desc",
                  "finalPrice",
                  "finalPrice desc",
                  "totalDiscount",
                  "totalDiscount desc",
                  "appliedDiscounts",
                  "appliedDiscounts desc",
                  "resolvedTierMinQuantity",
                  "resolvedTierMinQuantity desc",
                  "discountKind",
                  "discountKind desc",
                  "isFreeItem",
                  "isFreeItem desc",
                  "freeItemPromotionId",
                  "freeItemPromotionId desc",
                  "grantReference",
                  "grantReference desc",
                  "grantedQuantity",
                  "grantedQuantity desc",
                  "giveAwayValue",
                  "giveAwayValue desc",
                  "priceSource",
                  "priceSource desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "calculationLog_ID",
                  "lineReference",
                  "articleNumber",
                  "ean",
                  "quantity",
                  "originalPrice",
                  "finalPrice",
                  "totalDiscount",
                  "appliedDiscounts",
                  "resolvedTierMinQuantity",
                  "discountKind",
                  "isFreeItem",
                  "freeItemPromotionId",
                  "grantReference",
                  "grantedQuantity",
                  "giveAwayValue",
                  "priceSource"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "calculationLog"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single calculation log item.",
        "tags": [
          "Calculation Log Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "calculationLog_ID",
                  "lineReference",
                  "articleNumber",
                  "ean",
                  "quantity",
                  "originalPrice",
                  "finalPrice",
                  "totalDiscount",
                  "appliedDiscounts",
                  "resolvedTierMinQuantity",
                  "discountKind",
                  "isFreeItem",
                  "freeItemPromotionId",
                  "grantReference",
                  "grantedQuantity",
                  "giveAwayValue",
                  "priceSource"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "calculationLog"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogItems({ID})/calculationLog": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves calculation log of a calculation log item.",
        "tags": [
          "Calculation Log Item",
          "Calculation Log"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "transactionId",
                  "transactionCounter",
                  "confirmed",
                  "kind",
                  "headerReference",
                  "sideEffectsStatus",
                  "receiptId",
                  "tenantId",
                  "customerId",
                  "posGroupId",
                  "posGroupCode",
                  "posGroupName",
                  "status",
                  "confirmedAt",
                  "calculatedAt",
                  "isSimulation",
                  "appliedPromotions",
                  "request",
                  "response",
                  "totalDiscount",
                  "basketTotal",
                  "couponsRedeemed",
                  "budgetsConsumed",
                  "retentionDate"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogPromotions": {
      "get": {
        "summary": "Retrieves a list of calculation log promotions.",
        "tags": [
          "Calculation Log Promotion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "calculationLog_ID",
                  "calculationLog_ID desc",
                  "promotionId",
                  "promotionId desc",
                  "promotionName",
                  "promotionName desc",
                  "promotionType",
                  "promotionType desc",
                  "totalDiscount",
                  "totalDiscount desc",
                  "couponCode",
                  "couponCode desc",
                  "triggeredByCoupon",
                  "triggeredByCoupon desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "calculationLog_ID",
                  "promotionId",
                  "promotionName",
                  "promotionType",
                  "totalDiscount",
                  "couponCode",
                  "triggeredByCoupon"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "calculationLog"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogPromotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single calculation log promotion.",
        "tags": [
          "Calculation Log Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "calculationLog_ID",
                  "promotionId",
                  "promotionName",
                  "promotionType",
                  "totalDiscount",
                  "couponCode",
                  "triggeredByCoupon"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "calculationLog"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogPromotions({ID})/calculationLog": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves calculation log of a calculation log promotion.",
        "tags": [
          "Calculation Log Promotion",
          "Calculation Log"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "transactionId",
                  "transactionCounter",
                  "confirmed",
                  "kind",
                  "headerReference",
                  "sideEffectsStatus",
                  "receiptId",
                  "tenantId",
                  "customerId",
                  "posGroupId",
                  "posGroupCode",
                  "posGroupName",
                  "status",
                  "confirmedAt",
                  "calculatedAt",
                  "isSimulation",
                  "appliedPromotions",
                  "request",
                  "response",
                  "totalDiscount",
                  "basketTotal",
                  "couponsRedeemed",
                  "budgetsConsumed",
                  "retentionDate"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogStatuses": {
      "get": {
        "summary": "Retrieves a list of calculation log statuses.",
        "tags": [
          "Calculation Log Statuses"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogStatuses",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogStatuses('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single calculation log status.",
        "tags": [
          "Calculation Log Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogStatuses('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a calculation log status.",
        "tags": [
          "Calculation Log Statuses",
          "Calculation Log Statuses texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogStatuses('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a calculation log status.",
        "tags": [
          "Calculation Log Statuses",
          "Calculation Log Statuses texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogStatuses_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a calculation log status.",
        "tags": [
          "Calculation Log Statuses",
          "Calculation Log Statuses texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogs": {
      "get": {
        "summary": "Retrieves a list of calculation logs.",
        "tags": [
          "Calculation Log"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "transactionId",
                  "transactionId desc",
                  "transactionCounter",
                  "transactionCounter desc",
                  "confirmed",
                  "confirmed desc",
                  "kind",
                  "kind desc",
                  "headerReference",
                  "headerReference desc",
                  "sideEffectsStatus",
                  "sideEffectsStatus desc",
                  "receiptId",
                  "receiptId desc",
                  "tenantId",
                  "tenantId desc",
                  "customerId",
                  "customerId desc",
                  "posGroupId",
                  "posGroupId desc",
                  "posGroupCode",
                  "posGroupCode desc",
                  "posGroupName",
                  "posGroupName desc",
                  "status",
                  "status desc",
                  "confirmedAt",
                  "confirmedAt desc",
                  "calculatedAt",
                  "calculatedAt desc",
                  "isSimulation",
                  "isSimulation desc",
                  "appliedPromotions",
                  "appliedPromotions desc",
                  "request",
                  "request desc",
                  "response",
                  "response desc",
                  "totalDiscount",
                  "totalDiscount desc",
                  "basketTotal",
                  "basketTotal desc",
                  "couponsRedeemed",
                  "couponsRedeemed desc",
                  "budgetsConsumed",
                  "budgetsConsumed desc",
                  "retentionDate",
                  "retentionDate desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "transactionId",
                  "transactionCounter",
                  "confirmed",
                  "kind",
                  "headerReference",
                  "sideEffectsStatus",
                  "receiptId",
                  "tenantId",
                  "customerId",
                  "posGroupId",
                  "posGroupCode",
                  "posGroupName",
                  "status",
                  "confirmedAt",
                  "calculatedAt",
                  "isSimulation",
                  "appliedPromotions",
                  "request",
                  "response",
                  "totalDiscount",
                  "basketTotal",
                  "couponsRedeemed",
                  "budgetsConsumed",
                  "retentionDate"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation logs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single calculation log.",
        "tags": [
          "Calculation Log"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "transactionId",
                  "transactionCounter",
                  "confirmed",
                  "kind",
                  "headerReference",
                  "sideEffectsStatus",
                  "receiptId",
                  "tenantId",
                  "customerId",
                  "posGroupId",
                  "posGroupCode",
                  "posGroupName",
                  "status",
                  "confirmedAt",
                  "calculatedAt",
                  "isSimulation",
                  "appliedPromotions",
                  "request",
                  "response",
                  "totalDiscount",
                  "basketTotal",
                  "couponsRedeemed",
                  "budgetsConsumed",
                  "retentionDate"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "items",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation log",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationLogs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogs({ID})/items": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of items of a calculation log.",
        "tags": [
          "Calculation Log",
          "Calculation Log Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "calculationLog_ID",
                  "calculationLog_ID desc",
                  "lineReference",
                  "lineReference desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "quantity",
                  "quantity desc",
                  "originalPrice",
                  "originalPrice desc",
                  "finalPrice",
                  "finalPrice desc",
                  "totalDiscount",
                  "totalDiscount desc",
                  "appliedDiscounts",
                  "appliedDiscounts desc",
                  "resolvedTierMinQuantity",
                  "resolvedTierMinQuantity desc",
                  "discountKind",
                  "discountKind desc",
                  "isFreeItem",
                  "isFreeItem desc",
                  "freeItemPromotionId",
                  "freeItemPromotionId desc",
                  "grantReference",
                  "grantReference desc",
                  "grantedQuantity",
                  "grantedQuantity desc",
                  "giveAwayValue",
                  "giveAwayValue desc",
                  "priceSource",
                  "priceSource desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "calculationLog_ID",
                  "lineReference",
                  "articleNumber",
                  "ean",
                  "quantity",
                  "originalPrice",
                  "finalPrice",
                  "totalDiscount",
                  "appliedDiscounts",
                  "resolvedTierMinQuantity",
                  "discountKind",
                  "isFreeItem",
                  "freeItemPromotionId",
                  "grantReference",
                  "grantedQuantity",
                  "giveAwayValue",
                  "priceSource"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "calculationLog"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationLogs({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a calculation log.",
        "tags": [
          "Calculation Log",
          "Calculation Log Promotion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "calculationLog_ID",
                  "calculationLog_ID desc",
                  "promotionId",
                  "promotionId desc",
                  "promotionName",
                  "promotionName desc",
                  "promotionType",
                  "promotionType desc",
                  "totalDiscount",
                  "totalDiscount desc",
                  "couponCode",
                  "couponCode desc",
                  "triggeredByCoupon",
                  "triggeredByCoupon desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "calculationLog_ID",
                  "promotionId",
                  "promotionName",
                  "promotionType",
                  "totalDiscount",
                  "couponCode",
                  "triggeredByCoupon"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "calculationLog"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationLogPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationLogPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationModes": {
      "get": {
        "summary": "Retrieves a list of calculation modes.",
        "tags": [
          "Calculation Modes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation modes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationModes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationModes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationModes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single calculation mode.",
        "tags": [
          "Calculation Modes"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation mode",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationModes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationModes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a calculation mode.",
        "tags": [
          "Calculation Modes",
          "Calculation Modes texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CalculationModes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a calculation mode.",
        "tags": [
          "Calculation Modes",
          "Calculation Modes texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CalculationModes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CalculationModes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a calculation mode.",
        "tags": [
          "Calculation Modes",
          "Calculation Modes texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CalculationModes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignPosGroups": {
      "get": {
        "summary": "Retrieves a list of campaign pos groups.",
        "tags": [
          "Campaign POS Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "campaign_ID",
                  "campaign_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "campaign_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "campaign",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CampaignPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single campaign pos group.",
        "tags": [
          "Campaign POS Group"
        ],
        "requestBody": {
          "description": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created campaign pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignPosGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single campaign pos group.",
        "tags": [
          "Campaign POS Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "campaign_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "campaign",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single campaign pos group.",
        "tags": [
          "Campaign POS Group"
        ],
        "requestBody": {
          "description": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single campaign pos group.",
        "tags": [
          "Campaign POS Group"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignPosGroups({ID})/campaign": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves campaign of a campaign POS group.",
        "tags": [
          "Campaign POS Group",
          "Campaign"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "startAt",
                  "endAt",
                  "status_code",
                  "ownerStakeholder_ID",
                  "primaryContact_ID",
                  "notes",
                  "mergePromotionPosGroups",
                  "locked",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "status",
                  "ownerStakeholder",
                  "primaryContact",
                  "posGroups",
                  "promotions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Campaigns"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignPosGroups({ID})/posGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves pos group of a campaign POS group.",
        "tags": [
          "Campaign POS Group",
          "POS Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "posGroupCode",
                  "name",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignStatuses": {
      "get": {
        "summary": "Retrieves a list of campaign statuses.",
        "tags": [
          "Campaign Statuses"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CampaignStatuses",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CampaignStatuses"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignStatuses('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single campaign status.",
        "tags": [
          "Campaign Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignStatuses('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a campaign status.",
        "tags": [
          "Campaign Statuses",
          "Campaign Statuses texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CampaignStatuses('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a campaign status.",
        "tags": [
          "Campaign Statuses",
          "Campaign Statuses texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CampaignStatuses_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CampaignStatuses_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a campaign status.",
        "tags": [
          "Campaign Statuses",
          "Campaign Statuses texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CampaignStatuses_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns": {
      "get": {
        "summary": "Retrieves a list of campaigns.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "code",
                  "code desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "startAt",
                  "startAt desc",
                  "endAt",
                  "endAt desc",
                  "status_code",
                  "status_code desc",
                  "ownerStakeholder_ID",
                  "ownerStakeholder_ID desc",
                  "primaryContact_ID",
                  "primaryContact_ID desc",
                  "notes",
                  "notes desc",
                  "mergePromotionPosGroups",
                  "mergePromotionPosGroups desc",
                  "locked",
                  "locked desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "startAt",
                  "endAt",
                  "status_code",
                  "ownerStakeholder_ID",
                  "primaryContact_ID",
                  "notes",
                  "mergePromotionPosGroups",
                  "locked",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "status",
                  "ownerStakeholder",
                  "primaryContact",
                  "posGroups",
                  "promotions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaigns",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Campaigns",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Campaigns"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single campaign.",
        "tags": [
          "Campaign"
        ],
        "requestBody": {
          "description": "Container for related promotions (e.g. Easter 2026, BBQ Summer)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Campaigns-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Campaigns"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single campaign.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "startAt",
                  "endAt",
                  "status_code",
                  "ownerStakeholder_ID",
                  "primaryContact_ID",
                  "notes",
                  "mergePromotionPosGroups",
                  "locked",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "status",
                  "ownerStakeholder",
                  "primaryContact",
                  "posGroups",
                  "promotions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Campaigns"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single campaign.",
        "tags": [
          "Campaign"
        ],
        "requestBody": {
          "description": "Container for related promotions (e.g. Easter 2026, BBQ Summer)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Campaigns-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single campaign.",
        "tags": [
          "Campaign"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/PublicAPI.addPromotions": {
      "post": {
        "summary": "Link one or more promotions to this campaign (sets campaign_ID; idempotent; cross-tenant picks rejected).",
        "tags": [
          "Campaign"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.Campaigns"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "parameters": [
          {
            "description": "key: ID",
            "in": "path",
            "name": "ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "01234567-89ab-cdef-0123-456789abcdef"
            }
          }
        ],
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "promotionIds": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid",
                      "example": "01234567-89ab-cdef-0123-456789abcdef",
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Campaigns({ID})/PublicAPI.exportICS": {
      "get": {
        "summary": "Export this campaign as an RFC 5545 (iCalendar) VEVENT string.",
        "tags": [
          "Campaign"
        ],
        "parameters": [
          {
            "description": "key: ID",
            "in": "path",
            "name": "ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "01234567-89ab-cdef-0123-456789abcdef"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/PublicAPI.removePromotion": {
      "post": {
        "summary": "Unlink a single promotion from this campaign (clears campaign_ID; idempotent).",
        "tags": [
          "Campaign"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.Campaigns"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "parameters": [
          {
            "description": "key: ID",
            "in": "path",
            "name": "ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "01234567-89ab-cdef-0123-456789abcdef"
            }
          }
        ],
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "promotionId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Campaigns({ID})/localized": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a campaign.",
        "tags": [
          "Campaign",
          "Campaigns texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Campaigns_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/ownerStakeholder": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves owner stakeholder of a campaign.",
        "tags": [
          "Campaign",
          "Stakeholder"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved owner stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/posGroups": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of pos groups of a campaign.",
        "tags": [
          "Campaign",
          "Campaign POS Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "campaign_ID",
                  "campaign_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "campaign_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "campaign",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CampaignPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single pos group of a campaign.",
        "tags": [
          "Campaign",
          "Campaign POS Group"
        ],
        "requestBody": {
          "description": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/primaryContact": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves primary contact of a campaign.",
        "tags": [
          "Campaign",
          "Stakeholder"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved primary contact",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a campaign.",
        "tags": [
          "Campaign",
          "Promotion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "status",
                  "status desc",
                  "type",
                  "type desc",
                  "exclusivityLevel",
                  "exclusivityLevel desc",
                  "validFrom",
                  "validFrom desc",
                  "validTo",
                  "validTo desc",
                  "happyHourStart",
                  "happyHourStart desc",
                  "happyHourEnd",
                  "happyHourEnd desc",
                  "daysOfWeek",
                  "daysOfWeek desc",
                  "tenantId",
                  "tenantId desc",
                  "campaign_ID",
                  "campaign_ID desc",
                  "isExperiment",
                  "isExperiment desc",
                  "controlGroupId",
                  "controlGroupId desc",
                  "experimentGroupId",
                  "experimentGroupId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Promotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Promotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion of a campaign.",
        "tags": [
          "Campaign",
          "Promotion"
        ],
        "requestBody": {
          "description": "Core promotion definition with validity, type and calculation settings",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Promotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/status": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves status of a campaign.",
        "tags": [
          "Campaign",
          "Campaign Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CampaignStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Campaigns({ID})/texts": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a campaign.",
        "tags": [
          "Campaign",
          "Campaigns texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "ID",
                  "ID desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Campaigns_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Campaigns_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a campaign.",
        "tags": [
          "Campaign",
          "Campaigns texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Campaigns_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Campaigns_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ComparisonOperators": {
      "get": {
        "summary": "Retrieves a list of comparison operators.",
        "tags": [
          "Comparison Operators"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved comparison operators",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ComparisonOperators",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ComparisonOperators"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ComparisonOperators('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single comparison operator.",
        "tags": [
          "Comparison Operators"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved comparison operator",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ComparisonOperators"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ComparisonOperators('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a comparison operator.",
        "tags": [
          "Comparison Operators",
          "Comparison Operators texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ComparisonOperators_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ComparisonOperators('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a comparison operator.",
        "tags": [
          "Comparison Operators",
          "Comparison Operators texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ComparisonOperators_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ComparisonOperators_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a comparison operator.",
        "tags": [
          "Comparison Operators",
          "Comparison Operators texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ComparisonOperators_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ComparisonOperators_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionArticleListItems": {
      "get": {
        "summary": "Retrieves a list of condition article list items.",
        "tags": [
          "Condition Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single condition article list item.",
        "tags": [
          "Condition Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in a condition-level article list for eligibility matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created condition article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionArticleListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single condition article list item.",
        "tags": [
          "Condition Article List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single condition article list item.",
        "tags": [
          "Condition Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in a condition-level article list for eligibility matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single condition article list item.",
        "tags": [
          "Condition Article List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionArticleListItems({ID})/condition": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves condition of a condition article list item.",
        "tags": [
          "Condition Article List Item",
          "Condition"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency_code",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "parameters",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "currency",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Conditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionTypes": {
      "get": {
        "summary": "Retrieves a list of condition types.",
        "tags": [
          "Condition Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single condition type.",
        "tags": [
          "Condition Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a condition type.",
        "tags": [
          "Condition Types",
          "Condition Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a condition type.",
        "tags": [
          "Condition Types",
          "Condition Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a condition type.",
        "tags": [
          "Condition Types",
          "Condition Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueCategories": {
      "get": {
        "summary": "Retrieves a list of condition value categories.",
        "tags": [
          "Condition Value Categories"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition value categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionValueCategories",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueCategories('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single condition value category.",
        "tags": [
          "Condition Value Categories"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition value category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueCategories('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a condition value category.",
        "tags": [
          "Condition Value Categories",
          "Condition Value Categories texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueCategories('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a condition value category.",
        "tags": [
          "Condition Value Categories",
          "Condition Value Categories texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionValueCategories_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a condition value category.",
        "tags": [
          "Condition Value Categories",
          "Condition Value Categories texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueListItems": {
      "get": {
        "summary": "Retrieves a list of condition value list items.",
        "tags": [
          "Condition Value List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "category",
                  "category desc",
                  "value",
                  "value desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "category",
                  "value",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition value list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionValueListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single condition value list item.",
        "tags": [
          "Condition Value List Item"
        ],
        "requestBody": {
          "description": "Value entry in a condition-level value list for eligibility matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created condition value list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single condition value list item.",
        "tags": [
          "Condition Value List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "category",
                  "value",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition value list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single condition value list item.",
        "tags": [
          "Condition Value List Item"
        ],
        "requestBody": {
          "description": "Value entry in a condition-level value list for eligibility matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single condition value list item.",
        "tags": [
          "Condition Value List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ConditionValueListItems({ID})/condition": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves condition of a condition value list item.",
        "tags": [
          "Condition Value List Item",
          "Condition"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency_code",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "parameters",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "currency",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Conditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions": {
      "get": {
        "summary": "Retrieves a list of conditions.",
        "tags": [
          "Condition"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "type",
                  "type desc",
                  "logicalConnector",
                  "logicalConnector desc",
                  "sortOrder",
                  "sortOrder desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "quantityUom",
                  "quantityUom desc",
                  "minAmount",
                  "minAmount desc",
                  "maxAmount",
                  "maxAmount desc",
                  "currency_code",
                  "currency_code desc",
                  "fieldName",
                  "fieldName desc",
                  "expectedValue",
                  "expectedValue desc",
                  "comparisonOperator",
                  "comparisonOperator desc",
                  "minPoints",
                  "minPoints desc",
                  "requireReasonCode",
                  "requireReasonCode desc",
                  "parameters",
                  "parameters desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency_code",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "parameters",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "currency",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved conditions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Conditions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Conditions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single condition.",
        "tags": [
          "Condition"
        ],
        "requestBody": {
          "description": "Individual condition for promotion eligibility evaluation",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Conditions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Conditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single condition.",
        "tags": [
          "Condition"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency_code",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "parameters",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "currency",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Conditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single condition.",
        "tags": [
          "Condition"
        ],
        "requestBody": {
          "description": "Individual condition for promotion eligibility evaluation",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Conditions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single condition.",
        "tags": [
          "Condition"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})/articleListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of article list items of a condition.",
        "tags": [
          "Condition",
          "Condition Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article list item of a condition.",
        "tags": [
          "Condition",
          "Condition Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in a condition-level article list for eligibility matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})/conditionTypeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves condition type text of a condition.",
        "tags": [
          "Condition",
          "Condition Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})/currency": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves currency of a condition.",
        "tags": [
          "Condition",
          "Currencies"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code",
                  "symbol",
                  "minorUnit"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved currency",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})/logicalConnectorText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves logical connector text of a condition.",
        "tags": [
          "Condition",
          "Logical Connectors"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved logical connector text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LogicalConnectors"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a condition.",
        "tags": [
          "Condition",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions({ID})/valueListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of value list items of a condition.",
        "tags": [
          "Condition",
          "Condition Value List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "category",
                  "category desc",
                  "value",
                  "value desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "category",
                  "value",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved value list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ConditionValueListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single value list item of a condition.",
        "tags": [
          "Condition",
          "Condition Value List Item"
        ],
        "requestBody": {
          "description": "Value entry in a condition-level value list for eligibility matching",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created value list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Conditions/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Condition"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ControlPosGroups": {
      "get": {
        "summary": "Retrieves a list of control pos groups.",
        "tags": [
          "Control POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "config_ID",
                  "config_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "config_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "config",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved control pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ControlPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ControlPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single control pos group.",
        "tags": [
          "Control POS Group Assignment"
        ],
        "requestBody": {
          "description": "POS group assigned to the control arm of a PromotionPilotConfig",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ControlPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created control pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ControlPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ControlPosGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single control pos group.",
        "tags": [
          "Control POS Group Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "config_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "config",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved control pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ControlPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single control pos group.",
        "tags": [
          "Control POS Group Assignment"
        ],
        "requestBody": {
          "description": "POS group assigned to the control arm of a PromotionPilotConfig",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ControlPosGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single control pos group.",
        "tags": [
          "Control POS Group Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ControlPosGroups({ID})/config": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves config of a control POS group assignment.",
        "tags": [
          "Control POS Group Assignment",
          "Promotion Pilot Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "pilotStartAt",
                  "pilotEndAt",
                  "autoPromote",
                  "autoPromoteThreshold",
                  "pilotShare",
                  "controlGroupSize",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "pilotPosGroups",
                  "controlPosGroups"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ControlPosGroups({ID})/posGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves pos group of a control POS group assignment.",
        "tags": [
          "Control POS Group Assignment",
          "POS Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "posGroupCode",
                  "name",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeBatches": {
      "get": {
        "summary": "Retrieves a list of coupon code batches.",
        "tags": [
          "Coupon Code Batch"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "codeConfiguration_ID",
                  "codeConfiguration_ID desc",
                  "numberOfCodes",
                  "numberOfCodes desc",
                  "status",
                  "status desc",
                  "async",
                  "async desc",
                  "progress",
                  "progress desc",
                  "generatedCount",
                  "generatedCount desc",
                  "failedCount",
                  "failedCount desc",
                  "refillSchedule_ID",
                  "refillSchedule_ID desc",
                  "completedAt",
                  "completedAt desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "codeConfiguration_ID",
                  "numberOfCodes",
                  "status",
                  "async",
                  "progress",
                  "generatedCount",
                  "failedCount",
                  "refillSchedule_ID",
                  "completedAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "codeConfiguration",
                  "refillSchedule"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code batches",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeBatches",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single coupon code batch.",
        "tags": [
          "Coupon Code Batch"
        ],
        "requestBody": {
          "description": "Batch generation request with progress tracking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created coupon code batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeBatches({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon code batch.",
        "tags": [
          "Coupon Code Batch"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "codeConfiguration_ID",
                  "numberOfCodes",
                  "status",
                  "async",
                  "progress",
                  "generatedCount",
                  "failedCount",
                  "refillSchedule_ID",
                  "completedAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "codeConfiguration",
                  "refillSchedule"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single coupon code batch.",
        "tags": [
          "Coupon Code Batch"
        ],
        "requestBody": {
          "description": "Batch generation request with progress tracking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single coupon code batch.",
        "tags": [
          "Coupon Code Batch"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeBatches({ID})/codeConfiguration": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves code configuration of a coupon code batch.",
        "tags": [
          "Coupon Code Batch",
          "Coupon Code Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "customCharset",
                  "includeUppercase",
                  "includeLowercase",
                  "includeDigits",
                  "includeSymbols",
                  "symbolSet",
                  "excludeAmbiguous",
                  "codeLength",
                  "prefix",
                  "suffix",
                  "separator",
                  "refillIntervalMinutes",
                  "status",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved code configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeBatches({ID})/couponType": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves coupon type of a coupon code batch.",
        "tags": [
          "Coupon Code Batch",
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeBatches({ID})/refillSchedule": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves refill schedule of a coupon code batch.",
        "tags": [
          "Coupon Code Batch",
          "Coupon Refill Schedule"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "codeConfiguration_ID",
                  "numberOfCodes",
                  "refillThreshold",
                  "enabled",
                  "lastCheckAt",
                  "lastRefillAt",
                  "lockOwner",
                  "lockExpiresAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "codeConfiguration",
                  "batches"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved refill schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeConfigurations": {
      "get": {
        "summary": "Retrieves a list of coupon code configurations.",
        "tags": [
          "Coupon Code Configuration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "customCharset",
                  "customCharset desc",
                  "includeUppercase",
                  "includeUppercase desc",
                  "includeLowercase",
                  "includeLowercase desc",
                  "includeDigits",
                  "includeDigits desc",
                  "includeSymbols",
                  "includeSymbols desc",
                  "symbolSet",
                  "symbolSet desc",
                  "excludeAmbiguous",
                  "excludeAmbiguous desc",
                  "codeLength",
                  "codeLength desc",
                  "prefix",
                  "prefix desc",
                  "suffix",
                  "suffix desc",
                  "separator",
                  "separator desc",
                  "refillIntervalMinutes",
                  "refillIntervalMinutes desc",
                  "status",
                  "status desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "customCharset",
                  "includeUppercase",
                  "includeLowercase",
                  "includeDigits",
                  "includeSymbols",
                  "symbolSet",
                  "excludeAmbiguous",
                  "codeLength",
                  "prefix",
                  "suffix",
                  "separator",
                  "refillIntervalMinutes",
                  "status",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code configurations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeConfigurations",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single coupon code configuration.",
        "tags": [
          "Coupon Code Configuration"
        ],
        "requestBody": {
          "description": "Reusable template defining how coupon codes are generated",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created coupon code configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeConfigurations({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon code configuration.",
        "tags": [
          "Coupon Code Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "customCharset",
                  "includeUppercase",
                  "includeLowercase",
                  "includeDigits",
                  "includeSymbols",
                  "symbolSet",
                  "excludeAmbiguous",
                  "codeLength",
                  "prefix",
                  "suffix",
                  "separator",
                  "refillIntervalMinutes",
                  "status",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single coupon code configuration.",
        "tags": [
          "Coupon Code Configuration"
        ],
        "requestBody": {
          "description": "Reusable template defining how coupon codes are generated",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single coupon code configuration.",
        "tags": [
          "Coupon Code Configuration"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeConfigurations/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Coupon Code Configuration"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/CouponCodeStatuses": {
      "get": {
        "summary": "Retrieves a list of coupon code statuses.",
        "tags": [
          "Coupon Code Statuses"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeStatuses",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeStatuses('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon code status.",
        "tags": [
          "Coupon Code Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeStatuses('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a coupon code status.",
        "tags": [
          "Coupon Code Statuses",
          "Coupon Code Statuses texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeStatuses('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a coupon code status.",
        "tags": [
          "Coupon Code Statuses",
          "Coupon Code Statuses texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeStatuses_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a coupon code status.",
        "tags": [
          "Coupon Code Statuses",
          "Coupon Code Statuses texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeTypes": {
      "get": {
        "summary": "Retrieves a list of coupon code types.",
        "tags": [
          "Coupon Code Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon code type.",
        "tags": [
          "Coupon Code Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a coupon code type.",
        "tags": [
          "Coupon Code Types",
          "Coupon Code Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodeTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a coupon code type.",
        "tags": [
          "Coupon Code Types",
          "Coupon Code Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a coupon code type.",
        "tags": [
          "Coupon Code Types",
          "Coupon Code Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodes": {
      "get": {
        "summary": "Retrieves a list of coupon codes.",
        "tags": [
          "Coupon Code"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "status",
                  "status desc",
                  "source",
                  "source desc",
                  "reservationRef",
                  "reservationRef desc",
                  "customerId",
                  "customerId desc",
                  "issuedAt",
                  "issuedAt desc",
                  "issuingPromotionId",
                  "issuingPromotionId desc",
                  "issuingTransactionId",
                  "issuingTransactionId desc",
                  "issuanceChannel",
                  "issuanceChannel desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "status",
                  "source",
                  "reservationRef",
                  "customerId",
                  "issuedAt",
                  "issuingPromotionId",
                  "issuingTransactionId",
                  "issuanceChannel",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "redemptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon codes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodes({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon code.",
        "tags": [
          "Coupon Code"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "status",
                  "source",
                  "reservationRef",
                  "customerId",
                  "issuedAt",
                  "issuingPromotionId",
                  "issuingTransactionId",
                  "issuanceChannel",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "redemptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single coupon code.",
        "tags": [
          "Coupon Code"
        ],
        "requestBody": {
          "description": "Individual coupon code instance with lifecycle tracking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodes-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodes({ID})/couponType": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves coupon type of a coupon code.",
        "tags": [
          "Coupon Code",
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodes({ID})/redemptions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of redemptions of a coupon code.",
        "tags": [
          "Coupon Code",
          "Redemption Log"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponCode_ID",
                  "couponCode_ID desc",
                  "transactionId",
                  "transactionId desc",
                  "redeemedAt",
                  "redeemedAt desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponCode_ID",
                  "transactionId",
                  "redeemedAt"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponCode"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved redemptions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of RedemptionLogs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.RedemptionLogs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponCodes/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Coupon Code"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/CouponRefillSchedules": {
      "get": {
        "summary": "Retrieves a list of coupon refill schedules.",
        "tags": [
          "Coupon Refill Schedule"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "codeConfiguration_ID",
                  "codeConfiguration_ID desc",
                  "numberOfCodes",
                  "numberOfCodes desc",
                  "refillThreshold",
                  "refillThreshold desc",
                  "enabled",
                  "enabled desc",
                  "lastCheckAt",
                  "lastCheckAt desc",
                  "lastRefillAt",
                  "lastRefillAt desc",
                  "lockOwner",
                  "lockOwner desc",
                  "lockExpiresAt",
                  "lockExpiresAt desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "codeConfiguration_ID",
                  "numberOfCodes",
                  "refillThreshold",
                  "enabled",
                  "lastCheckAt",
                  "lastRefillAt",
                  "lockOwner",
                  "lockExpiresAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "codeConfiguration",
                  "batches"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon refill schedules",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponRefillSchedules",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule"
        ],
        "requestBody": {
          "description": "Auto-refill configuration with distributed locking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created coupon refill schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponRefillSchedules({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "codeConfiguration_ID",
                  "numberOfCodes",
                  "refillThreshold",
                  "enabled",
                  "lastCheckAt",
                  "lastRefillAt",
                  "lockOwner",
                  "lockExpiresAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "codeConfiguration",
                  "batches"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon refill schedule",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule"
        ],
        "requestBody": {
          "description": "Auto-refill configuration with distributed locking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponRefillSchedules({ID})/batches": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of batches of a coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule",
          "Coupon Code Batch"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "codeConfiguration_ID",
                  "codeConfiguration_ID desc",
                  "numberOfCodes",
                  "numberOfCodes desc",
                  "status",
                  "status desc",
                  "async",
                  "async desc",
                  "progress",
                  "progress desc",
                  "generatedCount",
                  "generatedCount desc",
                  "failedCount",
                  "failedCount desc",
                  "refillSchedule_ID",
                  "refillSchedule_ID desc",
                  "completedAt",
                  "completedAt desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "codeConfiguration_ID",
                  "numberOfCodes",
                  "status",
                  "async",
                  "progress",
                  "generatedCount",
                  "failedCount",
                  "refillSchedule_ID",
                  "completedAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "codeConfiguration",
                  "refillSchedule"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved batches",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodeBatches",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single batch of a coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule",
          "Coupon Code Batch"
        ],
        "requestBody": {
          "description": "Batch generation request with progress tracking",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created batch",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponRefillSchedules({ID})/codeConfiguration": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves code configuration of a coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule",
          "Coupon Code Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "customCharset",
                  "includeUppercase",
                  "includeLowercase",
                  "includeDigits",
                  "includeSymbols",
                  "symbolSet",
                  "excludeAmbiguous",
                  "codeLength",
                  "prefix",
                  "suffix",
                  "separator",
                  "refillIntervalMinutes",
                  "status",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved code configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponRefillSchedules({ID})/couponType": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves coupon type of a coupon refill schedule.",
        "tags": [
          "Coupon Refill Schedule",
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponStatuses": {
      "get": {
        "summary": "Retrieves a list of coupon statuses.",
        "tags": [
          "Coupon Statuses"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponStatuses",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponStatuses"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponStatuses('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon status.",
        "tags": [
          "Coupon Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponStatuses('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a coupon status.",
        "tags": [
          "Coupon Statuses",
          "Coupon Statuses texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponStatuses('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a coupon status.",
        "tags": [
          "Coupon Statuses",
          "Coupon Statuses texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponStatuses_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponStatuses_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a coupon status.",
        "tags": [
          "Coupon Statuses",
          "Coupon Statuses texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponStatuses_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypePromotions": {
      "get": {
        "summary": "Retrieves a list of coupon type promotions.",
        "tags": [
          "Coupon Type Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "couponType_ID",
                  "promotion_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponTypePromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single coupon type promotion.",
        "tags": [
          "Coupon Type Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a coupon type for activation on redemption",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created coupon type promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypePromotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon type promotion.",
        "tags": [
          "Coupon Type Promotion Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "couponType_ID",
                  "promotion_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single coupon type promotion.",
        "tags": [
          "Coupon Type Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a coupon type for activation on redemption",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single coupon type promotion.",
        "tags": [
          "Coupon Type Promotion Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypePromotions({ID})/couponType": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves coupon type of a coupon type promotion assignment.",
        "tags": [
          "Coupon Type Promotion Assignment",
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypePromotions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a coupon type promotion assignment.",
        "tags": [
          "Coupon Type Promotion Assignment",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes": {
      "get": {
        "summary": "Retrieves a list of coupon types.",
        "tags": [
          "Coupon Type"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "type",
                  "type desc",
                  "status",
                  "status desc",
                  "prefix",
                  "prefix desc",
                  "codeLength",
                  "codeLength desc",
                  "maxRedemptions",
                  "maxRedemptions desc",
                  "maxRedemptionsPerCustomer",
                  "maxRedemptionsPerCustomer desc",
                  "validFrom",
                  "validFrom desc",
                  "validTo",
                  "validTo desc",
                  "isStackable",
                  "isStackable desc",
                  "isExclusive",
                  "isExclusive desc",
                  "codeConfiguration_ID",
                  "codeConfiguration_ID desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single coupon type.",
        "tags": [
          "Coupon Type"
        ],
        "requestBody": {
          "description": "Template defining coupon generation rules, redemption limits, and validity",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single coupon type.",
        "tags": [
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single coupon type.",
        "tags": [
          "Coupon Type"
        ],
        "requestBody": {
          "description": "Template defining coupon generation rules, redemption limits, and validity",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single coupon type.",
        "tags": [
          "Coupon Type"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes({ID})/codeConfiguration": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves code configuration of a coupon type.",
        "tags": [
          "Coupon Type",
          "Coupon Code Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "customCharset",
                  "includeUppercase",
                  "includeLowercase",
                  "includeDigits",
                  "includeSymbols",
                  "symbolSet",
                  "excludeAmbiguous",
                  "codeLength",
                  "prefix",
                  "suffix",
                  "separator",
                  "refillIntervalMinutes",
                  "status",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved code configuration",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes({ID})/codes": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of codes of a coupon type.",
        "tags": [
          "Coupon Type",
          "Coupon Code"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "status",
                  "status desc",
                  "source",
                  "source desc",
                  "reservationRef",
                  "reservationRef desc",
                  "customerId",
                  "customerId desc",
                  "issuedAt",
                  "issuedAt desc",
                  "issuingPromotionId",
                  "issuingPromotionId desc",
                  "issuingTransactionId",
                  "issuingTransactionId desc",
                  "issuanceChannel",
                  "issuanceChannel desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "status",
                  "source",
                  "reservationRef",
                  "customerId",
                  "issuedAt",
                  "issuingPromotionId",
                  "issuingTransactionId",
                  "issuanceChannel",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "redemptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved codes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponCodes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponCodes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a coupon type.",
        "tags": [
          "Coupon Type",
          "Coupon Type Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "couponType_ID",
                  "couponType_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "couponType_ID",
                  "promotion_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of CouponTypePromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion of a coupon type.",
        "tags": [
          "Coupon Type",
          "Coupon Type Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a coupon type for activation on redemption",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes({ID})/statusText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves status text of a coupon type.",
        "tags": [
          "Coupon Type",
          "Coupon Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved status text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes({ID})/typeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves type text of a coupon type.",
        "tags": [
          "Coupon Type",
          "Coupon Code Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/CouponTypes/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Coupon Type"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/Currencies": {
      "get": {
        "summary": "Retrieves a list of currencies.",
        "tags": [
          "Currencies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc",
                  "symbol",
                  "symbol desc",
                  "minorUnit",
                  "minorUnit desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code",
                  "symbol",
                  "minorUnit"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved currencies",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Currencies",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Currencies"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single currency.",
        "tags": [
          "Currencies"
        ],
        "requestBody": {
          "description": "New currency",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Currencies-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created currency",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Currencies('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 3
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single currency.",
        "tags": [
          "Currencies"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code",
                  "symbol",
                  "minorUnit"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved currency",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single currency.",
        "tags": [
          "Currencies"
        ],
        "requestBody": {
          "description": "New property values",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Currencies-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single currency.",
        "tags": [
          "Currencies"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Currencies('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 3
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a currency.",
        "tags": [
          "Currencies",
          "Currencies texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Currencies('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 3
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a currency.",
        "tags": [
          "Currencies",
          "Currencies texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Currencies_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Currencies_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a currency.",
        "tags": [
          "Currencies",
          "Currencies texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Currencies_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions": {
      "get": {
        "summary": "Retrieves a list of discount actions.",
        "tags": [
          "Discount Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "actionType",
                  "actionType desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "maxDiscountAmount",
                  "maxDiscountAmount desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleNumber",
                  "targetArticleNumber desc",
                  "targetArticleGroupId",
                  "targetArticleGroupId desc",
                  "includeSubGroups",
                  "includeSubGroups desc",
                  "targetArticleList",
                  "targetArticleList desc",
                  "selectionType",
                  "selectionType desc",
                  "applicationQuantityMode",
                  "applicationQuantityMode desc",
                  "applicationQuantity",
                  "applicationQuantity desc",
                  "targetCouponType_ID",
                  "targetCouponType_ID desc",
                  "distributionMode",
                  "distributionMode desc",
                  "maxBundles",
                  "maxBundles desc",
                  "freeItemArticleNumber",
                  "freeItemArticleNumber desc",
                  "freeItemQuantity",
                  "freeItemQuantity desc",
                  "restrictToOnePerBasket",
                  "restrictToOnePerBasket desc",
                  "freeItemReferencePrice",
                  "freeItemReferencePrice desc",
                  "maxFreeUnits",
                  "maxFreeUnits desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of DiscountActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single discount action.",
        "tags": [
          "Discount Action"
        ],
        "requestBody": {
          "description": "Reward definition specifying what discount is applied when a promotion triggers",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created discount action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single discount action.",
        "tags": [
          "Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single discount action.",
        "tags": [
          "Discount Action"
        ],
        "requestBody": {
          "description": "Reward definition specifying what discount is applied when a promotion triggers",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single discount action.",
        "tags": [
          "Discount Action"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/actionTypeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action type text of a discount action.",
        "tags": [
          "Discount Action",
          "Action Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/articleListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of article list items of a discount action.",
        "tags": [
          "Discount Action",
          "Action Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "fixedPrice",
                  "fixedPrice desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "ean",
                  "fixedPrice"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ActionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article list item of a discount action.",
        "tags": [
          "Discount Action",
          "Action Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in an action-level article list for discount targeting",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/bundleComponents": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of bundle components of a discount action.",
        "tags": [
          "Discount Action",
          "Bundle Component"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "minQuantity",
                  "maxQuantity",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved bundle components",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BundleComponents",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BundleComponents"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single bundle component of a discount action.",
        "tags": [
          "Discount Action",
          "Bundle Component"
        ],
        "requestBody": {
          "description": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BundleComponents-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created bundle component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BundleComponents"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/discountTypeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves discount type text of a discount action.",
        "tags": [
          "Discount Action",
          "Discount Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/exclusions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of exclusions of a discount action.",
        "tags": [
          "Discount Action",
          "Action Exclusion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "action_ID",
                  "action_ID desc",
                  "exclusionType",
                  "exclusionType desc",
                  "articleNumber",
                  "articleNumber desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "articleGroupId",
                  "articleGroupId desc",
                  "manufacturer",
                  "manufacturer desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ActionExclusions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single exclusion of a discount action.",
        "tags": [
          "Discount Action",
          "Action Exclusion"
        ],
        "requestBody": {
          "description": "Rule excluding specific articles from receiving a discount",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ActionExclusions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a discount action.",
        "tags": [
          "Discount Action",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/quantityTiers": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of quantity tiers of a discount action.",
        "tags": [
          "Discount Action",
          "Quantity Price Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "minQuantity",
                  "minQuantity desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "minQuantity",
                  "discountType",
                  "discountValue"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved quantity tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of QuantityPriceTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single quantity tier of a discount action.",
        "tags": [
          "Discount Action",
          "Quantity Price Tier"
        ],
        "requestBody": {
          "description": "Volume-based discount tier for QUANTITY_TIER promotions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created quantity tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/scaledTiers": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of scaled tiers of a discount action.",
        "tags": [
          "Discount Action",
          "Scaled Receipt Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "thresholdAmount",
                  "thresholdAmount desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "thresholdAmount",
                  "discountType",
                  "discountValue"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved scaled tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ScaledReceiptTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single scaled tier of a discount action.",
        "tags": [
          "Discount Action",
          "Scaled Receipt Tier"
        ],
        "requestBody": {
          "description": "Threshold-based discount tier for scaled receipt promotions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created scaled tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/targetArticle": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article of a discount action.",
        "tags": [
          "Discount Action",
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/targetArticleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article group of a discount action.",
        "tags": [
          "Discount Action",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountActions({ID})/targetCouponType": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target coupon type of a discount action.",
        "tags": [
          "Discount Action",
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountTypes": {
      "get": {
        "summary": "Retrieves a list of discount types.",
        "tags": [
          "Discount Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of DiscountTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.DiscountTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single discount type.",
        "tags": [
          "Discount Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a discount type.",
        "tags": [
          "Discount Types",
          "Discount Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DiscountTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a discount type.",
        "tags": [
          "Discount Types",
          "Discount Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of DiscountTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.DiscountTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a discount type.",
        "tags": [
          "Discount Types",
          "Discount Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.DiscountTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DistributionModes": {
      "get": {
        "summary": "Retrieves a list of distribution modes.",
        "tags": [
          "Distribution Modes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved distribution modes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of DistributionModes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.DistributionModes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DistributionModes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single distribution mode.",
        "tags": [
          "Distribution Modes"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved distribution mode",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DistributionModes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DistributionModes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a distribution mode.",
        "tags": [
          "Distribution Modes",
          "Distribution Modes texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DistributionModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/DistributionModes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a distribution mode.",
        "tags": [
          "Distribution Modes",
          "Distribution Modes texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of DistributionModes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.DistributionModes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a distribution mode.",
        "tags": [
          "Distribution Modes",
          "Distribution Modes texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.DistributionModes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DistributionModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionArticleListItems": {
      "get": {
        "summary": "Retrieves a list of exclusion article list items.",
        "tags": [
          "Exclusion Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusion_ID",
                  "exclusion_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusion_ID",
                  "articleNumber",
                  "ean"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single exclusion article list item.",
        "tags": [
          "Exclusion Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in an exclusion-level article list",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created exclusion article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionArticleListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single exclusion article list item.",
        "tags": [
          "Exclusion Article List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusion_ID",
                  "articleNumber",
                  "ean"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single exclusion article list item.",
        "tags": [
          "Exclusion Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in an exclusion-level article list",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single exclusion article list item.",
        "tags": [
          "Exclusion Article List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionArticleListItems({ID})/exclusion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves exclusion of a exclusion article list item.",
        "tags": [
          "Exclusion Article List Item",
          "Action Exclusion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionGroupPromotions": {
      "get": {
        "summary": "Retrieves a list of exclusion group promotions.",
        "tags": [
          "Exclusion Group Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusionGroup_ID",
                  "exclusionGroup_ID desc",
                  "promotion_ID",
                  "promotion_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusionGroup_ID",
                  "promotion_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusionGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion group promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionGroupPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single exclusion group promotion.",
        "tags": [
          "Exclusion Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a mutual exclusion group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created exclusion group promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionGroupPromotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single exclusion group promotion.",
        "tags": [
          "Exclusion Group Promotion Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusionGroup_ID",
                  "promotion_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusionGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion group promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single exclusion group promotion.",
        "tags": [
          "Exclusion Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a mutual exclusion group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single exclusion group promotion.",
        "tags": [
          "Exclusion Group Promotion Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionGroupPromotions({ID})/exclusionGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves exclusion group of a exclusion group promotion assignment.",
        "tags": [
          "Exclusion Group Promotion Assignment",
          "Mutual Exclusion Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "resolutionStrategy",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionGroupPromotions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a exclusion group promotion assignment.",
        "tags": [
          "Exclusion Group Promotion Assignment",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionTypes": {
      "get": {
        "summary": "Retrieves a list of exclusion types.",
        "tags": [
          "Exclusion Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single exclusion type.",
        "tags": [
          "Exclusion Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a exclusion type.",
        "tags": [
          "Exclusion Types",
          "Exclusion Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusionTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a exclusion type.",
        "tags": [
          "Exclusion Types",
          "Exclusion Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a exclusion type.",
        "tags": [
          "Exclusion Types",
          "Exclusion Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusivityLevels": {
      "get": {
        "summary": "Retrieves a list of exclusivity levels.",
        "tags": [
          "Exclusivity Levels"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusivity levels",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusivityLevels",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusivityLevels('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single exclusivity level.",
        "tags": [
          "Exclusivity Levels"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusivity level",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusivityLevels('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a exclusivity level.",
        "tags": [
          "Exclusivity Levels",
          "Exclusivity Levels texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ExclusivityLevels('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a exclusivity level.",
        "tags": [
          "Exclusivity Levels",
          "Exclusivity Levels texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusivityLevels_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a exclusivity level.",
        "tags": [
          "Exclusivity Levels",
          "Exclusivity Levels texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/GroupTypes": {
      "get": {
        "summary": "Retrieves a list of group types.",
        "tags": [
          "Group Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved group types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of GroupTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.GroupTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/GroupTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single group type.",
        "tags": [
          "Group Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved group type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.GroupTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/GroupTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a group type.",
        "tags": [
          "Group Types",
          "Group Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.GroupTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/GroupTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a group type.",
        "tags": [
          "Group Types",
          "Group Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of GroupTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.GroupTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a group type.",
        "tags": [
          "Group Types",
          "Group Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.GroupTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.GroupTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ImportJobErrors": {
      "get": {
        "summary": "Retrieves a list of import job errors.",
        "tags": [
          "Import Job Error"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "job_ID",
                  "job_ID desc",
                  "rowIndex",
                  "rowIndex desc",
                  "rowKey",
                  "rowKey desc",
                  "code",
                  "code desc",
                  "message",
                  "message desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "job_ID",
                  "rowIndex",
                  "rowKey",
                  "code",
                  "message"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "job"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved import job errors",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ImportJobErrors",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ImportJobErrors"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ImportJobErrors({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single import job error.",
        "tags": [
          "Import Job Error"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "job_ID",
                  "rowIndex",
                  "rowKey",
                  "code",
                  "message"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "job"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved import job error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ImportJobErrors"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ImportJobErrors({ID})/job": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves job of a import job error.",
        "tags": [
          "Import Job Error",
          "Import Job"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "type",
                  "status",
                  "tenantId",
                  "idempotencyKey",
                  "rowsReceived",
                  "rowsProcessed",
                  "rowsSkipped",
                  "callbackUrl",
                  "callbackSecret",
                  "payloadRef",
                  "startedAt",
                  "finishedAt",
                  "minorVersion",
                  "workerStatus"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "errors"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ImportJobs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ImportJobs": {
      "get": {
        "summary": "Retrieves a list of import jobs.",
        "tags": [
          "Import Job"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "type",
                  "type desc",
                  "status",
                  "status desc",
                  "tenantId",
                  "tenantId desc",
                  "idempotencyKey",
                  "idempotencyKey desc",
                  "rowsReceived",
                  "rowsReceived desc",
                  "rowsProcessed",
                  "rowsProcessed desc",
                  "rowsSkipped",
                  "rowsSkipped desc",
                  "callbackUrl",
                  "callbackUrl desc",
                  "callbackSecret",
                  "callbackSecret desc",
                  "payloadRef",
                  "payloadRef desc",
                  "startedAt",
                  "startedAt desc",
                  "finishedAt",
                  "finishedAt desc",
                  "minorVersion",
                  "minorVersion desc",
                  "workerStatus",
                  "workerStatus desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "type",
                  "status",
                  "tenantId",
                  "idempotencyKey",
                  "rowsReceived",
                  "rowsProcessed",
                  "rowsSkipped",
                  "callbackUrl",
                  "callbackSecret",
                  "payloadRef",
                  "startedAt",
                  "finishedAt",
                  "minorVersion",
                  "workerStatus"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "errors"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved import jobs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ImportJobs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ImportJobs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single import job.",
        "tags": [
          "Import Job"
        ],
        "requestBody": {
          "description": "Async-job state for Public API bulk imports and DRFOUT master-data ingest",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ImportJobs-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created import job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ImportJobs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ImportJobs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single import job.",
        "tags": [
          "Import Job"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "type",
                  "status",
                  "tenantId",
                  "idempotencyKey",
                  "rowsReceived",
                  "rowsProcessed",
                  "rowsSkipped",
                  "callbackUrl",
                  "callbackSecret",
                  "payloadRef",
                  "startedAt",
                  "finishedAt",
                  "minorVersion",
                  "workerStatus"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "errors"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved import job",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ImportJobs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single import job.",
        "tags": [
          "Import Job"
        ],
        "requestBody": {
          "description": "Async-job state for Public API bulk imports and DRFOUT master-data ingest",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ImportJobs-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single import job.",
        "tags": [
          "Import Job"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ImportJobs({ID})/errors": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of errors of a import job.",
        "tags": [
          "Import Job",
          "Import Job Error"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "job_ID",
                  "job_ID desc",
                  "rowIndex",
                  "rowIndex desc",
                  "rowKey",
                  "rowKey desc",
                  "code",
                  "code desc",
                  "message",
                  "message desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "job_ID",
                  "rowIndex",
                  "rowKey",
                  "code",
                  "message"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "job"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved errors",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ImportJobErrors",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ImportJobErrors"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LocalDeployments": {
      "get": {
        "summary": "Retrieves a list of local deployments.",
        "tags": [
          "Local Deployments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "instanceId",
                  "instanceId desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "registeredAt",
                  "registeredAt desc",
                  "lastHeartbeat",
                  "lastHeartbeat desc",
                  "lastSyncAt",
                  "lastSyncAt desc",
                  "lastSyncDirection",
                  "lastSyncDirection desc",
                  "datasetsLastSync",
                  "datasetsLastSync desc",
                  "totalTxSynced",
                  "totalTxSynced desc",
                  "status",
                  "status desc",
                  "version",
                  "version desc",
                  "ipAddress",
                  "ipAddress desc",
                  "excluded",
                  "excluded desc",
                  "excludedAt",
                  "excludedAt desc",
                  "excludedReason",
                  "excludedReason desc",
                  "capabilities",
                  "capabilities desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "instanceId",
                  "name",
                  "description",
                  "registeredAt",
                  "lastHeartbeat",
                  "lastSyncAt",
                  "lastSyncDirection",
                  "datasetsLastSync",
                  "totalTxSynced",
                  "status",
                  "version",
                  "ipAddress",
                  "excluded",
                  "excludedAt",
                  "excludedReason",
                  "capabilities"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "syncHistory"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved local deployments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LocalDeployments",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LocalDeployments"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LocalDeployments({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single local deployment.",
        "tags": [
          "Local Deployments"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "instanceId",
                  "name",
                  "description",
                  "registeredAt",
                  "lastHeartbeat",
                  "lastSyncAt",
                  "lastSyncDirection",
                  "datasetsLastSync",
                  "totalTxSynced",
                  "status",
                  "version",
                  "ipAddress",
                  "excluded",
                  "excludedAt",
                  "excludedReason",
                  "capabilities"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "syncHistory"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved local deployment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LocalDeployments"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LocalDeployments({ID})/syncHistory": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of sync history of a local deployment.",
        "tags": [
          "Local Deployments",
          "Sync History"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "deployment_ID",
                  "deployment_ID desc",
                  "direction",
                  "direction desc",
                  "startedAt",
                  "startedAt desc",
                  "completedAt",
                  "completedAt desc",
                  "itemCount",
                  "itemCount desc",
                  "status",
                  "status desc",
                  "errorMessage",
                  "errorMessage desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "deployment_ID",
                  "direction",
                  "startedAt",
                  "completedAt",
                  "itemCount",
                  "status",
                  "errorMessage"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "deployment"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved sync history",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of SyncHistory",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.SyncHistory"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LogicalConnectors": {
      "get": {
        "summary": "Retrieves a list of logical connectors.",
        "tags": [
          "Logical Connectors"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved logical connectors",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LogicalConnectors",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LogicalConnectors"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LogicalConnectors('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 5
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single logical connector.",
        "tags": [
          "Logical Connectors"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved logical connector",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LogicalConnectors"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LogicalConnectors('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 5
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a logical connector.",
        "tags": [
          "Logical Connectors",
          "Logical Connectors texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LogicalConnectors_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LogicalConnectors('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 5
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a logical connector.",
        "tags": [
          "Logical Connectors",
          "Logical Connectors texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LogicalConnectors_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LogicalConnectors_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a logical connector.",
        "tags": [
          "Logical Connectors",
          "Logical Connectors texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.LogicalConnectors_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LogicalConnectors_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActionTypes": {
      "get": {
        "summary": "Retrieves a list of loyalty action types.",
        "tags": [
          "Loyalty Action Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty action types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LoyaltyActionTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActionTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single loyalty action type.",
        "tags": [
          "Loyalty Action Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty action type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActionTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a loyalty action type.",
        "tags": [
          "Loyalty Action Types",
          "Loyalty Action Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActionTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a loyalty action type.",
        "tags": [
          "Loyalty Action Types",
          "Loyalty Action Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LoyaltyActionTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a loyalty action type.",
        "tags": [
          "Loyalty Action Types",
          "Loyalty Action Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActions": {
      "get": {
        "summary": "Retrieves a list of loyalty actions.",
        "tags": [
          "Loyalty Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "loyaltyActionType",
                  "loyaltyActionType desc",
                  "pointsValue",
                  "pointsValue desc",
                  "multiplier",
                  "multiplier desc",
                  "conversionRate",
                  "conversionRate desc",
                  "targetScope",
                  "targetScope desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleList",
                  "targetArticleList desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "loyaltyActionType",
                  "pointsValue",
                  "multiplier",
                  "conversionRate",
                  "targetScope",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleList"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "targetArticle",
                  "targetArticleGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LoyaltyActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LoyaltyActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single loyalty action.",
        "tags": [
          "Loyalty Action"
        ],
        "requestBody": {
          "description": "Loyalty point operation applied when a loyalty promotion triggers",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created loyalty action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single loyalty action.",
        "tags": [
          "Loyalty Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "loyaltyActionType",
                  "pointsValue",
                  "multiplier",
                  "conversionRate",
                  "targetScope",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleList"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "targetArticle",
                  "targetArticleGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single loyalty action.",
        "tags": [
          "Loyalty Action"
        ],
        "requestBody": {
          "description": "Loyalty point operation applied when a loyalty promotion triggers",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyActions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single loyalty action.",
        "tags": [
          "Loyalty Action"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a loyalty action.",
        "tags": [
          "Loyalty Action",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActions({ID})/targetArticle": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article of a loyalty action.",
        "tags": [
          "Loyalty Action",
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyActions({ID})/targetArticleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article group of a loyalty action.",
        "tags": [
          "Loyalty Action",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyTargetScopes": {
      "get": {
        "summary": "Retrieves a list of loyalty target scopes.",
        "tags": [
          "Loyalty Target Scopes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty target scopes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LoyaltyTargetScopes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyTargetScopes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single loyalty target scope.",
        "tags": [
          "Loyalty Target Scopes"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty target scope",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyTargetScopes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a loyalty target scope.",
        "tags": [
          "Loyalty Target Scopes",
          "Loyalty Target Scopes texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/LoyaltyTargetScopes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a loyalty target scope.",
        "tags": [
          "Loyalty Target Scopes",
          "Loyalty Target Scopes texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LoyaltyTargetScopes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a loyalty target scope.",
        "tags": [
          "Loyalty Target Scopes",
          "Loyalty Target Scopes texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/MutualExclusionGroups": {
      "get": {
        "summary": "Retrieves a list of mutual exclusion groups.",
        "tags": [
          "Mutual Exclusion Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "resolutionStrategy",
                  "resolutionStrategy desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "resolutionStrategy",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved mutual exclusion groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of MutualExclusionGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single mutual exclusion group.",
        "tags": [
          "Mutual Exclusion Group"
        ],
        "requestBody": {
          "description": "Named group of promotions that cannot be applied simultaneously",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created mutual exclusion group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/MutualExclusionGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single mutual exclusion group.",
        "tags": [
          "Mutual Exclusion Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "resolutionStrategy",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved mutual exclusion group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single mutual exclusion group.",
        "tags": [
          "Mutual Exclusion Group"
        ],
        "requestBody": {
          "description": "Named group of promotions that cannot be applied simultaneously",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single mutual exclusion group.",
        "tags": [
          "Mutual Exclusion Group"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/MutualExclusionGroups({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a mutual exclusion group.",
        "tags": [
          "Mutual Exclusion Group",
          "Exclusion Group Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusionGroup_ID",
                  "exclusionGroup_ID desc",
                  "promotion_ID",
                  "promotion_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusionGroup_ID",
                  "promotion_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusionGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionGroupPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion of a mutual exclusion group.",
        "tags": [
          "Mutual Exclusion Group",
          "Exclusion Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a mutual exclusion group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/MutualExclusionGroups/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Mutual Exclusion Group"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/NotificationLogs": {
      "get": {
        "summary": "Retrieves a list of notification logs.",
        "tags": [
          "Notification Log"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "budget_ID",
                  "budget_ID desc",
                  "budgetName",
                  "budgetName desc",
                  "threshold",
                  "threshold desc",
                  "consumedPercent",
                  "consumedPercent desc",
                  "consumedAmount",
                  "consumedAmount desc",
                  "totalAmount",
                  "totalAmount desc",
                  "channel",
                  "channel desc",
                  "recipient",
                  "recipient desc",
                  "status",
                  "status desc",
                  "sentAt",
                  "sentAt desc",
                  "errorMessage",
                  "errorMessage desc",
                  "tenantId",
                  "tenantId desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "budgetName",
                  "threshold",
                  "consumedPercent",
                  "consumedAmount",
                  "totalAmount",
                  "channel",
                  "recipient",
                  "status",
                  "sentAt",
                  "errorMessage",
                  "tenantId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved notification logs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of NotificationLogs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.NotificationLogs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/NotificationLogs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single notification log.",
        "tags": [
          "Notification Log"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "budget_ID",
                  "budgetName",
                  "threshold",
                  "consumedPercent",
                  "consumedAmount",
                  "totalAmount",
                  "channel",
                  "recipient",
                  "status",
                  "sentAt",
                  "errorMessage",
                  "tenantId"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved notification log",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.NotificationLogs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/NotificationLogs({ID})/budget": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves budget of a notification log.",
        "tags": [
          "Notification Log",
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PilotPosGroups": {
      "get": {
        "summary": "Retrieves a list of pilot pos groups.",
        "tags": [
          "Pilot POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "config_ID",
                  "config_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "config_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "config",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pilot pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PilotPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PilotPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single pilot pos group.",
        "tags": [
          "Pilot POS Group Assignment"
        ],
        "requestBody": {
          "description": "POS group assigned to the pilot arm of a PromotionPilotConfig",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PilotPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created pilot pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PilotPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PilotPosGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single pilot pos group.",
        "tags": [
          "Pilot POS Group Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "config_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "config",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pilot pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PilotPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single pilot pos group.",
        "tags": [
          "Pilot POS Group Assignment"
        ],
        "requestBody": {
          "description": "POS group assigned to the pilot arm of a PromotionPilotConfig",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PilotPosGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single pilot pos group.",
        "tags": [
          "Pilot POS Group Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PilotPosGroups({ID})/config": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves config of a pilot POS group assignment.",
        "tags": [
          "Pilot POS Group Assignment",
          "Promotion Pilot Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "pilotStartAt",
                  "pilotEndAt",
                  "autoPromote",
                  "autoPromoteThreshold",
                  "pilotShare",
                  "controlGroupSize",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "pilotPosGroups",
                  "controlPosGroups"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PilotPosGroups({ID})/posGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves pos group of a pilot POS group assignment.",
        "tags": [
          "Pilot POS Group Assignment",
          "POS Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "posGroupCode",
                  "name",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PosGroups": {
      "get": {
        "summary": "Retrieves a list of pos groups.",
        "tags": [
          "POS Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "posGroupCode",
                  "posGroupCode desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "posGroupCode",
                  "name",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single pos group.",
        "tags": [
          "POS Group"
        ],
        "requestBody": {
          "description": "Named group of POS systems for targeted promotion delivery",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PosGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single pos group.",
        "tags": [
          "POS Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "posGroupCode",
                  "name",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single pos group.",
        "tags": [
          "POS Group"
        ],
        "requestBody": {
          "description": "Named group of POS systems for targeted promotion delivery",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PosGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single pos group.",
        "tags": [
          "POS Group"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PosGroups({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a POS group.",
        "tags": [
          "POS Group",
          "Promotion POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "promotion_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion of a POS group.",
        "tags": [
          "POS Group",
          "Promotion POS Group Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a POS group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PosGroups/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "POS Group"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/PriorityGroupPromotions": {
      "get": {
        "summary": "Retrieves a list of priority group promotions.",
        "tags": [
          "Priority Group Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "priorityGroup_ID",
                  "priorityGroup_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "priorityGroup_ID",
                  "promotion_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "priorityGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved priority group promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PriorityGroupPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single priority group promotion.",
        "tags": [
          "Priority Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a priority group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created priority group promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroupPromotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single priority group promotion.",
        "tags": [
          "Priority Group Promotion Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "priorityGroup_ID",
                  "promotion_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "priorityGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved priority group promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single priority group promotion.",
        "tags": [
          "Priority Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a priority group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single priority group promotion.",
        "tags": [
          "Priority Group Promotion Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroupPromotions({ID})/priorityGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves priority group of a priority group promotion assignment.",
        "tags": [
          "Priority Group Promotion Assignment",
          "Priority Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "priority",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved priority group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroupPromotions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a priority group promotion assignment.",
        "tags": [
          "Priority Group Promotion Assignment",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroups": {
      "get": {
        "summary": "Retrieves a list of priority groups.",
        "tags": [
          "Priority Group"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "priority",
                  "priority desc",
                  "description",
                  "description desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "priority",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved priority groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PriorityGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single priority group.",
        "tags": [
          "Priority Group"
        ],
        "requestBody": {
          "description": "Named group controlling promotion application order when multiple promotions match",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created priority group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single priority group.",
        "tags": [
          "Priority Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "priority",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved priority group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single priority group.",
        "tags": [
          "Priority Group"
        ],
        "requestBody": {
          "description": "Named group controlling promotion application order when multiple promotions match",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single priority group.",
        "tags": [
          "Priority Group"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroups({ID})/promotions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of promotions of a priority group.",
        "tags": [
          "Priority Group",
          "Priority Group Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "priorityGroup_ID",
                  "priorityGroup_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "priorityGroup_ID",
                  "promotion_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "priorityGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PriorityGroupPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion of a priority group.",
        "tags": [
          "Priority Group",
          "Priority Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a priority group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PriorityGroups/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Priority Group"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/PromotionPilotConfigs": {
      "get": {
        "summary": "Retrieves a list of promotion pilot configs.",
        "tags": [
          "Promotion Pilot Configuration"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "pilotStartAt",
                  "pilotStartAt desc",
                  "pilotEndAt",
                  "pilotEndAt desc",
                  "autoPromote",
                  "autoPromote desc",
                  "autoPromoteThreshold",
                  "autoPromoteThreshold desc",
                  "pilotShare",
                  "pilotShare desc",
                  "controlGroupSize",
                  "controlGroupSize desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "pilotStartAt",
                  "pilotEndAt",
                  "autoPromote",
                  "autoPromoteThreshold",
                  "pilotShare",
                  "controlGroupSize",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "pilotPosGroups",
                  "controlPosGroups"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion pilot configs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionPilotConfigs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion pilot config.",
        "tags": [
          "Promotion Pilot Configuration"
        ],
        "requestBody": {
          "description": "Pilot/control POS group split + pilot window for a Promotion (F9.a)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion pilot config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPilotConfigs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotion pilot config.",
        "tags": [
          "Promotion Pilot Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "pilotStartAt",
                  "pilotEndAt",
                  "autoPromote",
                  "autoPromoteThreshold",
                  "pilotShare",
                  "controlGroupSize",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "pilotPosGroups",
                  "controlPosGroups"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion pilot config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single promotion pilot config.",
        "tags": [
          "Promotion Pilot Configuration"
        ],
        "requestBody": {
          "description": "Pilot/control POS group split + pilot window for a Promotion (F9.a)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single promotion pilot config.",
        "tags": [
          "Promotion Pilot Configuration"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPilotConfigs({ID})/controlPosGroups": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of control pos groups of a promotion pilot configuration.",
        "tags": [
          "Promotion Pilot Configuration",
          "Control POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "config_ID",
                  "config_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "config_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "config",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved control pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ControlPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ControlPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single control pos group of a promotion pilot configuration.",
        "tags": [
          "Promotion Pilot Configuration",
          "Control POS Group Assignment"
        ],
        "requestBody": {
          "description": "POS group assigned to the control arm of a PromotionPilotConfig",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ControlPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created control pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ControlPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPilotConfigs({ID})/pilotPosGroups": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of pilot pos groups of a promotion pilot configuration.",
        "tags": [
          "Promotion Pilot Configuration",
          "Pilot POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "config_ID",
                  "config_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "config_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "config",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pilot pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PilotPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PilotPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single pilot pos group of a promotion pilot configuration.",
        "tags": [
          "Promotion Pilot Configuration",
          "Pilot POS Group Assignment"
        ],
        "requestBody": {
          "description": "POS group assigned to the pilot arm of a PromotionPilotConfig",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PilotPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created pilot pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PilotPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPilotConfigs({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a promotion pilot configuration.",
        "tags": [
          "Promotion Pilot Configuration",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPosGroups": {
      "get": {
        "summary": "Retrieves a list of promotion pos groups.",
        "tags": [
          "Promotion POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "promotion_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion pos group.",
        "tags": [
          "Promotion POS Group Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a POS group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPosGroups({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotion pos group.",
        "tags": [
          "Promotion POS Group Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "promotion_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single promotion pos group.",
        "tags": [
          "Promotion POS Group Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a POS group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single promotion pos group.",
        "tags": [
          "Promotion POS Group Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPosGroups({ID})/posGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves pos group of a promotion POS group assignment.",
        "tags": [
          "Promotion POS Group Assignment",
          "POS Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "posGroupCode",
                  "name",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionPosGroups({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a promotion POS group assignment.",
        "tags": [
          "Promotion POS Group Assignment",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionStatuses": {
      "get": {
        "summary": "Retrieves a list of promotion statuses.",
        "tags": [
          "Promotion Statuses"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion statuses",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionStatuses",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionStatuses"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionStatuses('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotion status.",
        "tags": [
          "Promotion Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionStatuses('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a promotion status.",
        "tags": [
          "Promotion Statuses",
          "Promotion Statuses texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionStatuses('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a promotion status.",
        "tags": [
          "Promotion Statuses",
          "Promotion Statuses texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionStatuses_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionStatuses_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a promotion status.",
        "tags": [
          "Promotion Statuses",
          "Promotion Statuses texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionStatuses_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionStatuses_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates": {
      "get": {
        "summary": "Retrieves a list of promotion templates.",
        "tags": [
          "Promotion Template"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "code",
                  "code desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "useCase_code",
                  "useCase_code desc",
                  "type_code",
                  "type_code desc",
                  "priorityGroup_ID",
                  "priorityGroup_ID desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "useCase_code",
                  "type_code",
                  "priorityGroup_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "useCase",
                  "type",
                  "priorityGroup",
                  "conditions",
                  "discountActions",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion templates",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionTemplates",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion template.",
        "tags": [
          "Promotion Template"
        ],
        "requestBody": {
          "description": "Frozen Promotion-shaped snapshot used to spawn new Promotions via materialize / cloneToPromotion",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionTemplates-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotion template.",
        "tags": [
          "Promotion Template"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "useCase_code",
                  "type_code",
                  "priorityGroup_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "useCase",
                  "type",
                  "priorityGroup",
                  "conditions",
                  "discountActions",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single promotion template.",
        "tags": [
          "Promotion Template"
        ],
        "requestBody": {
          "description": "Frozen Promotion-shaped snapshot used to spawn new Promotions via materialize / cloneToPromotion",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionTemplates-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single promotion template.",
        "tags": [
          "Promotion Template"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/conditions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of conditions of a promotion template.",
        "tags": [
          "Promotion Template",
          "Template Condition"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "template_ID",
                  "template_ID desc",
                  "type",
                  "type desc",
                  "logicalConnector",
                  "logicalConnector desc",
                  "sortOrder",
                  "sortOrder desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "quantityUom",
                  "quantityUom desc",
                  "minAmount",
                  "minAmount desc",
                  "maxAmount",
                  "maxAmount desc",
                  "currency",
                  "currency desc",
                  "fieldName",
                  "fieldName desc",
                  "expectedValue",
                  "expectedValue desc",
                  "comparisonOperator",
                  "comparisonOperator desc",
                  "minPoints",
                  "minPoints desc",
                  "requireReasonCode",
                  "requireReasonCode desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved conditions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateConditions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single condition of a promotion template.",
        "tags": [
          "Promotion Template",
          "Template Condition"
        ],
        "requestBody": {
          "description": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/discountActions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of discount actions of a promotion template.",
        "tags": [
          "Promotion Template",
          "Template Discount Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "template_ID",
                  "template_ID desc",
                  "actionType",
                  "actionType desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "maxDiscountAmount",
                  "maxDiscountAmount desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleNumber",
                  "targetArticleNumber desc",
                  "targetArticleGroupId",
                  "targetArticleGroupId desc",
                  "includeSubGroups",
                  "includeSubGroups desc",
                  "targetArticleList",
                  "targetArticleList desc",
                  "selectionType",
                  "selectionType desc",
                  "applicationQuantityMode",
                  "applicationQuantityMode desc",
                  "applicationQuantity",
                  "applicationQuantity desc",
                  "targetCouponType_ID",
                  "targetCouponType_ID desc",
                  "distributionMode",
                  "distributionMode desc",
                  "maxBundles",
                  "maxBundles desc",
                  "freeItemArticleNumber",
                  "freeItemArticleNumber desc",
                  "freeItemQuantity",
                  "freeItemQuantity desc",
                  "restrictToOnePerBasket",
                  "restrictToOnePerBasket desc",
                  "freeItemReferencePrice",
                  "freeItemReferencePrice desc",
                  "maxFreeUnits",
                  "maxFreeUnits desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single discount action of a promotion template.",
        "tags": [
          "Promotion Template",
          "Template Discount Action"
        ],
        "requestBody": {
          "description": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created discount action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/localized": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a promotion template.",
        "tags": [
          "Promotion Template",
          "Promotion Templates texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/loyaltyActions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of loyalty actions of a promotion template.",
        "tags": [
          "Promotion Template",
          "Template Loyalty Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "template_ID",
                  "template_ID desc",
                  "loyaltyActionType",
                  "loyaltyActionType desc",
                  "pointsValue",
                  "pointsValue desc",
                  "multiplier",
                  "multiplier desc",
                  "conversionRate",
                  "conversionRate desc",
                  "targetScope",
                  "targetScope desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleList",
                  "targetArticleList desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "loyaltyActionType",
                  "pointsValue",
                  "multiplier",
                  "conversionRate",
                  "targetScope",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleList",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "targetArticle",
                  "targetArticleGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateLoyaltyActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single loyalty action of a promotion template.",
        "tags": [
          "Promotion Template",
          "Template Loyalty Action"
        ],
        "requestBody": {
          "description": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created loyalty action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/priorityGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves priority group of a promotion template.",
        "tags": [
          "Promotion Template",
          "Priority Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "priority",
                  "description",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved priority group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/texts": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a promotion template.",
        "tags": [
          "Promotion Template",
          "Promotion Templates texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "ID",
                  "ID desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionTemplates_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a promotion template.",
        "tags": [
          "Promotion Template",
          "Promotion Templates texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/type": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves type of a promotion template.",
        "tags": [
          "Promotion Template",
          "Promotion Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTemplates({ID})/useCase": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves use case of a promotion template.",
        "tags": [
          "Promotion Template",
          "Use Cases"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved use case",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.UseCases"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTypes": {
      "get": {
        "summary": "Retrieves a list of promotion types.",
        "tags": [
          "Promotion Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotion type.",
        "tags": [
          "Promotion Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a promotion type.",
        "tags": [
          "Promotion Types",
          "Promotion Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a promotion type.",
        "tags": [
          "Promotion Types",
          "Promotion Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a promotion type.",
        "tags": [
          "Promotion Types",
          "Promotion Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions": {
      "get": {
        "summary": "Retrieves a list of promotions.",
        "tags": [
          "Promotion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc",
                  "status",
                  "status desc",
                  "type",
                  "type desc",
                  "exclusivityLevel",
                  "exclusivityLevel desc",
                  "validFrom",
                  "validFrom desc",
                  "validTo",
                  "validTo desc",
                  "happyHourStart",
                  "happyHourStart desc",
                  "happyHourEnd",
                  "happyHourEnd desc",
                  "daysOfWeek",
                  "daysOfWeek desc",
                  "tenantId",
                  "tenantId desc",
                  "campaign_ID",
                  "campaign_ID desc",
                  "isExperiment",
                  "isExperiment desc",
                  "controlGroupId",
                  "controlGroupId desc",
                  "experimentGroupId",
                  "experimentGroupId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Promotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Promotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single promotion.",
        "tags": [
          "Promotion"
        ],
        "requestBody": {
          "description": "Core promotion definition with validity, type and calculation settings",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Promotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotion.",
        "tags": [
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single promotion.",
        "tags": [
          "Promotion"
        ],
        "requestBody": {
          "description": "Core promotion definition with validity, type and calculation settings",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Promotions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single promotion.",
        "tags": [
          "Promotion"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/calculationConfig": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves calculation config of a promotion.",
        "tags": [
          "Promotion",
          "Calculation Configuration"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "up__ID",
                  "calculationMode",
                  "roundingMode",
                  "precision"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "up_"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved calculation config",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CalculationConfigs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/campaign": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves campaign of a promotion.",
        "tags": [
          "Promotion",
          "Campaign"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "startAt",
                  "endAt",
                  "status_code",
                  "ownerStakeholder_ID",
                  "primaryContact_ID",
                  "notes",
                  "mergePromotionPosGroups",
                  "locked",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "status",
                  "ownerStakeholder",
                  "primaryContact",
                  "posGroups",
                  "promotions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved campaign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Campaigns"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/conditions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of conditions of a promotion.",
        "tags": [
          "Promotion",
          "Condition"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "type",
                  "type desc",
                  "logicalConnector",
                  "logicalConnector desc",
                  "sortOrder",
                  "sortOrder desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "quantityUom",
                  "quantityUom desc",
                  "minAmount",
                  "minAmount desc",
                  "maxAmount",
                  "maxAmount desc",
                  "currency_code",
                  "currency_code desc",
                  "fieldName",
                  "fieldName desc",
                  "expectedValue",
                  "expectedValue desc",
                  "comparisonOperator",
                  "comparisonOperator desc",
                  "minPoints",
                  "minPoints desc",
                  "requireReasonCode",
                  "requireReasonCode desc",
                  "parameters",
                  "parameters desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency_code",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "parameters",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "currency",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved conditions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Conditions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Conditions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single condition of a promotion.",
        "tags": [
          "Promotion",
          "Condition"
        ],
        "requestBody": {
          "description": "Individual condition for promotion eligibility evaluation",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Conditions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Conditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/discountActions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of discount actions of a promotion.",
        "tags": [
          "Promotion",
          "Discount Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "actionType",
                  "actionType desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "maxDiscountAmount",
                  "maxDiscountAmount desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleNumber",
                  "targetArticleNumber desc",
                  "targetArticleGroupId",
                  "targetArticleGroupId desc",
                  "includeSubGroups",
                  "includeSubGroups desc",
                  "targetArticleList",
                  "targetArticleList desc",
                  "selectionType",
                  "selectionType desc",
                  "applicationQuantityMode",
                  "applicationQuantityMode desc",
                  "applicationQuantity",
                  "applicationQuantity desc",
                  "targetCouponType_ID",
                  "targetCouponType_ID desc",
                  "distributionMode",
                  "distributionMode desc",
                  "maxBundles",
                  "maxBundles desc",
                  "freeItemArticleNumber",
                  "freeItemArticleNumber desc",
                  "freeItemQuantity",
                  "freeItemQuantity desc",
                  "restrictToOnePerBasket",
                  "restrictToOnePerBasket desc",
                  "freeItemReferencePrice",
                  "freeItemReferencePrice desc",
                  "maxFreeUnits",
                  "maxFreeUnits desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of DiscountActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single discount action of a promotion.",
        "tags": [
          "Promotion",
          "Discount Action"
        ],
        "requestBody": {
          "description": "Reward definition specifying what discount is applied when a promotion triggers",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created discount action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/exclusivityLevelText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves exclusivity level text of a promotion.",
        "tags": [
          "Promotion",
          "Exclusivity Levels"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusivity level text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/localized": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a promotion.",
        "tags": [
          "Promotion",
          "Promotions texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/loyaltyActions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of loyalty actions of a promotion.",
        "tags": [
          "Promotion",
          "Loyalty Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "loyaltyActionType",
                  "loyaltyActionType desc",
                  "pointsValue",
                  "pointsValue desc",
                  "multiplier",
                  "multiplier desc",
                  "conversionRate",
                  "conversionRate desc",
                  "targetScope",
                  "targetScope desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleList",
                  "targetArticleList desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "loyaltyActionType",
                  "pointsValue",
                  "multiplier",
                  "conversionRate",
                  "targetScope",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleList"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "targetArticle",
                  "targetArticleGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved loyalty actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of LoyaltyActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.LoyaltyActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single loyalty action of a promotion.",
        "tags": [
          "Promotion",
          "Loyalty Action"
        ],
        "requestBody": {
          "description": "Loyalty point operation applied when a loyalty promotion triggers",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created loyalty action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LoyaltyActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/mutualExclusionGroups": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of mutual exclusion groups of a promotion.",
        "tags": [
          "Promotion",
          "Exclusion Group Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusionGroup_ID",
                  "exclusionGroup_ID desc",
                  "promotion_ID",
                  "promotion_ID desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusionGroup_ID",
                  "promotion_ID"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusionGroup",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved mutual exclusion groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ExclusionGroupPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single mutual exclusion group of a promotion.",
        "tags": [
          "Promotion",
          "Exclusion Group Promotion Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a mutual exclusion group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created mutual exclusion group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/posGroups": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of pos groups of a promotion.",
        "tags": [
          "Promotion",
          "Promotion POS Group Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "posGroup_ID",
                  "posGroup_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "promotion_ID",
                  "posGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "posGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved pos groups",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionPosGroups",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single pos group of a promotion.",
        "tags": [
          "Promotion",
          "Promotion POS Group Assignment"
        ],
        "requestBody": {
          "description": "Assignment of a promotion to a POS group",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created pos group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/statusText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves status text of a promotion.",
        "tags": [
          "Promotion",
          "Promotion Statuses"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved status text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionStatuses"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/texts": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a promotion.",
        "tags": [
          "Promotion",
          "Promotions texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "ID",
                  "ID desc",
                  "name",
                  "name desc",
                  "description",
                  "description desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "ID",
                  "name",
                  "description"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Promotions_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Promotions_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a promotion.",
        "tags": [
          "Promotion",
          "Promotions texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Promotions_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions({ID})/typeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves type text of a promotion.",
        "tags": [
          "Promotion",
          "Promotion Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Promotions/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Promotion"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/PromotionsCalendar": {
      "get": {
        "summary": "Retrieves a list of promotions calendar.",
        "tags": [
          "Promotion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "name",
                  "name desc",
                  "status",
                  "status desc",
                  "type",
                  "type desc",
                  "startAt",
                  "startAt desc",
                  "endAt",
                  "endAt desc",
                  "tenantId",
                  "tenantId desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "name",
                  "status",
                  "type",
                  "startAt",
                  "endAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions calendar",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of PromotionsCalendar",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.PromotionsCalendar"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/PromotionsCalendar({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single promotions calendar.",
        "tags": [
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "name",
                  "status",
                  "type",
                  "startAt",
                  "endAt",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotions calendar",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionsCalendar"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/QuantityPriceTiers": {
      "get": {
        "summary": "Retrieves a list of quantity price tiers.",
        "tags": [
          "Quantity Price Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "minQuantity",
                  "minQuantity desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "minQuantity",
                  "discountType",
                  "discountValue"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved quantity price tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of QuantityPriceTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single quantity price tier.",
        "tags": [
          "Quantity Price Tier"
        ],
        "requestBody": {
          "description": "Volume-based discount tier for QUANTITY_TIER promotions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created quantity price tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/QuantityPriceTiers({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single quantity price tier.",
        "tags": [
          "Quantity Price Tier"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "minQuantity",
                  "discountType",
                  "discountValue"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved quantity price tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single quantity price tier.",
        "tags": [
          "Quantity Price Tier"
        ],
        "requestBody": {
          "description": "Volume-based discount tier for QUANTITY_TIER promotions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single quantity price tier.",
        "tags": [
          "Quantity Price Tier"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/QuantityPriceTiers({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a quantity price tier.",
        "tags": [
          "Quantity Price Tier",
          "Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RechargeContributions": {
      "get": {
        "summary": "Retrieves a list of recharge contributions.",
        "tags": [
          "Recharge Contribution"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "stakeholder_ID",
                  "stakeholder_ID desc",
                  "amount",
                  "amount desc",
                  "currency_code",
                  "currency_code desc",
                  "description",
                  "description desc",
                  "contributedAt",
                  "contributedAt desc",
                  "budget_ID",
                  "budget_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "amount",
                  "currency_code",
                  "description",
                  "contributedAt",
                  "budget_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "currency",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved recharge contributions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of RechargeContributions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.RechargeContributions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single recharge contribution.",
        "tags": [
          "Recharge Contribution"
        ],
        "requestBody": {
          "description": "Budget contribution from a stakeholder",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.RechargeContributions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created recharge contribution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RechargeContributions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RechargeContributions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single recharge contribution.",
        "tags": [
          "Recharge Contribution"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "amount",
                  "currency_code",
                  "description",
                  "contributedAt",
                  "budget_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "currency",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved recharge contribution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RechargeContributions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single recharge contribution.",
        "tags": [
          "Recharge Contribution"
        ],
        "requestBody": {
          "description": "Budget contribution from a stakeholder",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.RechargeContributions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single recharge contribution.",
        "tags": [
          "Recharge Contribution"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RechargeContributions({ID})/budget": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves budget of a recharge contribution.",
        "tags": [
          "Recharge Contribution",
          "Budget"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "tenantId",
                  "totalAmount",
                  "consumedAmount",
                  "remainingAmount",
                  "currency_code",
                  "status",
                  "validFrom",
                  "validTo",
                  "customerCapAmount",
                  "customerCapCount",
                  "stopOnExhaustion",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "currency",
                  "stakeholders",
                  "promotions",
                  "notifications",
                  "consumptions",
                  "webhookSubscriptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Budgets"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RechargeContributions({ID})/currency": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves currency of a recharge contribution.",
        "tags": [
          "Recharge Contribution",
          "Currencies"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code",
                  "symbol",
                  "minorUnit"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved currency",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Currencies"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RechargeContributions({ID})/stakeholder": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves stakeholder of a recharge contribution.",
        "tags": [
          "Recharge Contribution",
          "Stakeholder"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RedemptionLogs": {
      "get": {
        "summary": "Retrieves a list of redemption logs.",
        "tags": [
          "Redemption Log"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "couponCode_ID",
                  "couponCode_ID desc",
                  "transactionId",
                  "transactionId desc",
                  "redeemedAt",
                  "redeemedAt desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponCode_ID",
                  "transactionId",
                  "redeemedAt"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponCode"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved redemption logs",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of RedemptionLogs",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.RedemptionLogs"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RedemptionLogs({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single redemption log.",
        "tags": [
          "Redemption Log"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponCode_ID",
                  "transactionId",
                  "redeemedAt"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponCode"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved redemption log",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RedemptionLogs"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RedemptionLogs({ID})/couponCode": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves coupon code of a redemption log.",
        "tags": [
          "Redemption Log",
          "Coupon Code"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "couponType_ID",
                  "status",
                  "source",
                  "reservationRef",
                  "customerId",
                  "issuedAt",
                  "issuingPromotionId",
                  "issuingTransactionId",
                  "issuanceChannel",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "couponType",
                  "redemptions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved coupon code",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponCodes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ResolutionStrategies": {
      "get": {
        "summary": "Retrieves a list of resolution strategies.",
        "tags": [
          "Resolution Strategies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved resolution strategies",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ResolutionStrategies",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ResolutionStrategies('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single resolution strategy.",
        "tags": [
          "Resolution Strategies"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved resolution strategy",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ResolutionStrategies('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a resolution strategy.",
        "tags": [
          "Resolution Strategies",
          "Resolution Strategies texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ResolutionStrategies('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a resolution strategy.",
        "tags": [
          "Resolution Strategies",
          "Resolution Strategies texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ResolutionStrategies_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a resolution strategy.",
        "tags": [
          "Resolution Strategies",
          "Resolution Strategies texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RoundingModes": {
      "get": {
        "summary": "Retrieves a list of rounding modes.",
        "tags": [
          "Rounding Modes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved rounding modes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of RoundingModes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.RoundingModes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RoundingModes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single rounding mode.",
        "tags": [
          "Rounding Modes"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved rounding mode",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RoundingModes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RoundingModes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a rounding mode.",
        "tags": [
          "Rounding Modes",
          "Rounding Modes texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RoundingModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/RoundingModes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a rounding mode.",
        "tags": [
          "Rounding Modes",
          "Rounding Modes texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of RoundingModes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.RoundingModes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a rounding mode.",
        "tags": [
          "Rounding Modes",
          "Rounding Modes texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.RoundingModes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RoundingModes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ScaledReceiptTiers": {
      "get": {
        "summary": "Retrieves a list of scaled receipt tiers.",
        "tags": [
          "Scaled Receipt Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "thresholdAmount",
                  "thresholdAmount desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "thresholdAmount",
                  "discountType",
                  "discountValue"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved scaled receipt tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of ScaledReceiptTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single scaled receipt tier.",
        "tags": [
          "Scaled Receipt Tier"
        ],
        "requestBody": {
          "description": "Threshold-based discount tier for scaled receipt promotions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created scaled receipt tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ScaledReceiptTiers({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single scaled receipt tier.",
        "tags": [
          "Scaled Receipt Tier"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "thresholdAmount",
                  "discountType",
                  "discountValue"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved scaled receipt tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single scaled receipt tier.",
        "tags": [
          "Scaled Receipt Tier"
        ],
        "requestBody": {
          "description": "Threshold-based discount tier for scaled receipt promotions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single scaled receipt tier.",
        "tags": [
          "Scaled Receipt Tier"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/ScaledReceiptTiers({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a scaled receipt tier.",
        "tags": [
          "Scaled Receipt Tier",
          "Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "promotion_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "promotion",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/SelectionTypes": {
      "get": {
        "summary": "Retrieves a list of selection types.",
        "tags": [
          "Selection Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved selection types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of SelectionTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.SelectionTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/SelectionTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single selection type.",
        "tags": [
          "Selection Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved selection type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.SelectionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/SelectionTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a selection type.",
        "tags": [
          "Selection Types",
          "Selection Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.SelectionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/SelectionTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a selection type.",
        "tags": [
          "Selection Types",
          "Selection Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of SelectionTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.SelectionTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a selection type.",
        "tags": [
          "Selection Types",
          "Selection Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.SelectionTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.SelectionTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderPromotions": {
      "get": {
        "summary": "Retrieves a list of stakeholder promotions.",
        "tags": [
          "Stakeholder Promotion Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "stakeholder_ID",
                  "stakeholder_ID desc",
                  "promotion_ID",
                  "promotion_ID desc",
                  "sharePercentage",
                  "sharePercentage desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "promotion_ID",
                  "sharePercentage",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder promotions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of StakeholderPromotions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.StakeholderPromotions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single stakeholder promotion.",
        "tags": [
          "Stakeholder Promotion Assignment"
        ],
        "requestBody": {
          "description": "Links a stakeholder to a promotion with a cost-sharing percentage (deprecated)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.StakeholderPromotions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created stakeholder promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.StakeholderPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderPromotions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single stakeholder promotion.",
        "tags": [
          "Stakeholder Promotion Assignment"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "promotion_ID",
                  "sharePercentage",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "promotion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.StakeholderPromotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single stakeholder promotion.",
        "tags": [
          "Stakeholder Promotion Assignment"
        ],
        "requestBody": {
          "description": "Links a stakeholder to a promotion with a cost-sharing percentage (deprecated)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.StakeholderPromotions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single stakeholder promotion.",
        "tags": [
          "Stakeholder Promotion Assignment"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderPromotions({ID})/promotion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves promotion of a stakeholder promotion assignment.",
        "tags": [
          "Stakeholder Promotion Assignment",
          "Promotion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "description",
                  "status",
                  "type",
                  "exclusivityLevel",
                  "validFrom",
                  "validTo",
                  "happyHourStart",
                  "happyHourEnd",
                  "daysOfWeek",
                  "tenantId",
                  "campaign_ID",
                  "isExperiment",
                  "controlGroupId",
                  "experimentGroupId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "statusText",
                  "typeText",
                  "exclusivityLevelText",
                  "calculationConfig",
                  "posGroups",
                  "campaign",
                  "discountActions",
                  "conditions",
                  "mutualExclusionGroups",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved promotion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Promotions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderPromotions({ID})/stakeholder": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves stakeholder of a stakeholder promotion assignment.",
        "tags": [
          "Stakeholder Promotion Assignment",
          "Stakeholder"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderTypes": {
      "get": {
        "summary": "Retrieves a list of stakeholder types.",
        "tags": [
          "Stakeholder Types"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of StakeholderTypes",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.StakeholderTypes"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderTypes('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single stakeholder type.",
        "tags": [
          "Stakeholder Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.StakeholderTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderTypes('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a stakeholder type.",
        "tags": [
          "Stakeholder Types",
          "Stakeholder Types texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.StakeholderTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/StakeholderTypes('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 20
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a stakeholder type.",
        "tags": [
          "Stakeholder Types",
          "Stakeholder Types texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of StakeholderTypes_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.StakeholderTypes_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a stakeholder type.",
        "tags": [
          "Stakeholder Types",
          "Stakeholder Types texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.StakeholderTypes_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.StakeholderTypes_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Stakeholders": {
      "get": {
        "summary": "Retrieves a list of stakeholders.",
        "tags": [
          "Stakeholder"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "tenantId",
                  "tenantId desc",
                  "name",
                  "name desc",
                  "type",
                  "type desc",
                  "contactEmail",
                  "contactEmail desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholders",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of Stakeholders",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single stakeholder.",
        "tags": [
          "Stakeholder"
        ],
        "requestBody": {
          "description": "Party that funds budgets (supplier, brand, or internal)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Stakeholders({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single stakeholder.",
        "tags": [
          "Stakeholder"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "name",
                  "type",
                  "contactEmail",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "budgetAssignments",
                  "rechargeContributions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved stakeholder",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Stakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single stakeholder.",
        "tags": [
          "Stakeholder"
        ],
        "requestBody": {
          "description": "Party that funds budgets (supplier, brand, or internal)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single stakeholder.",
        "tags": [
          "Stakeholder"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Stakeholders({ID})/budgetAssignments": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of budget assignments of a stakeholder.",
        "tags": [
          "Stakeholder",
          "Budget Stakeholder Assignment"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "stakeholder_ID",
                  "stakeholder_ID desc",
                  "budget_ID",
                  "budget_ID desc",
                  "sharePercentage",
                  "sharePercentage desc",
                  "isPrimary",
                  "isPrimary desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "budget_ID",
                  "sharePercentage",
                  "isPrimary",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved budget assignments",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of BudgetStakeholders",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single budget assignment of a stakeholder.",
        "tags": [
          "Stakeholder",
          "Budget Stakeholder Assignment"
        ],
        "requestBody": {
          "description": "Links a stakeholder to a budget with a cost-sharing percentage",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created budget assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Stakeholders({ID})/rechargeContributions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of recharge contributions of a stakeholder.",
        "tags": [
          "Stakeholder",
          "Recharge Contribution"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "stakeholder_ID",
                  "stakeholder_ID desc",
                  "amount",
                  "amount desc",
                  "currency_code",
                  "currency_code desc",
                  "description",
                  "description desc",
                  "contributedAt",
                  "contributedAt desc",
                  "budget_ID",
                  "budget_ID desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "stakeholder_ID",
                  "amount",
                  "currency_code",
                  "description",
                  "contributedAt",
                  "budget_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "stakeholder",
                  "currency",
                  "budget"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved recharge contributions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of RechargeContributions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.RechargeContributions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single recharge contribution of a stakeholder.",
        "tags": [
          "Stakeholder",
          "Recharge Contribution"
        ],
        "requestBody": {
          "description": "Budget contribution from a stakeholder",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.RechargeContributions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created recharge contribution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.RechargeContributions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/Stakeholders/PublicAPI.bulkImport": {
      "post": {
        "summary": "Invokes action bulkImport",
        "tags": [
          "Stakeholder"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.BulkImportResult"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "rows": {
                    "type": "array",
                    "items": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/PublicAPI.BulkImportRow"
                        }
                      ],
                      "nullable": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/SyncHistory": {
      "get": {
        "summary": "Retrieves a list of sync history.",
        "tags": [
          "Sync History"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "deployment_ID",
                  "deployment_ID desc",
                  "direction",
                  "direction desc",
                  "startedAt",
                  "startedAt desc",
                  "completedAt",
                  "completedAt desc",
                  "itemCount",
                  "itemCount desc",
                  "status",
                  "status desc",
                  "errorMessage",
                  "errorMessage desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "deployment_ID",
                  "direction",
                  "startedAt",
                  "completedAt",
                  "itemCount",
                  "status",
                  "errorMessage"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "deployment"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved sync history",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of SyncHistory",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.SyncHistory"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/SyncHistory({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single sync history.",
        "tags": [
          "Sync History"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "deployment_ID",
                  "direction",
                  "startedAt",
                  "completedAt",
                  "itemCount",
                  "status",
                  "errorMessage"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "deployment"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved sync history",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.SyncHistory"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/SyncHistory({ID})/deployment": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves deployment of a sync history.",
        "tags": [
          "Sync History",
          "Local Deployments"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "instanceId",
                  "name",
                  "description",
                  "registeredAt",
                  "lastHeartbeat",
                  "lastSyncAt",
                  "lastSyncDirection",
                  "datasetsLastSync",
                  "totalTxSynced",
                  "status",
                  "version",
                  "ipAddress",
                  "excluded",
                  "excludedAt",
                  "excludedReason",
                  "capabilities"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "syncHistory"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved deployment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LocalDeployments"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditionArticleListItems": {
      "get": {
        "summary": "Retrieves a list of template condition article list items.",
        "tags": [
          "Template Condition Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template condition article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateConditionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template condition article list item.",
        "tags": [
          "Template Condition Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in a template condition article list; mirrors ConditionArticleListItems",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template condition article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditionArticleListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template condition article list item.",
        "tags": [
          "Template Condition Article List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template condition article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template condition article list item.",
        "tags": [
          "Template Condition Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in a template condition article list; mirrors ConditionArticleListItems",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template condition article list item.",
        "tags": [
          "Template Condition Article List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditionArticleListItems({ID})/condition": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves condition of a template condition article list item.",
        "tags": [
          "Template Condition Article List Item",
          "Template Condition"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditionValueListItems": {
      "get": {
        "summary": "Retrieves a list of template condition value list items.",
        "tags": [
          "Template Condition Value List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "category",
                  "category desc",
                  "value",
                  "value desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "category",
                  "value",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template condition value list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateConditionValueListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template condition value list item.",
        "tags": [
          "Template Condition Value List Item"
        ],
        "requestBody": {
          "description": "Value entry in a template condition value list; mirrors ConditionValueListItems",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template condition value list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditionValueListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template condition value list item.",
        "tags": [
          "Template Condition Value List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "category",
                  "value",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template condition value list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template condition value list item.",
        "tags": [
          "Template Condition Value List Item"
        ],
        "requestBody": {
          "description": "Value entry in a template condition value list; mirrors ConditionValueListItems",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template condition value list item.",
        "tags": [
          "Template Condition Value List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditionValueListItems({ID})/condition": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves condition of a template condition value list item.",
        "tags": [
          "Template Condition Value List Item",
          "Template Condition"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions": {
      "get": {
        "summary": "Retrieves a list of template conditions.",
        "tags": [
          "Template Condition"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "template_ID",
                  "template_ID desc",
                  "type",
                  "type desc",
                  "logicalConnector",
                  "logicalConnector desc",
                  "sortOrder",
                  "sortOrder desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "quantityUom",
                  "quantityUom desc",
                  "minAmount",
                  "minAmount desc",
                  "maxAmount",
                  "maxAmount desc",
                  "currency",
                  "currency desc",
                  "fieldName",
                  "fieldName desc",
                  "expectedValue",
                  "expectedValue desc",
                  "comparisonOperator",
                  "comparisonOperator desc",
                  "minPoints",
                  "minPoints desc",
                  "requireReasonCode",
                  "requireReasonCode desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template conditions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateConditions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template condition.",
        "tags": [
          "Template Condition"
        ],
        "requestBody": {
          "description": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template condition.",
        "tags": [
          "Template Condition"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "type",
                  "logicalConnector",
                  "sortOrder",
                  "minQuantity",
                  "maxQuantity",
                  "quantityUom",
                  "minAmount",
                  "maxAmount",
                  "currency",
                  "fieldName",
                  "expectedValue",
                  "comparisonOperator",
                  "minPoints",
                  "requireReasonCode",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "conditionTypeText",
                  "logicalConnectorText",
                  "valueListItems",
                  "articleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template condition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template condition.",
        "tags": [
          "Template Condition"
        ],
        "requestBody": {
          "description": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template condition.",
        "tags": [
          "Template Condition"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions({ID})/articleListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of article list items of a template condition.",
        "tags": [
          "Template Condition",
          "Template Condition Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateConditionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article list item of a template condition.",
        "tags": [
          "Template Condition",
          "Template Condition Article List Item"
        ],
        "requestBody": {
          "description": "Article entry in a template condition article list; mirrors ConditionArticleListItems",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions({ID})/conditionTypeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves condition type text of a template condition.",
        "tags": [
          "Template Condition",
          "Condition Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved condition type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ConditionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions({ID})/logicalConnectorText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves logical connector text of a template condition.",
        "tags": [
          "Template Condition",
          "Logical Connectors"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved logical connector text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.LogicalConnectors"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions({ID})/template": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves template of a template condition.",
        "tags": [
          "Template Condition",
          "Promotion Template"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "useCase_code",
                  "type_code",
                  "priorityGroup_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "useCase",
                  "type",
                  "priorityGroup",
                  "conditions",
                  "discountActions",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateConditions({ID})/valueListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of value list items of a template condition.",
        "tags": [
          "Template Condition",
          "Template Condition Value List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "condition_ID",
                  "condition_ID desc",
                  "category",
                  "category desc",
                  "value",
                  "value desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "condition_ID",
                  "category",
                  "value",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "condition"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved value list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateConditionValueListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single value list item of a template condition.",
        "tags": [
          "Template Condition",
          "Template Condition Value List Item"
        ],
        "requestBody": {
          "description": "Value entry in a template condition value list; mirrors ConditionValueListItems",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created value list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionArticleListItems": {
      "get": {
        "summary": "Retrieves a list of template discount action article list items.",
        "tags": [
          "Template Discount Action Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "fixedPrice",
                  "fixedPrice desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "ean",
                  "fixedPrice",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action article list item.",
        "tags": [
          "Template Discount Action Article List Item"
        ],
        "requestBody": {
          "description": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionArticleListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action article list item.",
        "tags": [
          "Template Discount Action Article List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "ean",
                  "fixedPrice",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action article list item.",
        "tags": [
          "Template Discount Action Article List Item"
        ],
        "requestBody": {
          "description": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action article list item.",
        "tags": [
          "Template Discount Action Article List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionArticleListItems({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a template discount action article list item.",
        "tags": [
          "Template Discount Action Article List Item",
          "Template Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionBundleComponents": {
      "get": {
        "summary": "Retrieves a list of template discount action bundle components.",
        "tags": [
          "Template Discount Action Bundle Component"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "minQuantity",
                  "maxQuantity",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action bundle components",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionBundleComponents",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action bundle component.",
        "tags": [
          "Template Discount Action Bundle Component"
        ],
        "requestBody": {
          "description": "Mirrors BundleComponents for template-side BUNDLE actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action bundle component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionBundleComponents({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action bundle component.",
        "tags": [
          "Template Discount Action Bundle Component"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "minQuantity",
                  "maxQuantity",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action bundle component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action bundle component.",
        "tags": [
          "Template Discount Action Bundle Component"
        ],
        "requestBody": {
          "description": "Mirrors BundleComponents for template-side BUNDLE actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action bundle component.",
        "tags": [
          "Template Discount Action Bundle Component"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionBundleComponents({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a template discount action bundle component.",
        "tags": [
          "Template Discount Action Bundle Component",
          "Template Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusionArticleListItems": {
      "get": {
        "summary": "Retrieves a list of template discount action exclusion article list items.",
        "tags": [
          "Template Discount Action Exclusion Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusion_ID",
                  "exclusion_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusion_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action exclusion article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionExclusionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action exclusion article list item.",
        "tags": [
          "Template Discount Action Exclusion Article List Item"
        ],
        "requestBody": {
          "description": "Mirrors ExclusionArticleListItems for template-side exclusion lists",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action exclusion article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusionArticleListItems({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action exclusion article list item.",
        "tags": [
          "Template Discount Action Exclusion Article List Item"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusion_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action exclusion article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action exclusion article list item.",
        "tags": [
          "Template Discount Action Exclusion Article List Item"
        ],
        "requestBody": {
          "description": "Mirrors ExclusionArticleListItems for template-side exclusion lists",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action exclusion article list item.",
        "tags": [
          "Template Discount Action Exclusion Article List Item"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusionArticleListItems({ID})/exclusion": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves exclusion of a template discount action exclusion article list item.",
        "tags": [
          "Template Discount Action Exclusion Article List Item",
          "Template Discount Action Exclusion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusions": {
      "get": {
        "summary": "Retrieves a list of template discount action exclusions.",
        "tags": [
          "Template Discount Action Exclusion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "action_ID",
                  "action_ID desc",
                  "exclusionType",
                  "exclusionType desc",
                  "articleNumber",
                  "articleNumber desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "articleGroupId",
                  "articleGroupId desc",
                  "manufacturer",
                  "manufacturer desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action exclusions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionExclusions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion"
        ],
        "requestBody": {
          "description": "Mirrors ActionExclusions for template-side discount exclusions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion"
        ],
        "requestBody": {
          "description": "Mirrors ActionExclusions for template-side discount exclusions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusions({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion",
          "Template Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusions({ID})/articleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves article group of a template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionExclusions({ID})/exclusionArticleListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of exclusion article list items of a template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion",
          "Template Discount Action Exclusion Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "exclusion_ID",
                  "exclusion_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "exclusion_ID",
                  "articleNumber",
                  "ean",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "exclusion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusion article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionExclusionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single exclusion article list item of a template discount action exclusion.",
        "tags": [
          "Template Discount Action Exclusion",
          "Template Discount Action Exclusion Article List Item"
        ],
        "requestBody": {
          "description": "Mirrors ExclusionArticleListItems for template-side exclusion lists",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created exclusion article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionQuantityTiers": {
      "get": {
        "summary": "Retrieves a list of template discount action quantity tiers.",
        "tags": [
          "Template Discount Action Quantity Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "minQuantity",
                  "minQuantity desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "minQuantity",
                  "discountType",
                  "discountValue",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action quantity tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionQuantityTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action quantity tier.",
        "tags": [
          "Template Discount Action Quantity Tier"
        ],
        "requestBody": {
          "description": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action quantity tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionQuantityTiers({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action quantity tier.",
        "tags": [
          "Template Discount Action Quantity Tier"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "minQuantity",
                  "discountType",
                  "discountValue",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action quantity tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action quantity tier.",
        "tags": [
          "Template Discount Action Quantity Tier"
        ],
        "requestBody": {
          "description": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action quantity tier.",
        "tags": [
          "Template Discount Action Quantity Tier"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionQuantityTiers({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a template discount action quantity tier.",
        "tags": [
          "Template Discount Action Quantity Tier",
          "Template Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionScaledTiers": {
      "get": {
        "summary": "Retrieves a list of template discount action scaled tiers.",
        "tags": [
          "Template Discount Action Scaled Receipt Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "thresholdAmount",
                  "thresholdAmount desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "thresholdAmount",
                  "discountType",
                  "discountValue",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action scaled tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionScaledTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action scaled tier.",
        "tags": [
          "Template Discount Action Scaled Receipt Tier"
        ],
        "requestBody": {
          "description": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action scaled tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionScaledTiers({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action scaled tier.",
        "tags": [
          "Template Discount Action Scaled Receipt Tier"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "thresholdAmount",
                  "discountType",
                  "discountValue",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action scaled tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action scaled tier.",
        "tags": [
          "Template Discount Action Scaled Receipt Tier"
        ],
        "requestBody": {
          "description": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action scaled tier.",
        "tags": [
          "Template Discount Action Scaled Receipt Tier"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActionScaledTiers({ID})/action": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action of a template discount action scaled receipt tier.",
        "tags": [
          "Template Discount Action Scaled Receipt Tier",
          "Template Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions": {
      "get": {
        "summary": "Retrieves a list of template discount actions.",
        "tags": [
          "Template Discount Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "template_ID",
                  "template_ID desc",
                  "actionType",
                  "actionType desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "maxDiscountAmount",
                  "maxDiscountAmount desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleNumber",
                  "targetArticleNumber desc",
                  "targetArticleGroupId",
                  "targetArticleGroupId desc",
                  "includeSubGroups",
                  "includeSubGroups desc",
                  "targetArticleList",
                  "targetArticleList desc",
                  "selectionType",
                  "selectionType desc",
                  "applicationQuantityMode",
                  "applicationQuantityMode desc",
                  "applicationQuantity",
                  "applicationQuantity desc",
                  "targetCouponType_ID",
                  "targetCouponType_ID desc",
                  "distributionMode",
                  "distributionMode desc",
                  "maxBundles",
                  "maxBundles desc",
                  "freeItemArticleNumber",
                  "freeItemArticleNumber desc",
                  "freeItemQuantity",
                  "freeItemQuantity desc",
                  "restrictToOnePerBasket",
                  "restrictToOnePerBasket desc",
                  "freeItemReferencePrice",
                  "freeItemReferencePrice desc",
                  "maxFreeUnits",
                  "maxFreeUnits desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template discount action.",
        "tags": [
          "Template Discount Action"
        ],
        "requestBody": {
          "description": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template discount action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template discount action.",
        "tags": [
          "Template Discount Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "actionType",
                  "discountType",
                  "discountValue",
                  "maxDiscountAmount",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleNumber",
                  "targetArticleGroupId",
                  "includeSubGroups",
                  "targetArticleList",
                  "selectionType",
                  "applicationQuantityMode",
                  "applicationQuantity",
                  "targetCouponType_ID",
                  "distributionMode",
                  "maxBundles",
                  "freeItemArticleNumber",
                  "freeItemQuantity",
                  "restrictToOnePerBasket",
                  "freeItemReferencePrice",
                  "maxFreeUnits",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "actionTypeText",
                  "discountTypeText",
                  "targetArticle",
                  "targetArticleGroup",
                  "targetCouponType",
                  "scaledTiers",
                  "quantityTiers",
                  "bundleComponents",
                  "articleListItems",
                  "exclusions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template discount action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template discount action.",
        "tags": [
          "Template Discount Action"
        ],
        "requestBody": {
          "description": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template discount action.",
        "tags": [
          "Template Discount Action"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/actionTypeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves action type text of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Action Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved action type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ActionTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/articleListItems": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of article list items of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Article List Item"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "ean",
                  "ean desc",
                  "fixedPrice",
                  "fixedPrice desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "ean",
                  "fixedPrice",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved article list items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionArticleListItems",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single article list item of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Article List Item"
        ],
        "requestBody": {
          "description": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created article list item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/bundleComponents": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of bundle components of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Bundle Component"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "articleNumber",
                  "articleNumber desc",
                  "minQuantity",
                  "minQuantity desc",
                  "maxQuantity",
                  "maxQuantity desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "articleNumber",
                  "minQuantity",
                  "maxQuantity",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved bundle components",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionBundleComponents",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single bundle component of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Bundle Component"
        ],
        "requestBody": {
          "description": "Mirrors BundleComponents for template-side BUNDLE actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created bundle component",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/discountTypeText": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves discount type text of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Discount Types"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved discount type text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.DiscountTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/exclusions": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of exclusions of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Exclusion"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "action_ID",
                  "action_ID desc",
                  "exclusionType",
                  "exclusionType desc",
                  "articleNumber",
                  "articleNumber desc",
                  "articleGroup_ID",
                  "articleGroup_ID desc",
                  "articleGroupId",
                  "articleGroupId desc",
                  "manufacturer",
                  "manufacturer desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "action_ID",
                  "exclusionType",
                  "articleNumber",
                  "articleGroup_ID",
                  "articleGroupId",
                  "manufacturer",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action",
                  "articleGroup",
                  "exclusionArticleListItems"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved exclusions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionExclusions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single exclusion of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Exclusion"
        ],
        "requestBody": {
          "description": "Mirrors ActionExclusions for template-side discount exclusions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created exclusion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/quantityTiers": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of quantity tiers of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Quantity Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "minQuantity",
                  "minQuantity desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "minQuantity",
                  "discountType",
                  "discountValue",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved quantity tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionQuantityTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single quantity tier of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Quantity Tier"
        ],
        "requestBody": {
          "description": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025)",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created quantity tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/scaledTiers": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of scaled tiers of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Scaled Receipt Tier"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "action_ID",
                  "action_ID desc",
                  "thresholdAmount",
                  "thresholdAmount desc",
                  "discountType",
                  "discountType desc",
                  "discountValue",
                  "discountValue desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "action_ID",
                  "thresholdAmount",
                  "discountType",
                  "discountValue",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "action"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved scaled tiers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateDiscountActionScaledTiers",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single scaled tier of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Template Discount Action Scaled Receipt Tier"
        ],
        "requestBody": {
          "description": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created scaled tier",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/targetArticle": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/targetArticleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article group of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/targetCouponType": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target coupon type of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Coupon Type"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "name",
                  "type",
                  "status",
                  "prefix",
                  "codeLength",
                  "maxRedemptions",
                  "maxRedemptionsPerCustomer",
                  "validFrom",
                  "validTo",
                  "isStackable",
                  "isExclusive",
                  "codeConfiguration_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "typeText",
                  "statusText",
                  "codeConfiguration",
                  "codes",
                  "promotions"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target coupon type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.CouponTypes"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateDiscountActions({ID})/template": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves template of a template discount action.",
        "tags": [
          "Template Discount Action",
          "Promotion Template"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "useCase_code",
                  "type_code",
                  "priorityGroup_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "useCase",
                  "type",
                  "priorityGroup",
                  "conditions",
                  "discountActions",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateLoyaltyActions": {
      "get": {
        "summary": "Retrieves a list of template loyalty actions.",
        "tags": [
          "Template Loyalty Action"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "template_ID",
                  "template_ID desc",
                  "loyaltyActionType",
                  "loyaltyActionType desc",
                  "pointsValue",
                  "pointsValue desc",
                  "multiplier",
                  "multiplier desc",
                  "conversionRate",
                  "conversionRate desc",
                  "targetScope",
                  "targetScope desc",
                  "targetArticle_ID",
                  "targetArticle_ID desc",
                  "targetArticleGroup_ID",
                  "targetArticleGroup_ID desc",
                  "targetArticleList",
                  "targetArticleList desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "loyaltyActionType",
                  "pointsValue",
                  "multiplier",
                  "conversionRate",
                  "targetScope",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleList",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "targetArticle",
                  "targetArticleGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template loyalty actions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of TemplateLoyaltyActions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single template loyalty action.",
        "tags": [
          "Template Loyalty Action"
        ],
        "requestBody": {
          "description": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created template loyalty action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateLoyaltyActions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single template loyalty action.",
        "tags": [
          "Template Loyalty Action"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "template_ID",
                  "loyaltyActionType",
                  "pointsValue",
                  "multiplier",
                  "conversionRate",
                  "targetScope",
                  "targetArticle_ID",
                  "targetArticleGroup_ID",
                  "targetArticleList",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "template",
                  "targetArticle",
                  "targetArticleGroup"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template loyalty action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single template loyalty action.",
        "tags": [
          "Template Loyalty Action"
        ],
        "requestBody": {
          "description": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single template loyalty action.",
        "tags": [
          "Template Loyalty Action"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateLoyaltyActions({ID})/targetArticle": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article of a template loyalty action.",
        "tags": [
          "Template Loyalty Action",
          "Article"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleNumber",
                  "name",
                  "ean",
                  "manufacturer",
                  "category",
                  "source",
                  "articleType",
                  "discountable",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "groupAssignments",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.Articles"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateLoyaltyActions({ID})/targetArticleGroup": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves target article group of a template loyalty action.",
        "tags": [
          "Template Loyalty Action",
          "Article Group"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "articleGroupId",
                  "name",
                  "description",
                  "type",
                  "parentGroup_ID",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "parentGroup",
                  "subGroups",
                  "items",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved target article group",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/TemplateLoyaltyActions({ID})/template": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves template of a template loyalty action.",
        "tags": [
          "Template Loyalty Action",
          "Promotion Template"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "code",
                  "name",
                  "description",
                  "useCase_code",
                  "type_code",
                  "priorityGroup_ID",
                  "tenantId",
                  "minorVersion"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "useCase",
                  "type",
                  "priorityGroup",
                  "conditions",
                  "discountActions",
                  "loyaltyActions",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/UseCases": {
      "get": {
        "summary": "Retrieves a list of use cases.",
        "tags": [
          "Use Cases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved use cases",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of UseCases",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.UseCases"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single use case.",
        "tags": [
          "Use Cases"
        ],
        "requestBody": {
          "description": "New use case",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.UseCases-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created use case",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.UseCases"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/UseCases('{code}')": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single use case.",
        "tags": [
          "Use Cases"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          },
          {
            "name": "$expand",
            "description": "The value of $expand query option is a comma-separated list of navigation property names, stream property names, or $value indicating the stream content of a media-entity. The corresponding related entities and stream values will be represented inline, see [Expand](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionexpand)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "*",
                  "texts",
                  "localized"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved use case",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.UseCases"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single use case.",
        "tags": [
          "Use Cases"
        ],
        "requestBody": {
          "description": "New property values",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.UseCases-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single use case.",
        "tags": [
          "Use Cases"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/UseCases('{code}')/localized": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves localized of a use case.",
        "tags": [
          "Use Cases",
          "Use Cases texts"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved localized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.UseCases_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/UseCases('{code}')/texts": {
      "parameters": [
        {
          "description": "key: code",
          "in": "path",
          "name": "code",
          "required": true,
          "schema": {
            "type": "string",
            "maxLength": 30
          }
        }
      ],
      "get": {
        "summary": "Retrieves a list of texts of a use case.",
        "tags": [
          "Use Cases",
          "Use Cases texts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "locale desc",
                  "name",
                  "name desc",
                  "descr",
                  "descr desc",
                  "code",
                  "code desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "locale",
                  "name",
                  "descr",
                  "code"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved texts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of UseCases_texts",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.UseCases_texts"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single text of a use case.",
        "tags": [
          "Use Cases",
          "Use Cases texts"
        ],
        "requestBody": {
          "description": "New text",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.UseCases_texts-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created text",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.UseCases_texts"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/WebhookSubscriptions": {
      "get": {
        "summary": "Retrieves a list of webhook subscriptions.",
        "tags": [
          "Webhook Subscription"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/top"
          },
          {
            "$ref": "#/components/parameters/skip"
          },
          {
            "$ref": "#/components/parameters/search"
          },
          {
            "name": "$filter",
            "description": "Filter items by property values, see [Filtering](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionfilter)",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/count"
          },
          {
            "name": "$orderby",
            "description": "Order items by property values, see [Sorting](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionorderby)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "ID desc",
                  "createdAt",
                  "createdAt desc",
                  "createdBy",
                  "createdBy desc",
                  "modifiedAt",
                  "modifiedAt desc",
                  "modifiedBy",
                  "modifiedBy desc",
                  "tenantId",
                  "tenantId desc",
                  "callbackUrl",
                  "callbackUrl desc",
                  "secretHash",
                  "secretHash desc",
                  "eventFilter",
                  "eventFilter desc",
                  "active",
                  "active desc",
                  "secretEncrypted",
                  "secretEncrypted desc",
                  "maxAttempts",
                  "maxAttempts desc",
                  "backoffPolicy",
                  "backoffPolicy desc",
                  "retryIntervalMs",
                  "retryIntervalMs desc",
                  "secret",
                  "secret desc",
                  "minorVersion",
                  "minorVersion desc"
                ]
              }
            }
          },
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "callbackUrl",
                  "secretHash",
                  "eventFilter",
                  "active",
                  "secretEncrypted",
                  "maxAttempts",
                  "backoffPolicy",
                  "retryIntervalMs",
                  "secret",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved webhook subscriptions",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "Collection of WebhookSubscriptions",
                  "properties": {
                    "@count": {
                      "$ref": "#/components/schemas/count"
                    },
                    "value": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions"
                      }
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "post": {
        "summary": "Creates a single webhook subscription.",
        "tags": [
          "Webhook Subscription"
        ],
        "requestBody": {
          "description": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions-create"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/WebhookSubscriptions({ID})": {
      "parameters": [
        {
          "description": "key: ID",
          "in": "path",
          "name": "ID",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      ],
      "get": {
        "summary": "Retrieves a single webhook subscription.",
        "tags": [
          "Webhook Subscription"
        ],
        "parameters": [
          {
            "name": "$select",
            "description": "Select properties to be returned, see [Select](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionselect)",
            "in": "query",
            "explode": false,
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "type": "string",
                "enum": [
                  "ID",
                  "createdAt",
                  "createdBy",
                  "modifiedAt",
                  "modifiedBy",
                  "tenantId",
                  "callbackUrl",
                  "secretHash",
                  "eventFilter",
                  "active",
                  "secretEncrypted",
                  "maxAttempts",
                  "backoffPolicy",
                  "retryIntervalMs",
                  "secret",
                  "minorVersion"
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieved webhook subscription",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions"
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "patch": {
        "summary": "Changes a single webhook subscription.",
        "tags": [
          "Webhook Subscription"
        ],
        "requestBody": {
          "description": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions-update"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      },
      "delete": {
        "summary": "Deletes a single webhook subscription.",
        "tags": [
          "Webhook Subscription"
        ],
        "responses": {
          "204": {
            "description": "Success"
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        }
      }
    },
    "/WebhookSubscriptions({ID})/PublicAPI.testDelivery": {
      "post": {
        "summary": "Invokes action testDelivery",
        "tags": [
          "Webhook Subscription"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.return_PublicAPI_WebhookSubscriptions_testDelivery"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "parameters": [
          {
            "description": "key: ID",
            "in": "path",
            "name": "ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "01234567-89ab-cdef-0123-456789abcdef"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/createPromotionFromTemplate": {
      "post": {
        "summary": "Create a new DRAFT Promotion (with conditions + discount/loyalty actions) from an existing PromotionTemplate. Returns the new Promotion UUID. Non-idempotent — each call creates a new Promotion; do not blind-retry.",
        "tags": [
          "Service Operations"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "value": {
                      "type": "string",
                      "format": "uuid",
                      "example": "01234567-89ab-cdef-0123-456789abcdef",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "templateId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/excludeDeployment": {
      "post": {
        "summary": "Invokes action excludeDeployment",
        "tags": [
          "Service Operations"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.return_PublicAPI_excludeDeployment"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "deploymentId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  },
                  "reason": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/forceFullSync": {
      "post": {
        "summary": "Invokes action forceFullSync",
        "tags": [
          "Service Operations"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.return_PublicAPI_forceFullSync"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "deploymentId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/generateCoupons": {
      "post": {
        "summary": "Invokes action generateCoupons",
        "tags": [
          "Service Operations"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.return_PublicAPI_generateCoupons"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "couponTypeId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  },
                  "count": {
                    "type": "integer",
                    "format": "int32",
                    "nullable": true
                  },
                  "batchName": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reincludeDeployment": {
      "post": {
        "summary": "Invokes action reincludeDeployment",
        "tags": [
          "Service Operations"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PublicAPI.return_PublicAPI_reincludeDeployment"
                    }
                  ],
                  "nullable": true
                }
              }
            }
          },
          "4XX": {
            "$ref": "#/components/responses/error"
          }
        },
        "requestBody": {
          "description": "Action parameters",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "deploymentId": {
                    "type": "string",
                    "format": "uuid",
                    "example": "01234567-89ab-cdef-0123-456789abcdef",
                    "nullable": true
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PublicAPI.ActionArticleListItems": {
        "title": "Article entry in an action-level article list for discount targeting",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions"
              }
            ],
            "description": "The owning discount action this article list item belongs to"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning discount action this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number the discount targets"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          },
          "fixedPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Optional unit price override for this article"
          }
        }
      },
      "PublicAPI.ActionArticleListItems-create": {
        "title": "Article entry in an action-level article list for discount targeting (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning discount action this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number the discount targets"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          },
          "fixedPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Optional unit price override for this article"
          }
        }
      },
      "PublicAPI.ActionArticleListItems-update": {
        "title": "Article entry in an action-level article list for discount targeting (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning discount action this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number the discount targets"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          },
          "fixedPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Optional unit price override for this article"
          }
        }
      },
      "PublicAPI.ActionExclusions": {
        "title": "Rule excluding specific articles from receiving a discount",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions"
              }
            ],
            "description": "The owning discount action this exclusion belongs to"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning discount action this exclusion belongs to"
          },
          "exclusionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "MANUFACTURER"
            ],
            "description": "Type of exclusion determining which articles are removed"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "nullable": true,
            "description": "Excluded article number (for ARTICLE exclusion type)"
          },
          "articleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true,
            "description": "Excluded article group (for ARTICLE_GROUP exclusion type)"
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Excluded article group (for ARTICLE_GROUP exclusion type)"
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Free-text article group identifier for exclusion (standalone mode)"
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Excluded manufacturer name (for MANUFACTURER exclusion type)"
          },
          "exclusionArticleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems"
            },
            "description": "Inline article list for ARTICLE_LIST exclusion type"
          },
          "exclusionArticleListItems@count": {
            "$ref": "#/components/schemas/count"
          }
        }
      },
      "PublicAPI.ActionExclusions-create": {
        "title": "Rule excluding specific articles from receiving a discount (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning discount action this exclusion belongs to"
          },
          "exclusionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "MANUFACTURER"
            ],
            "description": "Type of exclusion determining which articles are removed"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "nullable": true,
            "description": "Excluded article number (for ARTICLE exclusion type)"
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Excluded article group (for ARTICLE_GROUP exclusion type)"
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Free-text article group identifier for exclusion (standalone mode)"
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Excluded manufacturer name (for MANUFACTURER exclusion type)"
          },
          "exclusionArticleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST exclusion type"
          }
        }
      },
      "PublicAPI.ActionExclusions-update": {
        "title": "Rule excluding specific articles from receiving a discount (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning discount action this exclusion belongs to"
          },
          "exclusionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "MANUFACTURER"
            ],
            "description": "Type of exclusion determining which articles are removed"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "nullable": true,
            "description": "Excluded article number (for ARTICLE exclusion type)"
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Excluded article group (for ARTICLE_GROUP exclusion type)"
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Free-text article group identifier for exclusion (standalone mode)"
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Excluded manufacturer name (for MANUFACTURER exclusion type)"
          },
          "exclusionArticleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST exclusion type"
          }
        }
      },
      "PublicAPI.ActionTypes": {
        "title": "ActionTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ActionTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ActionTypes_texts": {
        "title": "ActionTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        }
      },
      "PublicAPI.ActionTypes_texts-create": {
        "title": "ActionTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ApplicationQuantityModes": {
        "title": "ApplicationQuantityModes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ApplicationQuantityModes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ApplicationQuantityModes_texts": {
        "title": "ApplicationQuantityModes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        }
      },
      "PublicAPI.ApplicationQuantityModes_texts-create": {
        "title": "ApplicationQuantityModes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ArticleGroupItems": {
        "title": "Assignment of an article to an article group",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "description": "The owning article group"
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning article group"
          },
          "article": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles"
              }
            ],
            "description": "The assigned article"
          },
          "article_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned article"
          }
        }
      },
      "PublicAPI.ArticleGroupItems-create": {
        "title": "Assignment of an article to an article group (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning article group"
          },
          "article_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned article"
          }
        }
      },
      "PublicAPI.ArticleGroupItems-update": {
        "title": "Assignment of an article to an article group (for update)",
        "type": "object",
        "properties": {
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning article group"
          },
          "article_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned article"
          }
        }
      },
      "PublicAPI.ArticleGroups": {
        "title": "Logical grouping of articles for promotion targeting",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "description": "Business identifier (e.g. FW, TOP, ELEC)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the article group"
          },
          "type": {
            "type": "string",
            "enum": [
              "BRAND",
              "CATEGORY",
              "CUSTOM"
            ],
            "default": "CUSTOM",
            "description": "Classification of the group (e.g. BRAND, CATEGORY, CUSTOM)"
          },
          "parentGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true,
            "description": "Optional parent group for hierarchical structures"
          },
          "parentGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional parent group for hierarchical structures"
          },
          "subGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
            },
            "description": "Child groups in the hierarchy"
          },
          "subGroups@count": {
            "$ref": "#/components/schemas/count"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
            },
            "description": "Articles assigned to this group (read-only; manage from Article page)"
          },
          "items@count": {
            "$ref": "#/components/schemas/count"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts"
              }
            ],
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.ArticleGroups-create": {
        "title": "Logical grouping of articles for promotion targeting (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "description": "Business identifier (e.g. FW, TOP, ELEC)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the article group"
          },
          "type": {
            "type": "string",
            "enum": [
              "BRAND",
              "CATEGORY",
              "CUSTOM"
            ],
            "default": "CUSTOM",
            "description": "Classification of the group (e.g. BRAND, CATEGORY, CUSTOM)"
          },
          "parentGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional parent group for hierarchical structures"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts-create"
            }
          }
        }
      },
      "PublicAPI.ArticleGroups-update": {
        "title": "Logical grouping of articles for promotion targeting (for update)",
        "type": "object",
        "properties": {
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "description": "Business identifier (e.g. FW, TOP, ELEC)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the article group"
          },
          "type": {
            "type": "string",
            "enum": [
              "BRAND",
              "CATEGORY",
              "CUSTOM"
            ],
            "default": "CUSTOM",
            "description": "Classification of the group (e.g. BRAND, CATEGORY, CUSTOM)"
          },
          "parentGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional parent group for hierarchical structures"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroups_texts-create"
            }
          }
        }
      },
      "PublicAPI.ArticleGroups_texts": {
        "title": "ArticleGroups_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the article group"
          }
        }
      },
      "PublicAPI.ArticleGroups_texts-create": {
        "title": "ArticleGroups_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the article group"
          }
        },
        "required": [
          "locale"
        ]
      },
      "PublicAPI.ArticleImportJobItems": {
        "title": "Deprecated since Sprint 115. Use ImportJobErrors for PublicAPI bulk import error tracking. ArticleImportJobItems tracks POS /pos/articles/import-batch job items only.",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "job": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleImportJobs"
              }
            ],
            "description": "Parent import job"
          },
          "job_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "Parent import job"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "ean": {
            "type": "string",
            "maxLength": 13,
            "nullable": true
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "category": {
            "type": "string",
            "maxLength": 100,
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "CREATED",
              "UPDATED",
              "FAILED"
            ],
            "default": "PENDING",
            "description": "Processing result for this article"
          },
          "errorMessage": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Error details if processing failed"
          },
          "article": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles"
              }
            ],
            "nullable": true,
            "description": "Reference to the created/updated Article record"
          },
          "article_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Reference to the created/updated Article record"
          }
        }
      },
      "PublicAPI.ArticleImportJobs": {
        "title": "Deprecated since Sprint 115. Use ImportJobs + ImportJobErrors for PublicAPI bulk import tracking. ArticleImportJobs tracks POS /pos/articles/import-batch jobs only.",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Optional display name or source identifier for the import"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED"
            ],
            "default": "PENDING",
            "description": "Current processing status of the import job"
          },
          "totalItems": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "Total number of articles in this import batch"
          },
          "successCount": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "Number of successfully imported articles (created + updated)"
          },
          "failedCount": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "Number of articles that failed to import"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp when processing began"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp when processing finished"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant (auto-filled, not visible to user)"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleImportJobItems"
            },
            "description": "Individual article import results"
          },
          "items@count": {
            "$ref": "#/components/schemas/count"
          }
        }
      },
      "PublicAPI.ArticleSources": {
        "title": "ArticleSources",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleSources_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleSources_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ArticleSources_texts": {
        "title": "ArticleSources_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.ArticleSources_texts-create": {
        "title": "ArticleSources_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.Articles": {
        "title": "Product master data used for promotion condition matching",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "Unique business identifier for the article (SKU)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article"
          },
          "ean": {
            "type": "string",
            "maxLength": 13,
            "nullable": true,
            "description": "European Article Number (barcode)"
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name of the article manufacturer"
          },
          "category": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "Product category for classification"
          },
          "source": {
            "type": "string",
            "enum": [
              "MANUAL",
              "IMPORTED"
            ],
            "default": "MANUAL",
            "description": "Origin of the article record (manual entry or external import)"
          },
          "groupAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems"
            },
            "description": "Article groups this article belongs to"
          },
          "groupAssignments@count": {
            "$ref": "#/components/schemas/count"
          },
          "articleType": {
            "type": "string",
            "enum": [
              "STANDARD",
              "GENERIC",
              "VARIANT",
              "SALES_SET"
            ],
            "nullable": true,
            "description": "Profile B classification (DRFOUT ProductCategory)"
          },
          "discountable": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Per Profile B from pointOfSaleProcessingCondition.discountAllowedIndicator (default true)"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Articles_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles_texts"
              }
            ],
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Articles-create": {
        "title": "Product master data used for promotion condition matching (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "Unique business identifier for the article (SKU)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article"
          },
          "ean": {
            "type": "string",
            "maxLength": 13,
            "nullable": true,
            "description": "European Article Number (barcode)"
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name of the article manufacturer"
          },
          "category": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "Product category for classification"
          },
          "source": {
            "type": "string",
            "enum": [
              "MANUAL",
              "IMPORTED"
            ],
            "default": "MANUAL",
            "description": "Origin of the article record (manual entry or external import)"
          },
          "groupAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems-create"
            },
            "description": "Article groups this article belongs to"
          },
          "articleType": {
            "type": "string",
            "enum": [
              "STANDARD",
              "GENERIC",
              "VARIANT",
              "SALES_SET"
            ],
            "nullable": true,
            "description": "Profile B classification (DRFOUT ProductCategory)"
          },
          "discountable": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Per Profile B from pointOfSaleProcessingCondition.discountAllowedIndicator (default true)"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Articles_texts-create"
            }
          }
        },
        "required": [
          "articleNumber"
        ]
      },
      "PublicAPI.Articles-update": {
        "title": "Product master data used for promotion condition matching (for update)",
        "type": "object",
        "properties": {
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "Unique business identifier for the article (SKU)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article"
          },
          "ean": {
            "type": "string",
            "maxLength": 13,
            "nullable": true,
            "description": "European Article Number (barcode)"
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Name of the article manufacturer"
          },
          "category": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "Product category for classification"
          },
          "source": {
            "type": "string",
            "enum": [
              "MANUAL",
              "IMPORTED"
            ],
            "default": "MANUAL",
            "description": "Origin of the article record (manual entry or external import)"
          },
          "groupAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ArticleGroupItems-create"
            },
            "description": "Article groups this article belongs to"
          },
          "articleType": {
            "type": "string",
            "enum": [
              "STANDARD",
              "GENERIC",
              "VARIANT",
              "SALES_SET"
            ],
            "nullable": true,
            "description": "Profile B classification (DRFOUT ProductCategory)"
          },
          "discountable": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Per Profile B from pointOfSaleProcessingCondition.discountAllowedIndicator (default true)"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Articles_texts-create"
            }
          }
        }
      },
      "PublicAPI.Articles_texts": {
        "title": "Articles_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article"
          }
        }
      },
      "PublicAPI.Articles_texts-create": {
        "title": "Articles_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the article"
          }
        },
        "required": [
          "locale"
        ]
      },
      "PublicAPI.AuditLogs": {
        "title": "AuditLogs",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "actor": {
            "type": "string",
            "maxLength": 128,
            "nullable": true
          },
          "action": {
            "type": "string",
            "maxLength": 64,
            "nullable": true
          },
          "entityType": {
            "type": "string",
            "maxLength": 128,
            "nullable": true
          },
          "entityId": {
            "type": "string",
            "maxLength": 64,
            "nullable": true
          },
          "entityName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "note": {
            "type": "string",
            "maxLength": 1024,
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "maxLength": 64,
            "nullable": true
          }
        }
      },
      "PublicAPI.BudgetConsumptions": {
        "title": "Audit record of a budget consumption event",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Budgets"
              }
            ],
            "description": "The budget that was consumed"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget that was consumed"
          },
          "transactionId": {
            "type": "string",
            "maxLength": 50,
            "description": "POS transaction identifier where the consumption occurred"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Amount consumed from the budget"
          },
          "promotionId": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "ID of the promotion that triggered the consumption"
          },
          "consumedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Timestamp when the budget was consumed"
          },
          "customerId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Customer identifier for per-customer cap tracking. Null for anonymous."
          }
        }
      },
      "PublicAPI.BudgetConsumptions-create": {
        "title": "Audit record of a budget consumption event (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget that was consumed"
          },
          "transactionId": {
            "type": "string",
            "maxLength": 50,
            "description": "POS transaction identifier where the consumption occurred"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Amount consumed from the budget"
          },
          "promotionId": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "ID of the promotion that triggered the consumption"
          },
          "consumedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Timestamp when the budget was consumed"
          },
          "customerId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Customer identifier for per-customer cap tracking. Null for anonymous."
          }
        }
      },
      "PublicAPI.BudgetNotifications": {
        "title": "Threshold-based alert rule for budget consumption monitoring",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Budgets"
              }
            ],
            "description": "The budget this notification rule belongs to"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget this notification rule belongs to"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "description": "Consumption percentage threshold that triggers the notification (e.g. 50, 75, 90, 100)"
          },
          "notificationEmail": {
            "type": "string",
            "maxLength": 255,
            "description": "Email address to receive the alert when threshold is exceeded"
          },
          "triggered": {
            "type": "boolean",
            "default": false,
            "description": "Whether this notification has already been triggered"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.BudgetNotifications-create": {
        "title": "Threshold-based alert rule for budget consumption monitoring (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget this notification rule belongs to"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "description": "Consumption percentage threshold that triggers the notification (e.g. 50, 75, 90, 100)"
          },
          "notificationEmail": {
            "type": "string",
            "maxLength": 255,
            "description": "Email address to receive the alert when threshold is exceeded"
          },
          "triggered": {
            "type": "boolean",
            "default": false,
            "description": "Whether this notification has already been triggered"
          }
        }
      },
      "PublicAPI.BudgetNotifications-update": {
        "title": "Threshold-based alert rule for budget consumption monitoring (for update)",
        "type": "object",
        "properties": {
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget this notification rule belongs to"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "description": "Consumption percentage threshold that triggers the notification (e.g. 50, 75, 90, 100)"
          },
          "notificationEmail": {
            "type": "string",
            "maxLength": 255,
            "description": "Email address to receive the alert when threshold is exceeded"
          },
          "triggered": {
            "type": "boolean",
            "default": false,
            "description": "Whether this notification has already been triggered"
          }
        }
      },
      "PublicAPI.BudgetPromotions": {
        "title": "Assignment of a promotion to a budget for spending control",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Budgets"
              }
            ],
            "description": "The owning budget"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning budget"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The promotion funded by this budget"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion funded by this budget"
          },
          "customerCapAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Max discount per customer for this specific promotion within this budget. Null = no limit."
          },
          "customerCapCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Max uses per customer for this specific promotion within this budget. Null = no limit."
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.BudgetPromotions-create": {
        "title": "Assignment of a promotion to a budget for spending control (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning budget"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion funded by this budget"
          },
          "customerCapAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Max discount per customer for this specific promotion within this budget. Null = no limit."
          },
          "customerCapCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Max uses per customer for this specific promotion within this budget. Null = no limit."
          }
        }
      },
      "PublicAPI.BudgetPromotions-update": {
        "title": "Assignment of a promotion to a budget for spending control (for update)",
        "type": "object",
        "properties": {
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning budget"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion funded by this budget"
          },
          "customerCapAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Max discount per customer for this specific promotion within this budget. Null = no limit."
          },
          "customerCapCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Max uses per customer for this specific promotion within this budget. Null = no limit."
          }
        }
      },
      "PublicAPI.BudgetStakeholders": {
        "title": "Links a stakeholder to a budget with a cost-sharing percentage",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "stakeholder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders"
              }
            ],
            "description": "The funding stakeholder"
          },
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The funding stakeholder"
          },
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Budgets"
              }
            ],
            "description": "The budget being funded"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget being funded"
          },
          "sharePercentage": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Percentage of budget cost borne by this stakeholder (0-100)"
          },
          "isPrimary": {
            "type": "boolean",
            "default": false,
            "description": "Marks this stakeholder as the budget owner (only one per budget)"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.BudgetStakeholders-create": {
        "title": "Links a stakeholder to a budget with a cost-sharing percentage (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The funding stakeholder"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget being funded"
          },
          "sharePercentage": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Percentage of budget cost borne by this stakeholder (0-100)"
          },
          "isPrimary": {
            "type": "boolean",
            "default": false,
            "description": "Marks this stakeholder as the budget owner (only one per budget)"
          }
        }
      },
      "PublicAPI.BudgetStakeholders-update": {
        "title": "Links a stakeholder to a budget with a cost-sharing percentage (for update)",
        "type": "object",
        "properties": {
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The funding stakeholder"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The budget being funded"
          },
          "sharePercentage": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Percentage of budget cost borne by this stakeholder (0-100)"
          },
          "isPrimary": {
            "type": "boolean",
            "default": false,
            "description": "Marks this stakeholder as the budget owner (only one per budget)"
          }
        }
      },
      "PublicAPI.BudgetStatuses": {
        "title": "BudgetStatuses",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetStatuses_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.BudgetStatuses_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.BudgetStatuses_texts": {
        "title": "BudgetStatuses_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.BudgetStatuses_texts-create": {
        "title": "BudgetStatuses_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.Budgets": {
        "title": "Spending limit for promotions with consumption tracking",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the budget"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "totalAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999999999999.99,
                "minimum": 0
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Maximum budget amount available for consumption"
          },
          "consumedAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Total amount consumed so far"
          },
          "remainingAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "default": 0,
            "description": "Computed remaining budget (totalAmount - consumedAmount). Maintained by the application layer."
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Currencies"
              }
            ],
            "nullable": true,
            "description": "Currency code for the budget amounts"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency code for the budget amounts"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "SCHEDULED",
              "ACTIVE",
              "EXHAUSTED",
              "EXPIRED"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status of the budget"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the budget validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the budget validity window"
          },
          "customerCapAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Max total discount any single customer may consume from this budget. Null = no limit."
          },
          "customerCapCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Max number of times any single customer may consume this budget. Null = no limit."
          },
          "stopOnExhaustion": {
            "type": "boolean",
            "default": true,
            "description": "Hard budget limit: when true, promotions stop once the budget is exhausted; when false, promotions continue with BUDGET_EXCEEDED warning."
          },
          "stakeholders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
            },
            "description": "Stakeholders funding this budget with share percentages"
          },
          "stakeholders@count": {
            "$ref": "#/components/schemas/count"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetPromotions"
            },
            "description": "Promotions funded by this budget"
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetNotifications"
            },
            "description": "Threshold-based notification rules for budget consumption alerts"
          },
          "notifications@count": {
            "$ref": "#/components/schemas/count"
          },
          "consumptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetConsumptions"
            },
            "description": "Audit trail of all budget consumptions"
          },
          "consumptions@count": {
            "$ref": "#/components/schemas/count"
          },
          "webhookSubscriptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.WebhookSubscriptions"
            },
            "description": "Webhook subscriptions matching Budget.* events (read-only filter view)"
          },
          "webhookSubscriptions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Budgets-create": {
        "title": "Spending limit for promotions with consumption tracking (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the budget"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "totalAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999999999999.99,
                "minimum": 0
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Maximum budget amount available for consumption"
          },
          "consumedAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Total amount consumed so far"
          },
          "remainingAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "default": 0,
            "description": "Computed remaining budget (totalAmount - consumedAmount). Maintained by the application layer."
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency code for the budget amounts"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "SCHEDULED",
              "ACTIVE",
              "EXHAUSTED",
              "EXPIRED"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status of the budget"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the budget validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the budget validity window"
          },
          "customerCapAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Max total discount any single customer may consume from this budget. Null = no limit."
          },
          "customerCapCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Max number of times any single customer may consume this budget. Null = no limit."
          },
          "stopOnExhaustion": {
            "type": "boolean",
            "default": true,
            "description": "Hard budget limit: when true, promotions stop once the budget is exhausted; when false, promotions continue with BUDGET_EXCEEDED warning."
          },
          "stakeholders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders-create"
            },
            "description": "Stakeholders funding this budget with share percentages"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetPromotions-create"
            },
            "description": "Promotions funded by this budget"
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetNotifications-create"
            },
            "description": "Threshold-based notification rules for budget consumption alerts"
          },
          "consumptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetConsumptions-create"
            },
            "description": "Audit trail of all budget consumptions"
          }
        },
        "required": [
          "name",
          "totalAmount"
        ]
      },
      "PublicAPI.Budgets-update": {
        "title": "Spending limit for promotions with consumption tracking (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the budget"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "totalAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999999999999.99,
                "minimum": 0
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Maximum budget amount available for consumption"
          },
          "consumedAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Total amount consumed so far"
          },
          "remainingAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "default": 0,
            "description": "Computed remaining budget (totalAmount - consumedAmount). Maintained by the application layer."
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency code for the budget amounts"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "SCHEDULED",
              "ACTIVE",
              "EXHAUSTED",
              "EXPIRED"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status of the budget"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the budget validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the budget validity window"
          },
          "customerCapAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Max total discount any single customer may consume from this budget. Null = no limit."
          },
          "customerCapCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Max number of times any single customer may consume this budget. Null = no limit."
          },
          "stopOnExhaustion": {
            "type": "boolean",
            "default": true,
            "description": "Hard budget limit: when true, promotions stop once the budget is exhausted; when false, promotions continue with BUDGET_EXCEEDED warning."
          },
          "stakeholders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders-create"
            },
            "description": "Stakeholders funding this budget with share percentages"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetPromotions-create"
            },
            "description": "Promotions funded by this budget"
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetNotifications-create"
            },
            "description": "Threshold-based notification rules for budget consumption alerts"
          },
          "consumptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetConsumptions-create"
            },
            "description": "Audit trail of all budget consumptions"
          }
        }
      },
      "PublicAPI.BulkImportResult": {
        "title": "BulkImportResult",
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "nullable": true
          },
          "statusUrl": {
            "type": "string",
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.BulkImportRow": {
        "title": "BulkImportRow",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PublicAPI.BundleComponents": {
        "title": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition.",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions"
              }
            ],
            "description": "The parent BUNDLE action this component belongs to"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent BUNDLE action this component belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "Article identifier (matches Articles.articleNumber or basket item EAN)"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1,
            "description": "Minimum number of this article required to form one bundle"
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Optional cap; null = no upper bound for this component"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.BundleComponents-create": {
        "title": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition. (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent BUNDLE action this component belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "Article identifier (matches Articles.articleNumber or basket item EAN)"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1,
            "description": "Minimum number of this article required to form one bundle"
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Optional cap; null = no upper bound for this component"
          }
        }
      },
      "PublicAPI.BundleComponents-update": {
        "title": "A required article (with min/max qty) within a BUNDLE action. Multiple components define the bundle composition. (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent BUNDLE action this component belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "description": "Article identifier (matches Articles.articleNumber or basket item EAN)"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1,
            "description": "Minimum number of this article required to form one bundle"
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Optional cap; null = no upper bound for this component"
          }
        }
      },
      "PublicAPI.CalculationConfigs": {
        "title": "CalculationConfigs",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "up_": {
            "$ref": "#/components/schemas/PublicAPI.Promotions"
          },
          "up__ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "calculationMode": {
            "type": "string",
            "enum": [
              "ADDITIVE",
              "MULTIPLICATIVE"
            ],
            "default": "ADDITIVE",
            "description": "How multiple discounts are combined"
          },
          "roundingMode": {
            "type": "string",
            "enum": [
              "ROUND_HALF_UP",
              "ROUND_DOWN",
              "ROUND_UP",
              "NONE"
            ],
            "default": "ROUND_HALF_UP",
            "description": "Rounding strategy after discount calculation"
          },
          "precision": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 2,
            "description": "Number of decimal places for rounding"
          }
        }
      },
      "PublicAPI.CalculationConfigs-create": {
        "title": "CalculationConfigs (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "up__ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "calculationMode": {
            "type": "string",
            "enum": [
              "ADDITIVE",
              "MULTIPLICATIVE"
            ],
            "default": "ADDITIVE",
            "description": "How multiple discounts are combined"
          },
          "roundingMode": {
            "type": "string",
            "enum": [
              "ROUND_HALF_UP",
              "ROUND_DOWN",
              "ROUND_UP",
              "NONE"
            ],
            "default": "ROUND_HALF_UP",
            "description": "Rounding strategy after discount calculation"
          },
          "precision": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 2,
            "description": "Number of decimal places for rounding"
          }
        }
      },
      "PublicAPI.CalculationConfigs-update": {
        "title": "CalculationConfigs (for update)",
        "type": "object",
        "properties": {
          "up__ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "calculationMode": {
            "type": "string",
            "enum": [
              "ADDITIVE",
              "MULTIPLICATIVE"
            ],
            "default": "ADDITIVE",
            "description": "How multiple discounts are combined"
          },
          "roundingMode": {
            "type": "string",
            "enum": [
              "ROUND_HALF_UP",
              "ROUND_DOWN",
              "ROUND_UP",
              "NONE"
            ],
            "default": "ROUND_HALF_UP",
            "description": "Rounding strategy after discount calculation"
          },
          "precision": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 2,
            "description": "Number of decimal places for rounding"
          }
        }
      },
      "PublicAPI.CalculationLogItems": {
        "title": "Per-item discount details for a confirmed transaction",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "calculationLog": {
            "$ref": "#/components/schemas/PublicAPI.CalculationLogs"
          },
          "calculationLog_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "lineReference": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Line reference for basket item correlation"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "SKU / article identifier"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode)"
          },
          "quantity": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.001,
                "maximum": 999999999999.999,
                "minimum": -999999999999.999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 3,
            "nullable": true,
            "description": "Number of units in the basket"
          },
          "originalPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Unit price before any discounts"
          },
          "finalPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Unit price after all discounts"
          },
          "totalDiscount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "default": 0,
            "description": "Sum of all discounts on this item"
          },
          "appliedDiscounts": {
            "type": "string",
            "format": "base64url",
            "nullable": true,
            "description": "JSON array of individual discounts applied to this item"
          },
          "resolvedTierMinQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "For QUANTITY_TIER: the minQuantity of the volume tier that was applied to this item (null otherwise)"
          },
          "discountKind": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Discriminator separating price reductions from give-aways: PRICE_DISCOUNT | GIVE_AWAY. Null for legacy rows (defaults to PRICE_DISCOUNT semantics in reporting)."
          },
          "isFreeItem": {
            "type": "boolean",
            "nullable": true,
            "description": "For FREE_ITEM gift-branch: true when this log item represents an already-in-basket line flagged as a granted free item (mirrors LineItemV2.isFreeItem). Null/false otherwise."
          },
          "freeItemPromotionId": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "For FREE_ITEM: the promotion that granted this free item (mirrors LineItemV2.freeItemPromotionId / GrantedItemV2.promotionId). Null otherwise."
          },
          "grantReference": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For FREE_ITEM grantedItems[] rows: stable reference correlating this persisted grant to GrantedItemV2.grantReference. Null for non-grant rows."
          },
          "grantedQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "For FREE_ITEM grantedItems[] rows: number of free units granted (mirrors GrantedItemV2.quantity). Null for non-grant rows."
          },
          "giveAwayValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "For FREE_ITEM grantedItems[] rows: monetary value of the give-away (mirrors GrantedItemV2.giveAwayValue.value). Null for non-grant rows."
          },
          "priceSource": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "For FREE_ITEM grantedItems[] rows: how the give-away was valued — BASKET_PRICE | REFERENCE_PRICE | MASTER_DATA | UNKNOWN_ZERO (mirrors GrantedItemV2.priceSource). Null for non-grant rows."
          }
        }
      },
      "PublicAPI.CalculationLogPromotions": {
        "title": "Per-promotion application details for a confirmed transaction",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "calculationLog": {
            "$ref": "#/components/schemas/PublicAPI.CalculationLogs"
          },
          "calculationLog_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotionId": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "ID of the applied promotion"
          },
          "promotionName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Display name of the applied promotion"
          },
          "promotionType": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Type of the promotion (ARTICLE, RECEIPT, etc.)"
          },
          "totalDiscount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "default": 0,
            "description": "Total discount amount generated by this promotion"
          },
          "couponCode": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Coupon code that triggered this promotion, if any"
          },
          "triggeredByCoupon": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this promotion was unlocked by a coupon code"
          }
        }
      },
      "PublicAPI.CalculationLogStatuses": {
        "title": "CalculationLogStatuses",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CalculationLogStatuses_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.CalculationLogStatuses_texts": {
        "title": "CalculationLogStatuses_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.CalculationLogStatuses_texts-create": {
        "title": "CalculationLogStatuses_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.CalculationLogs": {
        "title": "Audit record of a confirmed POS transaction with applied promotions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "transactionId": {
            "type": "string",
            "maxLength": 50,
            "description": "Unique POS transaction identifier"
          },
          "transactionCounter": {
            "type": "integer",
            "format": "int32",
            "description": "Server-assigned 1-indexed iteration counter scoped per (tenantId, transactionId). Backfilled to 1 for legacy v1 rows."
          },
          "confirmed": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "TRUE for the iteration row that /v2/confirm committed; FALSE on every other iteration (evaluate/simulate). At most one TRUE row per (tenantId, transactionId) — enforced by the partial-unique index uniqueConfirmedPerTx."
          },
          "kind": {
            "type": "string",
            "enum": [
              "EVALUATE",
              "SIMULATE"
            ],
            "description": "EVALUATE | SIMULATE — discriminates rows that may be confirmed (EVALUATE) from rows that must stay confirmed=FALSE (SIMULATE)."
          },
          "headerReference": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "Free-form basket-level correlation ID echoed back from RequestHeader.headerReference (PROMO-254). Opaque to the engine."
          },
          "sideEffectsStatus": {
            "type": "string",
            "enum": [
              "PENDING",
              "COMPLETED",
              "FAILED"
            ],
            "nullable": true,
            "description": "Lifecycle of the post-confirm side-effects job. NULL on un-confirmed rows; PENDING when /v2/confirm enqueues; COMPLETED|FAILED when the job resolves."
          },
          "receiptId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Receipt / ticket number from the POS"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Tenant identifier for multi-tenancy isolation"
          },
          "customerId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Pseudonymous customer identifier for telemetry aggregation. Retained as a dedicated column so analytics (distinctCustomers) remain accurate after PII redaction removes this value from the request blob. Not a name or contact — safe to store."
          },
          "posGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "POS group identifier"
          },
          "posGroupCode": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Human-readable POS group code (denormalized for audit readability)"
          },
          "posGroupName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "POS group display name (denormalized for audit readability)"
          },
          "status": {
            "type": "string",
            "enum": [
              "CALCULATED",
              "FAILED"
            ],
            "default": "CALCULATED",
            "description": "Confirmation status of the calculation"
          },
          "confirmedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Timestamp when the transaction was confirmed"
          },
          "calculatedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Timestamp when the promotion calculation was performed"
          },
          "isSimulation": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this log was created from a simulation (non-binding)"
          },
          "appliedPromotions": {
            "type": "string",
            "format": "base64url",
            "nullable": true,
            "description": "Snapshot of applied promotions as JSON for audit purposes"
          },
          "request": {
            "type": "string",
            "format": "base64url",
            "nullable": true,
            "description": "Complete original request payload sent to the confirm endpoint"
          },
          "response": {
            "type": "string",
            "format": "base64url",
            "nullable": true,
            "description": "Complete evaluation/confirm response for audit purposes"
          },
          "totalDiscount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "default": 0,
            "description": "Total discount amount applied in the transaction"
          },
          "basketTotal": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Total gross basket value before discounts at confirm time. Populated by the confirm handler. Used for Redemption Basket Uplift analytics (KPI 5)."
          },
          "couponsRedeemed": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Number of coupons redeemed in this transaction"
          },
          "budgetsConsumed": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Number of budget entries consumed in this transaction"
          },
          "retentionDate": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Date after which this log can be purged by retention cleanup"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CalculationLogItems"
            }
          },
          "items@count": {
            "$ref": "#/components/schemas/count"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CalculationLogPromotions"
            }
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          }
        }
      },
      "PublicAPI.CalculationModes": {
        "title": "CalculationModes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CalculationModes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CalculationModes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.CalculationModes_texts": {
        "title": "CalculationModes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.CalculationModes_texts-create": {
        "title": "CalculationModes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.CampaignPosGroups": {
        "title": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners.",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "campaign": {
            "$ref": "#/components/schemas/PublicAPI.Campaigns"
          },
          "campaign_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup": {
            "$ref": "#/components/schemas/PublicAPI.PosGroups"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CampaignPosGroups-create": {
        "title": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners. (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "campaign_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      },
      "PublicAPI.CampaignPosGroups-update": {
        "title": "Junction linking a Campaign to a POS Group (multi-select). Empty set = all banners. (for update)",
        "type": "object",
        "properties": {
          "campaign_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      },
      "PublicAPI.CampaignStatuses": {
        "title": "CampaignStatuses",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CampaignStatuses_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CampaignStatuses_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.CampaignStatuses_texts": {
        "title": "CampaignStatuses_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.CampaignStatuses_texts-create": {
        "title": "CampaignStatuses_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.Campaigns": {
        "title": "Container for related promotions (e.g. Easter 2026, BBQ Summer)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "description": "Short campaign code (free-form string, used for cross-system references)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the campaign"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the campaign"
          },
          "startAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the campaign window"
          },
          "endAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the campaign window"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CampaignStatuses"
              }
            ],
            "nullable": true,
            "description": "Lifecycle status of the campaign"
          },
          "status_code": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "DRAFT",
            "description": "Lifecycle status of the campaign"
          },
          "ownerStakeholder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders"
              }
            ],
            "nullable": true,
            "description": "Stakeholder responsible for the campaign"
          },
          "ownerStakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Stakeholder responsible for the campaign"
          },
          "primaryContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders"
              }
            ],
            "nullable": true,
            "description": "Accountable person for this campaign (rendered as a mailto link in the OP)."
          },
          "primaryContact_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Accountable person for this campaign (rendered as a mailto link in the OP)."
          },
          "notes": {
            "type": "string",
            "maxLength": 2000,
            "nullable": true,
            "description": "Free-form notes for campaign authors"
          },
          "mergePromotionPosGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, POS groups of attached Promotions are unioned with Campaign POS groups. When false (default), Campaign POS groups win."
          },
          "locked": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, the campaign and all its linked promotions are frozen against authoring changes. Runtime evaluation is unaffected."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "posGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups"
            },
            "description": "POS groups eligible for this campaign. Empty = all banners."
          },
          "posGroups@count": {
            "$ref": "#/components/schemas/count"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Promotions"
            },
            "description": "Promotions attached to this Campaign (read-only navigation; managed via the Promotion OP)."
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Campaigns_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Campaigns_texts"
              }
            ],
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Campaigns-create": {
        "title": "Container for related promotions (e.g. Easter 2026, BBQ Summer) (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "description": "Short campaign code (free-form string, used for cross-system references)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the campaign"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the campaign"
          },
          "startAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the campaign window"
          },
          "endAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the campaign window"
          },
          "status_code": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "DRAFT",
            "description": "Lifecycle status of the campaign"
          },
          "ownerStakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Stakeholder responsible for the campaign"
          },
          "primaryContact_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Accountable person for this campaign (rendered as a mailto link in the OP)."
          },
          "notes": {
            "type": "string",
            "maxLength": 2000,
            "nullable": true,
            "description": "Free-form notes for campaign authors"
          },
          "mergePromotionPosGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, POS groups of attached Promotions are unioned with Campaign POS groups. When false (default), Campaign POS groups win."
          },
          "locked": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, the campaign and all its linked promotions are frozen against authoring changes. Runtime evaluation is unaffected."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "posGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups-create"
            },
            "description": "POS groups eligible for this campaign. Empty = all banners."
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Campaigns_texts-create"
            }
          }
        },
        "required": [
          "code",
          "name",
          "startAt",
          "endAt"
        ]
      },
      "PublicAPI.Campaigns-update": {
        "title": "Container for related promotions (e.g. Easter 2026, BBQ Summer) (for update)",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 50,
            "description": "Short campaign code (free-form string, used for cross-system references)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the campaign"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the campaign"
          },
          "startAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the campaign window"
          },
          "endAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the campaign window"
          },
          "status_code": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "DRAFT",
            "description": "Lifecycle status of the campaign"
          },
          "ownerStakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Stakeholder responsible for the campaign"
          },
          "primaryContact_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Accountable person for this campaign (rendered as a mailto link in the OP)."
          },
          "notes": {
            "type": "string",
            "maxLength": 2000,
            "nullable": true,
            "description": "Free-form notes for campaign authors"
          },
          "mergePromotionPosGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, POS groups of attached Promotions are unioned with Campaign POS groups. When false (default), Campaign POS groups win."
          },
          "locked": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, the campaign and all its linked promotions are frozen against authoring changes. Runtime evaluation is unaffected."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "posGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CampaignPosGroups-create"
            },
            "description": "POS groups eligible for this campaign. Empty = all banners."
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Campaigns_texts-create"
            }
          }
        }
      },
      "PublicAPI.Campaigns_texts": {
        "title": "Campaigns_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the campaign"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the campaign"
          }
        }
      },
      "PublicAPI.Campaigns_texts-create": {
        "title": "Campaigns_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the campaign"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the campaign"
          }
        },
        "required": [
          "locale",
          "name"
        ]
      },
      "PublicAPI.ComparisonOperators": {
        "title": "ComparisonOperators",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ComparisonOperators_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ComparisonOperators_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ComparisonOperators_texts": {
        "title": "ComparisonOperators_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.ComparisonOperators_texts-create": {
        "title": "ComparisonOperators_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ConditionArticleListItems": {
        "title": "Article entry in a condition-level article list for eligibility matching",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Conditions"
              }
            ],
            "description": "The owning condition this article list item belongs to"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning condition this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number to match against basket items"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.ConditionArticleListItems-create": {
        "title": "Article entry in a condition-level article list for eligibility matching (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning condition this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number to match against basket items"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          }
        }
      },
      "PublicAPI.ConditionArticleListItems-update": {
        "title": "Article entry in a condition-level article list for eligibility matching (for update)",
        "type": "object",
        "properties": {
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning condition this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number to match against basket items"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          }
        }
      },
      "PublicAPI.ConditionTypes": {
        "title": "ConditionTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ConditionTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ConditionTypes_texts": {
        "title": "ConditionTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        }
      },
      "PublicAPI.ConditionTypes_texts-create": {
        "title": "ConditionTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ConditionValueCategories": {
        "title": "ConditionValueCategories",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ConditionValueCategories_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ConditionValueCategories_texts": {
        "title": "ConditionValueCategories_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        }
      },
      "PublicAPI.ConditionValueCategories_texts-create": {
        "title": "ConditionValueCategories_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ConditionValueListItems": {
        "title": "Value entry in a condition-level value list for eligibility matching",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Conditions"
              }
            ],
            "description": "The owning condition this value list item belongs to"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning condition this value list item belongs to"
          },
          "category": {
            "type": "string",
            "enum": [
              "ARTICLE_NUMBER",
              "ARTICLE_GROUP_ID",
              "CUSTOMER_GROUP_ID",
              "CARD_TYPE",
              "BIN_PREFIX",
              "LOYALTY_TIER",
              "REASON_CODE",
              "PAYMENT_MEANS",
              "CUSTOMER_ID",
              "MANUFACTURER_ID",
              "CHANNEL"
            ],
            "description": "Category of the value (determines semantics)"
          },
          "value": {
            "type": "string",
            "maxLength": 255,
            "description": "The value to match against"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.ConditionValueListItems-create": {
        "title": "Value entry in a condition-level value list for eligibility matching (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning condition this value list item belongs to"
          },
          "category": {
            "type": "string",
            "enum": [
              "ARTICLE_NUMBER",
              "ARTICLE_GROUP_ID",
              "CUSTOMER_GROUP_ID",
              "CARD_TYPE",
              "BIN_PREFIX",
              "LOYALTY_TIER",
              "REASON_CODE",
              "PAYMENT_MEANS",
              "CUSTOMER_ID",
              "MANUFACTURER_ID",
              "CHANNEL"
            ],
            "description": "Category of the value (determines semantics)"
          },
          "value": {
            "type": "string",
            "maxLength": 255,
            "description": "The value to match against"
          }
        }
      },
      "PublicAPI.ConditionValueListItems-update": {
        "title": "Value entry in a condition-level value list for eligibility matching (for update)",
        "type": "object",
        "properties": {
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning condition this value list item belongs to"
          },
          "category": {
            "type": "string",
            "enum": [
              "ARTICLE_NUMBER",
              "ARTICLE_GROUP_ID",
              "CUSTOMER_GROUP_ID",
              "CARD_TYPE",
              "BIN_PREFIX",
              "LOYALTY_TIER",
              "REASON_CODE",
              "PAYMENT_MEANS",
              "CUSTOMER_ID",
              "MANUFACTURER_ID",
              "CHANNEL"
            ],
            "description": "Category of the value (determines semantics)"
          },
          "value": {
            "type": "string",
            "maxLength": 255,
            "description": "The value to match against"
          }
        }
      },
      "PublicAPI.Conditions": {
        "title": "Individual condition for promotion eligibility evaluation",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The owning promotion"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "CUSTOMER_GROUP",
              "RECEIPT_AMOUNT",
              "ITEM_QUANTITY",
              "PAYMENT_MEANS",
              "PAYMENT_CARD",
              "CUSTOMER",
              "MANUFACTURER",
              "ADDITIONAL_FIELD",
              "CREDIT_CARD_BIN",
              "USER_DEFINED",
              "LOYALTY_ACCOUNT",
              "MANUAL_DISCOUNT",
              "CHANNEL",
              "TIME_WINDOW",
              "TIME_PERIOD"
            ],
            "description": "Type of condition determining which evaluation logic applies"
          },
          "conditionTypeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ConditionTypes"
              }
            ],
            "nullable": true
          },
          "logicalConnector": {
            "type": "string",
            "enum": [
              "AND",
              "OR",
              "NOT"
            ],
            "default": "AND",
            "description": "AND/OR/NOT connector for flat condition evaluation"
          },
          "logicalConnectorText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.LogicalConnectors"
              }
            ],
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Display order of conditions within the promotion"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Minimum quantity threshold"
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Maximum quantity threshold"
          },
          "quantityUom": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Unit of measure for quantity thresholds (e.g. PCE, KG, L)"
          },
          "minAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Minimum amount threshold"
          },
          "maxAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Maximum amount threshold"
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Currencies"
              }
            ],
            "nullable": true,
            "description": "Currency code for amount thresholds"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency code for amount thresholds"
          },
          "fieldName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Custom field name for USER_DEFINED or ADDITIONAL_FIELD conditions"
          },
          "expectedValue": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Expected value to compare against (also single-channel CHANNEL)"
          },
          "comparisonOperator": {
            "type": "string",
            "enum": [
              "EQUALS",
              "CONTAINS",
              "STARTS_WITH",
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN",
              "GTE",
              "LTE"
            ],
            "nullable": true,
            "description": "Comparison operator for field matching"
          },
          "minPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Minimum loyalty points required"
          },
          "requireReasonCode": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether a reason code is required for manual discounts"
          },
          "parameters": {
            "type": "string",
            "format": "base64url",
            "nullable": true,
            "description": "Auto-computed JSON representation of native fields (legacy compatibility)"
          },
          "valueListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems"
            },
            "description": "Generic value list for condition types that match against sets of values"
          },
          "valueListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems"
            },
            "description": "Inline article list for ARTICLE_LIST condition type"
          },
          "articleListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Conditions-create": {
        "title": "Individual condition for promotion eligibility evaluation (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "CUSTOMER_GROUP",
              "RECEIPT_AMOUNT",
              "ITEM_QUANTITY",
              "PAYMENT_MEANS",
              "PAYMENT_CARD",
              "CUSTOMER",
              "MANUFACTURER",
              "ADDITIONAL_FIELD",
              "CREDIT_CARD_BIN",
              "USER_DEFINED",
              "LOYALTY_ACCOUNT",
              "MANUAL_DISCOUNT",
              "CHANNEL",
              "TIME_WINDOW",
              "TIME_PERIOD"
            ],
            "description": "Type of condition determining which evaluation logic applies"
          },
          "logicalConnector": {
            "type": "string",
            "enum": [
              "AND",
              "OR",
              "NOT"
            ],
            "default": "AND",
            "description": "AND/OR/NOT connector for flat condition evaluation"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Display order of conditions within the promotion"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Minimum quantity threshold"
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Maximum quantity threshold"
          },
          "quantityUom": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Unit of measure for quantity thresholds (e.g. PCE, KG, L)"
          },
          "minAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Minimum amount threshold"
          },
          "maxAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Maximum amount threshold"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency code for amount thresholds"
          },
          "fieldName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Custom field name for USER_DEFINED or ADDITIONAL_FIELD conditions"
          },
          "expectedValue": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Expected value to compare against (also single-channel CHANNEL)"
          },
          "comparisonOperator": {
            "type": "string",
            "enum": [
              "EQUALS",
              "CONTAINS",
              "STARTS_WITH",
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN",
              "GTE",
              "LTE"
            ],
            "nullable": true,
            "description": "Comparison operator for field matching"
          },
          "minPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Minimum loyalty points required"
          },
          "requireReasonCode": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether a reason code is required for manual discounts"
          },
          "valueListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems-create"
            },
            "description": "Generic value list for condition types that match against sets of values"
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST condition type"
          }
        }
      },
      "PublicAPI.Conditions-update": {
        "title": "Individual condition for promotion eligibility evaluation (for update)",
        "type": "object",
        "properties": {
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "CUSTOMER_GROUP",
              "RECEIPT_AMOUNT",
              "ITEM_QUANTITY",
              "PAYMENT_MEANS",
              "PAYMENT_CARD",
              "CUSTOMER",
              "MANUFACTURER",
              "ADDITIONAL_FIELD",
              "CREDIT_CARD_BIN",
              "USER_DEFINED",
              "LOYALTY_ACCOUNT",
              "MANUAL_DISCOUNT",
              "CHANNEL",
              "TIME_WINDOW",
              "TIME_PERIOD"
            ],
            "description": "Type of condition determining which evaluation logic applies"
          },
          "logicalConnector": {
            "type": "string",
            "enum": [
              "AND",
              "OR",
              "NOT"
            ],
            "default": "AND",
            "description": "AND/OR/NOT connector for flat condition evaluation"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Display order of conditions within the promotion"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Minimum quantity threshold"
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Maximum quantity threshold"
          },
          "quantityUom": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Unit of measure for quantity thresholds (e.g. PCE, KG, L)"
          },
          "minAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Minimum amount threshold"
          },
          "maxAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Maximum amount threshold"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency code for amount thresholds"
          },
          "fieldName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Custom field name for USER_DEFINED or ADDITIONAL_FIELD conditions"
          },
          "expectedValue": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Expected value to compare against (also single-channel CHANNEL)"
          },
          "comparisonOperator": {
            "type": "string",
            "enum": [
              "EQUALS",
              "CONTAINS",
              "STARTS_WITH",
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN",
              "GTE",
              "LTE"
            ],
            "nullable": true,
            "description": "Comparison operator for field matching"
          },
          "minPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Minimum loyalty points required"
          },
          "requireReasonCode": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether a reason code is required for manual discounts"
          },
          "valueListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionValueListItems-create"
            },
            "description": "Generic value list for condition types that match against sets of values"
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ConditionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST condition type"
          }
        }
      },
      "PublicAPI.ControlPosGroups": {
        "title": "POS group assigned to the control arm of a PromotionPilotConfig",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "config": {
            "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
          },
          "config_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup": {
            "$ref": "#/components/schemas/PublicAPI.PosGroups"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.ControlPosGroups-create": {
        "title": "POS group assigned to the control arm of a PromotionPilotConfig (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "config_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      },
      "PublicAPI.ControlPosGroups-update": {
        "title": "POS group assigned to the control arm of a PromotionPilotConfig (for update)",
        "type": "object",
        "properties": {
          "config_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      },
      "PublicAPI.CouponCodeBatches": {
        "title": "Batch generation request with progress tracking",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "couponType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes"
              }
            ],
            "description": "The coupon type to generate codes for"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon type to generate codes for"
          },
          "codeConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
              }
            ],
            "nullable": true,
            "description": "Override config (falls back to couponType.codeConfiguration)"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Override config (falls back to couponType.codeConfiguration)"
          },
          "numberOfCodes": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of codes to generate (max 10,000)"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "GENERATING",
              "COMPLETED",
              "FAILED"
            ],
            "nullable": true,
            "default": "PENDING",
            "description": "Current batch generation status"
          },
          "async": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this batch runs asynchronously (auto-set based on size)"
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Generation progress percentage (0-100)"
          },
          "generatedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Number of codes successfully generated so far"
          },
          "failedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Codes that failed due to duplicate collision after retries"
          },
          "refillSchedule": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponRefillSchedules"
              }
            ],
            "nullable": true,
            "description": "Set when this batch was triggered by auto-refill (null = manual)"
          },
          "refillSchedule_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Set when this batch was triggered by auto-refill (null = manual)"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp when batch generation finished"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodeBatches-create": {
        "title": "Batch generation request with progress tracking (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon type to generate codes for"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Override config (falls back to couponType.codeConfiguration)"
          },
          "numberOfCodes": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of codes to generate (max 10,000)"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "GENERATING",
              "COMPLETED",
              "FAILED"
            ],
            "nullable": true,
            "default": "PENDING",
            "description": "Current batch generation status"
          },
          "async": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this batch runs asynchronously (auto-set based on size)"
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Generation progress percentage (0-100)"
          },
          "generatedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Number of codes successfully generated so far"
          },
          "failedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Codes that failed due to duplicate collision after retries"
          },
          "refillSchedule_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Set when this batch was triggered by auto-refill (null = manual)"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp when batch generation finished"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodeBatches-update": {
        "title": "Batch generation request with progress tracking (for update)",
        "type": "object",
        "properties": {
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon type to generate codes for"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Override config (falls back to couponType.codeConfiguration)"
          },
          "numberOfCodes": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of codes to generate (max 10,000)"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "GENERATING",
              "COMPLETED",
              "FAILED"
            ],
            "nullable": true,
            "default": "PENDING",
            "description": "Current batch generation status"
          },
          "async": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this batch runs asynchronously (auto-set based on size)"
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Generation progress percentage (0-100)"
          },
          "generatedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Number of codes successfully generated so far"
          },
          "failedCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Codes that failed due to duplicate collision after retries"
          },
          "refillSchedule_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Set when this batch was triggered by auto-refill (null = manual)"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp when batch generation finished"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodeConfigurations": {
        "title": "Reusable template defining how coupon codes are generated",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 100,
            "description": "Display name of the configuration"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "nullable": true,
            "description": "Optional description of the configuration purpose"
          },
          "customCharset": {
            "type": "string",
            "maxLength": 200,
            "nullable": true,
            "description": "Explicit character set overriding all toggles"
          },
          "includeUppercase": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Include uppercase letters (A-Z) in the charset"
          },
          "includeLowercase": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Include lowercase letters (a-z) in the charset"
          },
          "includeDigits": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Include digits (0-9) in the charset"
          },
          "includeSymbols": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Include symbols from the symbol set"
          },
          "symbolSet": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "default": "!@#$%&*",
            "description": "Symbols to include when includeSymbols is true"
          },
          "excludeAmbiguous": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Remove visually confusing characters: I/l/1/O/0"
          },
          "codeLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 8,
            "description": "Length of the random alphanumeric SUFFIX (min 4, max 32). This excludes prefix + separator + suffix-string. Total code length = prefix length + separator length + codeLength + suffix-string length. Example: prefix=\"GRILL26\", separator=\"-\", codeLength=10 → \"GRILL26-VHF3M6BB8T\" (18 chars total)."
          },
          "prefix": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Fixed prefix prepended to generated codes (max 20 chars)"
          },
          "suffix": {
            "type": "string",
            "maxLength": 10,
            "nullable": true,
            "description": "Fixed suffix appended to generated codes"
          },
          "separator": {
            "type": "string",
            "maxLength": 1,
            "nullable": true,
            "default": "-",
            "description": "Character between prefix/random/suffix parts"
          },
          "refillIntervalMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 5,
            "description": "Auto-refill check interval in minutes (min 1, max 60)"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "nullable": true,
            "default": "ACTIVE",
            "description": "Whether this configuration is active and available for use"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant for multi-tenant data isolation"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodeConfigurations-create": {
        "title": "Reusable template defining how coupon codes are generated (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 100,
            "description": "Display name of the configuration"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "nullable": true,
            "description": "Optional description of the configuration purpose"
          },
          "customCharset": {
            "type": "string",
            "maxLength": 200,
            "nullable": true,
            "description": "Explicit character set overriding all toggles"
          },
          "includeUppercase": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Include uppercase letters (A-Z) in the charset"
          },
          "includeLowercase": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Include lowercase letters (a-z) in the charset"
          },
          "includeDigits": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Include digits (0-9) in the charset"
          },
          "includeSymbols": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Include symbols from the symbol set"
          },
          "symbolSet": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "default": "!@#$%&*",
            "description": "Symbols to include when includeSymbols is true"
          },
          "excludeAmbiguous": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Remove visually confusing characters: I/l/1/O/0"
          },
          "codeLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 8,
            "description": "Length of the random alphanumeric SUFFIX (min 4, max 32). This excludes prefix + separator + suffix-string. Total code length = prefix length + separator length + codeLength + suffix-string length. Example: prefix=\"GRILL26\", separator=\"-\", codeLength=10 → \"GRILL26-VHF3M6BB8T\" (18 chars total)."
          },
          "prefix": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Fixed prefix prepended to generated codes (max 20 chars)"
          },
          "suffix": {
            "type": "string",
            "maxLength": 10,
            "nullable": true,
            "description": "Fixed suffix appended to generated codes"
          },
          "separator": {
            "type": "string",
            "maxLength": 1,
            "nullable": true,
            "default": "-",
            "description": "Character between prefix/random/suffix parts"
          },
          "refillIntervalMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 5,
            "description": "Auto-refill check interval in minutes (min 1, max 60)"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "nullable": true,
            "default": "ACTIVE",
            "description": "Whether this configuration is active and available for use"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant for multi-tenant data isolation"
          }
        },
        "required": [
          "name"
        ]
      },
      "PublicAPI.CouponCodeConfigurations-update": {
        "title": "Reusable template defining how coupon codes are generated (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "description": "Display name of the configuration"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "nullable": true,
            "description": "Optional description of the configuration purpose"
          },
          "customCharset": {
            "type": "string",
            "maxLength": 200,
            "nullable": true,
            "description": "Explicit character set overriding all toggles"
          },
          "includeUppercase": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Include uppercase letters (A-Z) in the charset"
          },
          "includeLowercase": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Include lowercase letters (a-z) in the charset"
          },
          "includeDigits": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Include digits (0-9) in the charset"
          },
          "includeSymbols": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Include symbols from the symbol set"
          },
          "symbolSet": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "default": "!@#$%&*",
            "description": "Symbols to include when includeSymbols is true"
          },
          "excludeAmbiguous": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "Remove visually confusing characters: I/l/1/O/0"
          },
          "codeLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 8,
            "description": "Length of the random alphanumeric SUFFIX (min 4, max 32). This excludes prefix + separator + suffix-string. Total code length = prefix length + separator length + codeLength + suffix-string length. Example: prefix=\"GRILL26\", separator=\"-\", codeLength=10 → \"GRILL26-VHF3M6BB8T\" (18 chars total)."
          },
          "prefix": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Fixed prefix prepended to generated codes (max 20 chars)"
          },
          "suffix": {
            "type": "string",
            "maxLength": 10,
            "nullable": true,
            "description": "Fixed suffix appended to generated codes"
          },
          "separator": {
            "type": "string",
            "maxLength": 1,
            "nullable": true,
            "default": "-",
            "description": "Character between prefix/random/suffix parts"
          },
          "refillIntervalMinutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 5,
            "description": "Auto-refill check interval in minutes (min 1, max 60)"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "nullable": true,
            "default": "ACTIVE",
            "description": "Whether this configuration is active and available for use"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant for multi-tenant data isolation"
          }
        }
      },
      "PublicAPI.CouponCodeStatuses": {
        "title": "CouponCodeStatuses",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeStatuses_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodeStatuses_texts": {
        "title": "CouponCodeStatuses_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.CouponCodeStatuses_texts-create": {
        "title": "CouponCodeStatuses_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.CouponCodeTypes": {
        "title": "CouponCodeTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodeTypes_texts": {
        "title": "CouponCodeTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.CouponCodeTypes_texts-create": {
        "title": "CouponCodeTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.CouponCodes": {
        "title": "Individual coupon code instance with lifecycle tracking",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "couponType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes"
              }
            ],
            "description": "The template this code was generated from"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The template this code was generated from"
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "ACTIVE",
              "RESERVED",
              "REDEEMED",
              "EXPIRED",
              "CANCELLED"
            ],
            "default": "CREATED",
            "description": "Current lifecycle status of the coupon code"
          },
          "source": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "INTERNAL",
            "description": "Origin of the code: INTERNAL = DRE-generated, EXTERNAL = imported from external system (Sodexo, Payback, Talon.One)"
          },
          "reservationRef": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Unique UUID generated per reservation (changes on each reserve)"
          },
          "customerId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Optional customer assignment (for personalised coupons)"
          },
          "issuedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true,
            "description": "Timestamp when this code was handed to a customer. NULL = still in pool. Basis for time-to-redeem analytics."
          },
          "issuingPromotionId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "ID of the promotion that issued this code (post-purchase). NULL for pool/batch/manual/external codes that have not been handed out via a promotion."
          },
          "issuingTransactionId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "POS transaction ID of the basket that triggered issuance. Idempotency key: one code per (issuingTransactionId, issuingPromotionId, couponType_ID)."
          },
          "issuanceChannel": {
            "type": "string",
            "enum": [
              "POST_PURCHASE",
              "BATCH",
              "MANUAL",
              "EXTERNAL"
            ],
            "nullable": true,
            "description": "Origin channel through which this code was distributed. POST_PURCHASE = issued at checkout; BATCH = pre-generated by the auto-refill scheduler; MANUAL = admin generateCodes action; EXTERNAL = imported from external system."
          },
          "redemptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RedemptionLogs"
            },
            "description": "Audit trail of all redemptions for this coupon code"
          },
          "redemptions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponCodes-create": {
        "title": "Individual coupon code instance with lifecycle tracking (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The template this code was generated from"
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "ACTIVE",
              "RESERVED",
              "REDEEMED",
              "EXPIRED",
              "CANCELLED"
            ],
            "default": "CREATED",
            "description": "Current lifecycle status of the coupon code"
          },
          "source": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "INTERNAL",
            "description": "Origin of the code: INTERNAL = DRE-generated, EXTERNAL = imported from external system (Sodexo, Payback, Talon.One)"
          },
          "reservationRef": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Unique UUID generated per reservation (changes on each reserve)"
          },
          "customerId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Optional customer assignment (for personalised coupons)"
          },
          "issuedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true,
            "description": "Timestamp when this code was handed to a customer. NULL = still in pool. Basis for time-to-redeem analytics."
          },
          "issuingPromotionId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "ID of the promotion that issued this code (post-purchase). NULL for pool/batch/manual/external codes that have not been handed out via a promotion."
          },
          "issuingTransactionId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "POS transaction ID of the basket that triggered issuance. Idempotency key: one code per (issuingTransactionId, issuingPromotionId, couponType_ID)."
          },
          "issuanceChannel": {
            "type": "string",
            "enum": [
              "POST_PURCHASE",
              "BATCH",
              "MANUAL",
              "EXTERNAL"
            ],
            "nullable": true,
            "description": "Origin channel through which this code was distributed. POST_PURCHASE = issued at checkout; BATCH = pre-generated by the auto-refill scheduler; MANUAL = admin generateCodes action; EXTERNAL = imported from external system."
          },
          "redemptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RedemptionLogs-create"
            },
            "description": "Audit trail of all redemptions for this coupon code"
          }
        }
      },
      "PublicAPI.CouponCodes-update": {
        "title": "Individual coupon code instance with lifecycle tracking (for update)",
        "type": "object",
        "properties": {
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The template this code was generated from"
          },
          "status": {
            "type": "string",
            "enum": [
              "CREATED",
              "ACTIVE",
              "RESERVED",
              "REDEEMED",
              "EXPIRED",
              "CANCELLED"
            ],
            "default": "CREATED",
            "description": "Current lifecycle status of the coupon code"
          },
          "source": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "INTERNAL",
            "description": "Origin of the code: INTERNAL = DRE-generated, EXTERNAL = imported from external system (Sodexo, Payback, Talon.One)"
          },
          "reservationRef": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Unique UUID generated per reservation (changes on each reserve)"
          },
          "customerId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Optional customer assignment (for personalised coupons)"
          },
          "issuedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true,
            "description": "Timestamp when this code was handed to a customer. NULL = still in pool. Basis for time-to-redeem analytics."
          },
          "issuingPromotionId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "ID of the promotion that issued this code (post-purchase). NULL for pool/batch/manual/external codes that have not been handed out via a promotion."
          },
          "issuingTransactionId": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "POS transaction ID of the basket that triggered issuance. Idempotency key: one code per (issuingTransactionId, issuingPromotionId, couponType_ID)."
          },
          "issuanceChannel": {
            "type": "string",
            "enum": [
              "POST_PURCHASE",
              "BATCH",
              "MANUAL",
              "EXTERNAL"
            ],
            "nullable": true,
            "description": "Origin channel through which this code was distributed. POST_PURCHASE = issued at checkout; BATCH = pre-generated by the auto-refill scheduler; MANUAL = admin generateCodes action; EXTERNAL = imported from external system."
          },
          "redemptions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RedemptionLogs-create"
            },
            "description": "Audit trail of all redemptions for this coupon code"
          }
        }
      },
      "PublicAPI.CouponRefillSchedules": {
        "title": "Auto-refill configuration with distributed locking",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "couponType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes"
              }
            ],
            "description": "The coupon type to auto-refill"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon type to auto-refill"
          },
          "codeConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
              }
            ],
            "nullable": true,
            "description": "Configuration for generated codes"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Configuration for generated codes"
          },
          "numberOfCodes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 100,
            "description": "Number of codes to generate per refill batch. Default 100 — note the silent production-firing risk: an enabled schedule will generate this many codes per batch automatically."
          },
          "refillThreshold": {
            "type": "integer",
            "format": "int32",
            "description": "Trigger refill when ACTIVE codes fall below this count"
          },
          "enabled": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether auto-refill is active for this coupon type (off by default — must be explicitly enabled)"
          },
          "lastCheckAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp of last schedule evaluation"
          },
          "lastRefillAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "When the last refill batch completed successfully"
          },
          "lockOwner": {
            "type": "string",
            "maxLength": 64,
            "nullable": true,
            "description": "CF instance ID holding the lease (null = unlocked)"
          },
          "lockExpiresAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Lease auto-expiry for crashed instance recovery (2-min lease)"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          },
          "batches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponCodeBatches"
            },
            "description": "Batches generated by this auto-refill schedule"
          },
          "batches@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponRefillSchedules-create": {
        "title": "Auto-refill configuration with distributed locking (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon type to auto-refill"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Configuration for generated codes"
          },
          "numberOfCodes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 100,
            "description": "Number of codes to generate per refill batch. Default 100 — note the silent production-firing risk: an enabled schedule will generate this many codes per batch automatically."
          },
          "refillThreshold": {
            "type": "integer",
            "format": "int32",
            "description": "Trigger refill when ACTIVE codes fall below this count"
          },
          "enabled": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether auto-refill is active for this coupon type (off by default — must be explicitly enabled)"
          },
          "lastCheckAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp of last schedule evaluation"
          },
          "lastRefillAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "When the last refill batch completed successfully"
          },
          "lockOwner": {
            "type": "string",
            "maxLength": 64,
            "nullable": true,
            "description": "CF instance ID holding the lease (null = unlocked)"
          },
          "lockExpiresAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Lease auto-expiry for crashed instance recovery (2-min lease)"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponRefillSchedules-update": {
        "title": "Auto-refill configuration with distributed locking (for update)",
        "type": "object",
        "properties": {
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon type to auto-refill"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Configuration for generated codes"
          },
          "numberOfCodes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 100,
            "description": "Number of codes to generate per refill batch. Default 100 — note the silent production-firing risk: an enabled schedule will generate this many codes per batch automatically."
          },
          "refillThreshold": {
            "type": "integer",
            "format": "int32",
            "description": "Trigger refill when ACTIVE codes fall below this count"
          },
          "enabled": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether auto-refill is active for this coupon type (off by default — must be explicitly enabled)"
          },
          "lastCheckAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp of last schedule evaluation"
          },
          "lastRefillAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "When the last refill batch completed successfully"
          },
          "lockOwner": {
            "type": "string",
            "maxLength": 64,
            "nullable": true,
            "description": "CF instance ID holding the lease (null = unlocked)"
          },
          "lockExpiresAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Lease auto-expiry for crashed instance recovery (2-min lease)"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponStatuses": {
        "title": "CouponStatuses",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponStatuses_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponStatuses_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponStatuses_texts": {
        "title": "CouponStatuses_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.CouponStatuses_texts-create": {
        "title": "CouponStatuses_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.CouponTypePromotions": {
        "title": "Assignment of a promotion to a coupon type for activation on redemption",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "couponType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes"
              }
            ],
            "description": "The owning coupon type"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning coupon type"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The promotion activated by this coupon type"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion activated by this coupon type"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponTypePromotions-create": {
        "title": "Assignment of a promotion to a coupon type for activation on redemption (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning coupon type"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion activated by this coupon type"
          }
        }
      },
      "PublicAPI.CouponTypePromotions-update": {
        "title": "Assignment of a promotion to a coupon type for activation on redemption (for update)",
        "type": "object",
        "properties": {
          "couponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning coupon type"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion activated by this coupon type"
          }
        }
      },
      "PublicAPI.CouponTypes": {
        "title": "Template defining coupon generation rules, redemption limits, and validity",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the coupon type"
          },
          "type": {
            "type": "string",
            "enum": [
              "GENERIC",
              "INDIVIDUAL"
            ],
            "default": "INDIVIDUAL",
            "description": "Code generation strategy (GENERIC = shared code, INDIVIDUAL = unique per customer)"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "default": "ACTIVE",
            "description": "Current lifecycle status of the coupon type"
          },
          "typeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeTypes"
              }
            ],
            "nullable": true
          },
          "statusText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponStatuses"
              }
            ],
            "nullable": true
          },
          "prefix": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Code prefix prepended to generated coupon codes (e.g. \"SUMMER\", \"VIP\"; max 20 chars)"
          },
          "codeLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 8,
            "description": "Length of the random alphanumeric SUFFIX appended after the optional prefix and separator. This is NOT the total code length. Total code length = prefix length + separator length + codeLength. Example: prefix=\"GRILL26\", codeLength=10 → \"GRILL26-VHF3M6BB8T\" (18 chars total)."
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Maximum total redemptions across all customers; 0 = unlimited"
          },
          "maxRedemptionsPerCustomer": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Maximum redemptions per individual customer; 0 = unlimited"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the coupon validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the coupon validity window"
          },
          "isStackable": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this coupon can be combined with other coupons in the same transaction"
          },
          "isExclusive": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this coupon is exclusive (no other promotions apply when used)"
          },
          "codeConfiguration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodeConfigurations"
              }
            ],
            "nullable": true,
            "description": "Optional link to a reusable code generation configuration"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional link to a reusable code generation configuration"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant for multi-tenant data isolation"
          },
          "codes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponCodes"
            },
            "description": "Individual coupon code instances generated from this type"
          },
          "codes@count": {
            "$ref": "#/components/schemas/count"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions"
            },
            "description": "Promotions activated when a coupon of this type is applied"
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.CouponTypes-create": {
        "title": "Template defining coupon generation rules, redemption limits, and validity (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the coupon type"
          },
          "type": {
            "type": "string",
            "enum": [
              "GENERIC",
              "INDIVIDUAL"
            ],
            "default": "INDIVIDUAL",
            "description": "Code generation strategy (GENERIC = shared code, INDIVIDUAL = unique per customer)"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "default": "ACTIVE",
            "description": "Current lifecycle status of the coupon type"
          },
          "prefix": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Code prefix prepended to generated coupon codes (e.g. \"SUMMER\", \"VIP\"; max 20 chars)"
          },
          "codeLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 8,
            "description": "Length of the random alphanumeric SUFFIX appended after the optional prefix and separator. This is NOT the total code length. Total code length = prefix length + separator length + codeLength. Example: prefix=\"GRILL26\", codeLength=10 → \"GRILL26-VHF3M6BB8T\" (18 chars total)."
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Maximum total redemptions across all customers; 0 = unlimited"
          },
          "maxRedemptionsPerCustomer": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Maximum redemptions per individual customer; 0 = unlimited"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the coupon validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the coupon validity window"
          },
          "isStackable": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this coupon can be combined with other coupons in the same transaction"
          },
          "isExclusive": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this coupon is exclusive (no other promotions apply when used)"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional link to a reusable code generation configuration"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant for multi-tenant data isolation"
          },
          "codes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponCodes-create"
            },
            "description": "Individual coupon code instances generated from this type"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions-create"
            },
            "description": "Promotions activated when a coupon of this type is applied"
          }
        }
      },
      "PublicAPI.CouponTypes-update": {
        "title": "Template defining coupon generation rules, redemption limits, and validity (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the coupon type"
          },
          "type": {
            "type": "string",
            "enum": [
              "GENERIC",
              "INDIVIDUAL"
            ],
            "default": "INDIVIDUAL",
            "description": "Code generation strategy (GENERIC = shared code, INDIVIDUAL = unique per customer)"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ],
            "default": "ACTIVE",
            "description": "Current lifecycle status of the coupon type"
          },
          "prefix": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Code prefix prepended to generated coupon codes (e.g. \"SUMMER\", \"VIP\"; max 20 chars)"
          },
          "codeLength": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 8,
            "description": "Length of the random alphanumeric SUFFIX appended after the optional prefix and separator. This is NOT the total code length. Total code length = prefix length + separator length + codeLength. Example: prefix=\"GRILL26\", codeLength=10 → \"GRILL26-VHF3M6BB8T\" (18 chars total)."
          },
          "maxRedemptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Maximum total redemptions across all customers; 0 = unlimited"
          },
          "maxRedemptionsPerCustomer": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Maximum redemptions per individual customer; 0 = unlimited"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the coupon validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the coupon validity window"
          },
          "isStackable": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this coupon can be combined with other coupons in the same transaction"
          },
          "isExclusive": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "Whether this coupon is exclusive (no other promotions apply when used)"
          },
          "codeConfiguration_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional link to a reusable code generation configuration"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant for multi-tenant data isolation"
          },
          "codes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponCodes-create"
            },
            "description": "Individual coupon code instances generated from this type"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.CouponTypePromotions-create"
            },
            "description": "Promotions activated when a coupon of this type is applied"
          }
        }
      },
      "PublicAPI.Currencies": {
        "title": "Currencies",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 3
          },
          "symbol": {
            "type": "string",
            "maxLength": 5,
            "nullable": true
          },
          "minorUnit": {
            "type": "integer",
            "format": "int16",
            "nullable": true
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Currencies_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Currencies_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.Currencies-create": {
        "title": "Currencies (for create)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 3
          },
          "symbol": {
            "type": "string",
            "maxLength": 5,
            "nullable": true
          },
          "minorUnit": {
            "type": "integer",
            "format": "int16",
            "nullable": true
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Currencies_texts-create"
            }
          }
        },
        "required": [
          "code"
        ]
      },
      "PublicAPI.Currencies-update": {
        "title": "Currencies (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "symbol": {
            "type": "string",
            "maxLength": 5,
            "nullable": true
          },
          "minorUnit": {
            "type": "integer",
            "format": "int16",
            "nullable": true
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Currencies_texts-create"
            }
          }
        }
      },
      "PublicAPI.Currencies_texts": {
        "title": "Currencies_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 3
          }
        }
      },
      "PublicAPI.Currencies_texts-create": {
        "title": "Currencies_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 3
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.DiscountActions": {
        "title": "Reward definition specifying what discount is applied when a promotion triggers",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The owning promotion this action belongs to"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion this action belongs to"
          },
          "actionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "RECEIPT",
              "SCALED_RECEIPT",
              "BUNDLE",
              "POST_PURCHASE_COUPON",
              "QUANTITY_TIER",
              "FREE_ITEM"
            ],
            "description": "Type of action determining which reward logic applies"
          },
          "actionTypeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ActionTypes"
              }
            ],
            "nullable": true
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "nullable": true,
            "description": "Kind of discount (percentage, absolute, or unit price override)"
          },
          "discountTypeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountTypes"
              }
            ],
            "nullable": true
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Numeric discount value (percentage points or monetary amount). Nullable since PROMO-1025/D3. For priced (non-exempt) action types it must be > 0 — enforced by @assert.range on present values and the Promotions activation gate (srv/admin-service.js). Exempt types (QUANTITY_TIER carries per-tier prices; FREE_ITEM in sprint-151) leave it null."
          },
          "maxDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Cap on the total discount amount; null means unlimited"
          },
          "targetArticle": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles"
              }
            ],
            "nullable": true,
            "description": "Specific article the discount applies to (for ARTICLE type)"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Specific article the discount applies to (for ARTICLE type)"
          },
          "targetArticleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true,
            "description": "Article group the discount applies to (for ARTICLE_GROUP type)"
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Article group the discount applies to (for ARTICLE_GROUP type)"
          },
          "targetArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For ARTICLE: optional free-text article number for targeting when no master data is loaded (standalone mode). For QUANTITY_TIER: the target is either this single article number OR an article group (targetArticleGroupId) — exactly one of the two (XOR enforced in the engine wave, PROMO-1039)."
          },
          "targetArticleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Free-text article group identifier for targeting when no master data is loaded (standalone mode)"
          },
          "includeSubGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "For QUANTITY_TIER on an article group: when true, also count articles of descendant sub-groups toward the volume tier; when false (default), strict direct group membership only."
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Identifier of the article list (for ARTICLE_LIST type)"
          },
          "selectionType": {
            "type": "string",
            "enum": [
              "ALL",
              "CHEAPEST",
              "MOST_EXPENSIVE",
              "RANDOM"
            ],
            "nullable": true,
            "description": "Strategy for selecting qualifying items (ALL, CHEAPEST, MOST_EXPENSIVE, RANDOM)"
          },
          "applicationQuantityMode": {
            "type": "string",
            "enum": [
              "ALL",
              "LIMITED",
              "CHEAPEST",
              "MOST_EXPENSIVE"
            ],
            "nullable": true,
            "description": "Controls how many qualifying items receive the discount"
          },
          "applicationQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Number of qualifying items to receive the discount when selectionType is CHEAPEST/MOST_EXPENSIVE/RANDOM. Null = all qualifying items."
          },
          "targetCouponType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes"
              }
            ],
            "nullable": true,
            "description": "Coupon type to generate codes from (for POST_PURCHASE_COUPON action type)"
          },
          "targetCouponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Coupon type to generate codes from (for POST_PURCHASE_COUPON action type)"
          },
          "distributionMode": {
            "type": "string",
            "enum": [
              "PROPORTIONAL",
              "EQUAL",
              "HIGHEST_FIRST"
            ],
            "nullable": true,
            "description": "How receipt-level discounts are distributed across line items"
          },
          "scaledTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers"
            },
            "description": "Threshold-based tiers for scaled receipt discounts"
          },
          "scaledTiers@count": {
            "$ref": "#/components/schemas/count"
          },
          "quantityTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers"
            },
            "description": "Volume-tiered unit pricing tiers for QUANTITY_TIER actions (single dedicated code)"
          },
          "quantityTiers@count": {
            "$ref": "#/components/schemas/count"
          },
          "bundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BundleComponents"
            },
            "description": "Required components for BUNDLE action type. Each component lists an article number with min/max quantities. The engine forms one bundle when all components are satisfied; any unmet component blocks formation. When components are present they take precedence over targetArticle/targetArticleGroup for BUNDLE actions."
          },
          "bundleComponents@count": {
            "$ref": "#/components/schemas/count"
          },
          "maxBundles": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Optional cap on how many bundles can form per basket. Null = unlimited."
          },
          "freeItemArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For FREE_ITEM: article number of the free article to give away or inject."
          },
          "freeItemQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1,
            "description": "For FREE_ITEM: number of free units granted per qualifying trigger. Defaults to 1."
          },
          "restrictToOnePerBasket": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "For FREE_ITEM: when true, the free item is granted at most once per basket regardless of trigger multiplicity (D4 default). When false, grants scale with qualifying triggers (subject to maxFreeUnits)."
          },
          "freeItemReferencePrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "For FREE_ITEM: optional reference price used to value the give-away when no basket/master-data price is available (priceSource = REFERENCE_PRICE)."
          },
          "maxFreeUnits": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "For FREE_ITEM: optional price-independent cap on total free units granted per basket (mirrors BundleComponents/maxBundles capping semantics). Null = unlimited. Consumed by PROMO-1033 validation."
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems"
            },
            "description": "Inline article list for ARTICLE_LIST action type"
          },
          "articleListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
            },
            "description": "Articles excluded from this discount action"
          },
          "exclusions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.DiscountActions-create": {
        "title": "Reward definition specifying what discount is applied when a promotion triggers (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion this action belongs to"
          },
          "actionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "RECEIPT",
              "SCALED_RECEIPT",
              "BUNDLE",
              "POST_PURCHASE_COUPON",
              "QUANTITY_TIER",
              "FREE_ITEM"
            ],
            "description": "Type of action determining which reward logic applies"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "nullable": true,
            "description": "Kind of discount (percentage, absolute, or unit price override)"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Numeric discount value (percentage points or monetary amount). Nullable since PROMO-1025/D3. For priced (non-exempt) action types it must be > 0 — enforced by @assert.range on present values and the Promotions activation gate (srv/admin-service.js). Exempt types (QUANTITY_TIER carries per-tier prices; FREE_ITEM in sprint-151) leave it null."
          },
          "maxDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Cap on the total discount amount; null means unlimited"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Specific article the discount applies to (for ARTICLE type)"
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Article group the discount applies to (for ARTICLE_GROUP type)"
          },
          "targetArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For ARTICLE: optional free-text article number for targeting when no master data is loaded (standalone mode). For QUANTITY_TIER: the target is either this single article number OR an article group (targetArticleGroupId) — exactly one of the two (XOR enforced in the engine wave, PROMO-1039)."
          },
          "targetArticleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Free-text article group identifier for targeting when no master data is loaded (standalone mode)"
          },
          "includeSubGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "For QUANTITY_TIER on an article group: when true, also count articles of descendant sub-groups toward the volume tier; when false (default), strict direct group membership only."
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Identifier of the article list (for ARTICLE_LIST type)"
          },
          "selectionType": {
            "type": "string",
            "enum": [
              "ALL",
              "CHEAPEST",
              "MOST_EXPENSIVE",
              "RANDOM"
            ],
            "nullable": true,
            "description": "Strategy for selecting qualifying items (ALL, CHEAPEST, MOST_EXPENSIVE, RANDOM)"
          },
          "applicationQuantityMode": {
            "type": "string",
            "enum": [
              "ALL",
              "LIMITED",
              "CHEAPEST",
              "MOST_EXPENSIVE"
            ],
            "nullable": true,
            "description": "Controls how many qualifying items receive the discount"
          },
          "applicationQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Number of qualifying items to receive the discount when selectionType is CHEAPEST/MOST_EXPENSIVE/RANDOM. Null = all qualifying items."
          },
          "targetCouponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Coupon type to generate codes from (for POST_PURCHASE_COUPON action type)"
          },
          "distributionMode": {
            "type": "string",
            "enum": [
              "PROPORTIONAL",
              "EQUAL",
              "HIGHEST_FIRST"
            ],
            "nullable": true,
            "description": "How receipt-level discounts are distributed across line items"
          },
          "scaledTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers-create"
            },
            "description": "Threshold-based tiers for scaled receipt discounts"
          },
          "quantityTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers-create"
            },
            "description": "Volume-tiered unit pricing tiers for QUANTITY_TIER actions (single dedicated code)"
          },
          "bundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BundleComponents-create"
            },
            "description": "Required components for BUNDLE action type. Each component lists an article number with min/max quantities. The engine forms one bundle when all components are satisfied; any unmet component blocks formation. When components are present they take precedence over targetArticle/targetArticleGroup for BUNDLE actions."
          },
          "maxBundles": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Optional cap on how many bundles can form per basket. Null = unlimited."
          },
          "freeItemArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For FREE_ITEM: article number of the free article to give away or inject."
          },
          "freeItemQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1,
            "description": "For FREE_ITEM: number of free units granted per qualifying trigger. Defaults to 1."
          },
          "restrictToOnePerBasket": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "For FREE_ITEM: when true, the free item is granted at most once per basket regardless of trigger multiplicity (D4 default). When false, grants scale with qualifying triggers (subject to maxFreeUnits)."
          },
          "freeItemReferencePrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "For FREE_ITEM: optional reference price used to value the give-away when no basket/master-data price is available (priceSource = REFERENCE_PRICE)."
          },
          "maxFreeUnits": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "For FREE_ITEM: optional price-independent cap on total free units granted per basket (mirrors BundleComponents/maxBundles capping semantics). Null = unlimited. Consumed by PROMO-1033 validation."
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST action type"
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionExclusions-create"
            },
            "description": "Articles excluded from this discount action"
          }
        }
      },
      "PublicAPI.DiscountActions-update": {
        "title": "Reward definition specifying what discount is applied when a promotion triggers (for update)",
        "type": "object",
        "properties": {
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion this action belongs to"
          },
          "actionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "RECEIPT",
              "SCALED_RECEIPT",
              "BUNDLE",
              "POST_PURCHASE_COUPON",
              "QUANTITY_TIER",
              "FREE_ITEM"
            ],
            "description": "Type of action determining which reward logic applies"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "nullable": true,
            "description": "Kind of discount (percentage, absolute, or unit price override)"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Numeric discount value (percentage points or monetary amount). Nullable since PROMO-1025/D3. For priced (non-exempt) action types it must be > 0 — enforced by @assert.range on present values and the Promotions activation gate (srv/admin-service.js). Exempt types (QUANTITY_TIER carries per-tier prices; FREE_ITEM in sprint-151) leave it null."
          },
          "maxDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Cap on the total discount amount; null means unlimited"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Specific article the discount applies to (for ARTICLE type)"
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Article group the discount applies to (for ARTICLE_GROUP type)"
          },
          "targetArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For ARTICLE: optional free-text article number for targeting when no master data is loaded (standalone mode). For QUANTITY_TIER: the target is either this single article number OR an article group (targetArticleGroupId) — exactly one of the two (XOR enforced in the engine wave, PROMO-1039)."
          },
          "targetArticleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Free-text article group identifier for targeting when no master data is loaded (standalone mode)"
          },
          "includeSubGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "For QUANTITY_TIER on an article group: when true, also count articles of descendant sub-groups toward the volume tier; when false (default), strict direct group membership only."
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Identifier of the article list (for ARTICLE_LIST type)"
          },
          "selectionType": {
            "type": "string",
            "enum": [
              "ALL",
              "CHEAPEST",
              "MOST_EXPENSIVE",
              "RANDOM"
            ],
            "nullable": true,
            "description": "Strategy for selecting qualifying items (ALL, CHEAPEST, MOST_EXPENSIVE, RANDOM)"
          },
          "applicationQuantityMode": {
            "type": "string",
            "enum": [
              "ALL",
              "LIMITED",
              "CHEAPEST",
              "MOST_EXPENSIVE"
            ],
            "nullable": true,
            "description": "Controls how many qualifying items receive the discount"
          },
          "applicationQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Number of qualifying items to receive the discount when selectionType is CHEAPEST/MOST_EXPENSIVE/RANDOM. Null = all qualifying items."
          },
          "targetCouponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Coupon type to generate codes from (for POST_PURCHASE_COUPON action type)"
          },
          "distributionMode": {
            "type": "string",
            "enum": [
              "PROPORTIONAL",
              "EQUAL",
              "HIGHEST_FIRST"
            ],
            "nullable": true,
            "description": "How receipt-level discounts are distributed across line items"
          },
          "scaledTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ScaledReceiptTiers-create"
            },
            "description": "Threshold-based tiers for scaled receipt discounts"
          },
          "quantityTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.QuantityPriceTiers-create"
            },
            "description": "Volume-tiered unit pricing tiers for QUANTITY_TIER actions (single dedicated code)"
          },
          "bundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BundleComponents-create"
            },
            "description": "Required components for BUNDLE action type. Each component lists an article number with min/max quantities. The engine forms one bundle when all components are satisfied; any unmet component blocks formation. When components are present they take precedence over targetArticle/targetArticleGroup for BUNDLE actions."
          },
          "maxBundles": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Optional cap on how many bundles can form per basket. Null = unlimited."
          },
          "freeItemArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "For FREE_ITEM: article number of the free article to give away or inject."
          },
          "freeItemQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1,
            "description": "For FREE_ITEM: number of free units granted per qualifying trigger. Defaults to 1."
          },
          "restrictToOnePerBasket": {
            "type": "boolean",
            "nullable": true,
            "default": true,
            "description": "For FREE_ITEM: when true, the free item is granted at most once per basket regardless of trigger multiplicity (D4 default). When false, grants scale with qualifying triggers (subject to maxFreeUnits)."
          },
          "freeItemReferencePrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "For FREE_ITEM: optional reference price used to value the give-away when no basket/master-data price is available (priceSource = REFERENCE_PRICE)."
          },
          "maxFreeUnits": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "For FREE_ITEM: optional price-independent cap on total free units granted per basket (mirrors BundleComponents/maxBundles capping semantics). Null = unlimited. Consumed by PROMO-1033 validation."
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST action type"
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ActionExclusions-create"
            },
            "description": "Articles excluded from this discount action"
          }
        }
      },
      "PublicAPI.DiscountTypes": {
        "title": "DiscountTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.DiscountTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.DiscountTypes_texts": {
        "title": "DiscountTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.DiscountTypes_texts-create": {
        "title": "DiscountTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.DistributionModes": {
        "title": "DistributionModes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.DistributionModes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DistributionModes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.DistributionModes_texts": {
        "title": "DistributionModes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.DistributionModes_texts-create": {
        "title": "DistributionModes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ExclusionArticleListItems": {
        "title": "Article entry in an exclusion-level article list",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ActionExclusions"
              }
            ],
            "description": "The owning action exclusion this article list item belongs to"
          },
          "exclusion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning action exclusion this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number to exclude from the discount"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          }
        }
      },
      "PublicAPI.ExclusionArticleListItems-create": {
        "title": "Article entry in an exclusion-level article list (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning action exclusion this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number to exclude from the discount"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          }
        }
      },
      "PublicAPI.ExclusionArticleListItems-update": {
        "title": "Article entry in an exclusion-level article list (for update)",
        "type": "object",
        "properties": {
          "exclusion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning action exclusion this article list item belongs to"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "description": "Article number to exclude from the discount"
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true,
            "description": "European Article Number (barcode) for the article"
          }
        }
      },
      "PublicAPI.ExclusionGroupPromotions": {
        "title": "Assignment of a promotion to a mutual exclusion group",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusionGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.MutualExclusionGroups"
              }
            ],
            "description": "The owning exclusion group"
          },
          "exclusionGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning exclusion group"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The assigned promotion"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion"
          }
        }
      },
      "PublicAPI.ExclusionGroupPromotions-create": {
        "title": "Assignment of a promotion to a mutual exclusion group (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusionGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning exclusion group"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion"
          }
        }
      },
      "PublicAPI.ExclusionGroupPromotions-update": {
        "title": "Assignment of a promotion to a mutual exclusion group (for update)",
        "type": "object",
        "properties": {
          "exclusionGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning exclusion group"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion"
          }
        }
      },
      "PublicAPI.ExclusionTypes": {
        "title": "ExclusionTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ExclusionTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ExclusionTypes_texts": {
        "title": "ExclusionTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.ExclusionTypes_texts-create": {
        "title": "ExclusionTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ExclusivityLevels": {
        "title": "ExclusivityLevels",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ExclusivityLevels_texts": {
        "title": "ExclusivityLevels_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.ExclusivityLevels_texts-create": {
        "title": "ExclusivityLevels_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.GroupTypes": {
        "title": "GroupTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.GroupTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.GroupTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.GroupTypes_texts": {
        "title": "GroupTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.GroupTypes_texts-create": {
        "title": "GroupTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ImportJobErrors": {
        "title": "Per-row failure detail captured on all-or-nothing rollback",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "job": {
            "$ref": "#/components/schemas/PublicAPI.ImportJobs"
          },
          "job_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "rowIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "0-based within the input payload"
          },
          "rowKey": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "Business key of the failing row (e.g. ProductInternalID, Promotion.id)"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "VALIDATION | CONSTRAINT | SYSTEM"
          },
          "message": {
            "type": "string",
            "maxLength": 2000,
            "nullable": true
          }
        }
      },
      "PublicAPI.ImportJobErrors-create": {
        "title": "Per-row failure detail captured on all-or-nothing rollback (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "job_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "rowIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "0-based within the input payload"
          },
          "rowKey": {
            "type": "string",
            "maxLength": 100,
            "nullable": true,
            "description": "Business key of the failing row (e.g. ProductInternalID, Promotion.id)"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "VALIDATION | CONSTRAINT | SYSTEM"
          },
          "message": {
            "type": "string",
            "maxLength": 2000,
            "nullable": true
          }
        }
      },
      "PublicAPI.ImportJobs": {
        "title": "Async-job state for Public API bulk imports and DRFOUT master-data ingest",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "type": {
            "type": "string",
            "enum": [
              "PROMOTION_BULK",
              "MASTER_DATA_PRODUCT"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "QUEUED",
              "RUNNING",
              "SUCCEEDED",
              "FAILED"
            ],
            "default": "QUEUED"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Multi-tenant boundary; auto-filled from JWT/cert"
          },
          "idempotencyKey": {
            "type": "string",
            "maxLength": 255,
            "description": "Unique per (tenantId, idempotencyKey); 24h Redis TTL"
          },
          "rowsReceived": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "rowsProcessed": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "rowsSkipped": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "DRFOUT items with ActionCode != 04, etc."
          },
          "callbackUrl": {
            "type": "string",
            "maxLength": 2048,
            "nullable": true,
            "description": "Optional webhook target on terminal status"
          },
          "callbackSecret": {
            "type": "string",
            "maxLength": 512,
            "nullable": true,
            "description": "HMAC secret encrypted at rest (AES-256-GCM, key from BTP credstore); base64url(iv|tag|ct) — bumped to 512 in S31 PROMO-300"
          },
          "payloadRef": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Pointer to RawProducts row list or blob URI"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "finishedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ImportJobErrors"
            }
          },
          "errors@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workerStatus": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PublicAPI.ImportJobs-create": {
        "title": "Async-job state for Public API bulk imports and DRFOUT master-data ingest (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "type": {
            "type": "string",
            "enum": [
              "PROMOTION_BULK",
              "MASTER_DATA_PRODUCT"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "QUEUED",
              "RUNNING",
              "SUCCEEDED",
              "FAILED"
            ],
            "default": "QUEUED"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Multi-tenant boundary; auto-filled from JWT/cert"
          },
          "idempotencyKey": {
            "type": "string",
            "maxLength": 255,
            "description": "Unique per (tenantId, idempotencyKey); 24h Redis TTL"
          },
          "rowsReceived": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "rowsProcessed": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "rowsSkipped": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "DRFOUT items with ActionCode != 04, etc."
          },
          "callbackUrl": {
            "type": "string",
            "maxLength": 2048,
            "nullable": true,
            "description": "Optional webhook target on terminal status"
          },
          "callbackSecret": {
            "type": "string",
            "maxLength": 512,
            "nullable": true,
            "description": "HMAC secret encrypted at rest (AES-256-GCM, key from BTP credstore); base64url(iv|tag|ct) — bumped to 512 in S31 PROMO-300"
          },
          "payloadRef": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Pointer to RawProducts row list or blob URI"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "finishedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ImportJobErrors-create"
            }
          }
        }
      },
      "PublicAPI.ImportJobs-update": {
        "title": "Async-job state for Public API bulk imports and DRFOUT master-data ingest (for update)",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "PROMOTION_BULK",
              "MASTER_DATA_PRODUCT"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "QUEUED",
              "RUNNING",
              "SUCCEEDED",
              "FAILED"
            ],
            "default": "QUEUED"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Multi-tenant boundary; auto-filled from JWT/cert"
          },
          "idempotencyKey": {
            "type": "string",
            "maxLength": 255,
            "description": "Unique per (tenantId, idempotencyKey); 24h Redis TTL"
          },
          "rowsReceived": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "rowsProcessed": {
            "type": "integer",
            "format": "int32",
            "default": 0
          },
          "rowsSkipped": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "DRFOUT items with ActionCode != 04, etc."
          },
          "callbackUrl": {
            "type": "string",
            "maxLength": 2048,
            "nullable": true,
            "description": "Optional webhook target on terminal status"
          },
          "callbackSecret": {
            "type": "string",
            "maxLength": 512,
            "nullable": true,
            "description": "HMAC secret encrypted at rest (AES-256-GCM, key from BTP credstore); base64url(iv|tag|ct) — bumped to 512 in S31 PROMO-300"
          },
          "payloadRef": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Pointer to RawProducts row list or blob URI"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "finishedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ImportJobErrors-create"
            }
          }
        }
      },
      "PublicAPI.LocalDeployments": {
        "title": "LocalDeployments",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "instanceId": {
            "type": "string",
            "maxLength": 100,
            "nullable": true
          },
          "name": {
            "type": "string",
            "maxLength": 200,
            "nullable": true
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "registeredAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "lastHeartbeat": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "lastSyncAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "lastSyncDirection": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "datasetsLastSync": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "totalTxSynced": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "status": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "default": "ACTIVE"
          },
          "version": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "ipAddress": {
            "type": "string",
            "maxLength": 45,
            "nullable": true
          },
          "excluded": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "excludedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "excludedReason": {
            "type": "string",
            "maxLength": 500,
            "nullable": true
          },
          "capabilities": {
            "type": "string",
            "nullable": true
          },
          "syncHistory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.SyncHistory"
            }
          },
          "syncHistory@count": {
            "$ref": "#/components/schemas/count"
          }
        }
      },
      "PublicAPI.LogicalConnectors": {
        "title": "LogicalConnectors",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 5
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.LogicalConnectors_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.LogicalConnectors_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.LogicalConnectors_texts": {
        "title": "LogicalConnectors_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 5
          }
        }
      },
      "PublicAPI.LogicalConnectors_texts-create": {
        "title": "LogicalConnectors_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 5
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.LoyaltyActionTypes": {
        "title": "LoyaltyActionTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyActionTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.LoyaltyActionTypes_texts": {
        "title": "LoyaltyActionTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        }
      },
      "PublicAPI.LoyaltyActionTypes_texts-create": {
        "title": "LoyaltyActionTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.LoyaltyActions": {
        "title": "Loyalty point operation applied when a loyalty promotion triggers",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The owning promotion this loyalty action belongs to"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion this loyalty action belongs to"
          },
          "loyaltyActionType": {
            "type": "string",
            "enum": [
              "ADD_FIXED",
              "MULTIPLY_POINTS",
              "CURRENCY_TO_POINTS",
              "SUBTRACT_POINTS"
            ],
            "description": "Type of loyalty action determining which point logic applies"
          },
          "pointsValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Fixed number of points to add or subtract (for ADD_FIXED and SUBTRACT_POINTS)"
          },
          "multiplier": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true,
            "description": "Factor to multiply earned points by (for MULTIPLY_POINTS)"
          },
          "conversionRate": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true,
            "description": "Rate for converting currency amount to points (for CURRENCY_TO_POINTS, e.g. 1.0 = 1 point per unit of currency)"
          },
          "targetScope": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "ALL_ITEMS"
            ],
            "default": "ALL_ITEMS",
            "description": "Determines which items contribute to the point calculation"
          },
          "targetArticle": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles"
              }
            ],
            "nullable": true,
            "description": "Specific article for point calculation (when targetScope = ARTICLE)"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Specific article for point calculation (when targetScope = ARTICLE)"
          },
          "targetArticleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true,
            "description": "Article group for point calculation (when targetScope = ARTICLE_GROUP)"
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Article group for point calculation (when targetScope = ARTICLE_GROUP)"
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Identifier of the article list (when targetScope = ARTICLE_LIST)"
          }
        }
      },
      "PublicAPI.LoyaltyActions-create": {
        "title": "Loyalty point operation applied when a loyalty promotion triggers (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion this loyalty action belongs to"
          },
          "loyaltyActionType": {
            "type": "string",
            "enum": [
              "ADD_FIXED",
              "MULTIPLY_POINTS",
              "CURRENCY_TO_POINTS",
              "SUBTRACT_POINTS"
            ],
            "description": "Type of loyalty action determining which point logic applies"
          },
          "pointsValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Fixed number of points to add or subtract (for ADD_FIXED and SUBTRACT_POINTS)"
          },
          "multiplier": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true,
            "description": "Factor to multiply earned points by (for MULTIPLY_POINTS)"
          },
          "conversionRate": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true,
            "description": "Rate for converting currency amount to points (for CURRENCY_TO_POINTS, e.g. 1.0 = 1 point per unit of currency)"
          },
          "targetScope": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "ALL_ITEMS"
            ],
            "default": "ALL_ITEMS",
            "description": "Determines which items contribute to the point calculation"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Specific article for point calculation (when targetScope = ARTICLE)"
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Article group for point calculation (when targetScope = ARTICLE_GROUP)"
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Identifier of the article list (when targetScope = ARTICLE_LIST)"
          }
        }
      },
      "PublicAPI.LoyaltyActions-update": {
        "title": "Loyalty point operation applied when a loyalty promotion triggers (for update)",
        "type": "object",
        "properties": {
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning promotion this loyalty action belongs to"
          },
          "loyaltyActionType": {
            "type": "string",
            "enum": [
              "ADD_FIXED",
              "MULTIPLY_POINTS",
              "CURRENCY_TO_POINTS",
              "SUBTRACT_POINTS"
            ],
            "description": "Type of loyalty action determining which point logic applies"
          },
          "pointsValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Fixed number of points to add or subtract (for ADD_FIXED and SUBTRACT_POINTS)"
          },
          "multiplier": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true,
            "description": "Factor to multiply earned points by (for MULTIPLY_POINTS)"
          },
          "conversionRate": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true,
            "description": "Rate for converting currency amount to points (for CURRENCY_TO_POINTS, e.g. 1.0 = 1 point per unit of currency)"
          },
          "targetScope": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "ALL_ITEMS"
            ],
            "default": "ALL_ITEMS",
            "description": "Determines which items contribute to the point calculation"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Specific article for point calculation (when targetScope = ARTICLE)"
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Article group for point calculation (when targetScope = ARTICLE_GROUP)"
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Identifier of the article list (when targetScope = ARTICLE_LIST)"
          }
        }
      },
      "PublicAPI.LoyaltyTargetScopes": {
        "title": "LoyaltyTargetScopes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.LoyaltyTargetScopes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.LoyaltyTargetScopes_texts": {
        "title": "LoyaltyTargetScopes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.LoyaltyTargetScopes_texts-create": {
        "title": "LoyaltyTargetScopes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.MutualExclusionGroups": {
        "title": "Named group of promotions that cannot be applied simultaneously",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the exclusion group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the exclusion rule"
          },
          "resolutionStrategy": {
            "type": "string",
            "enum": [
              "HIGHEST_DISCOUNT",
              "LOWEST_DISCOUNT"
            ],
            "nullable": true,
            "default": "HIGHEST_DISCOUNT",
            "description": "How to pick the winning promotion when multiple group members match"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
            },
            "description": "Promotions assigned to this exclusion group"
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.MutualExclusionGroups-create": {
        "title": "Named group of promotions that cannot be applied simultaneously (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the exclusion group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the exclusion rule"
          },
          "resolutionStrategy": {
            "type": "string",
            "enum": [
              "HIGHEST_DISCOUNT",
              "LOWEST_DISCOUNT"
            ],
            "nullable": true,
            "default": "HIGHEST_DISCOUNT",
            "description": "How to pick the winning promotion when multiple group members match"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions-create"
            },
            "description": "Promotions assigned to this exclusion group"
          }
        }
      },
      "PublicAPI.MutualExclusionGroups-update": {
        "title": "Named group of promotions that cannot be applied simultaneously (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the exclusion group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the exclusion rule"
          },
          "resolutionStrategy": {
            "type": "string",
            "enum": [
              "HIGHEST_DISCOUNT",
              "LOWEST_DISCOUNT"
            ],
            "nullable": true,
            "default": "HIGHEST_DISCOUNT",
            "description": "How to pick the winning promotion when multiple group members match"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions-create"
            },
            "description": "Promotions assigned to this exclusion group"
          }
        }
      },
      "PublicAPI.NotificationLogs": {
        "title": "Audit record of a notification delivery attempt",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Budgets"
              }
            ],
            "nullable": true,
            "description": "The budget associated with this notification"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "The budget associated with this notification"
          },
          "budgetName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Snapshot of budget name at the time of notification"
          },
          "threshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "The consumption threshold that triggered this notification"
          },
          "consumedPercent": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Budget consumption percentage at time of notification"
          },
          "consumedAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Consumed amount at time of notification"
          },
          "totalAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Total budget amount at time of notification"
          },
          "channel": {
            "type": "string",
            "maxLength": 50,
            "default": "EMAIL",
            "description": "Notification channel used (EMAIL, SLACK, TEAMS, etc.)"
          },
          "recipient": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Recipient address (email, webhook URL, etc.)"
          },
          "status": {
            "type": "string",
            "maxLength": 20,
            "description": "Delivery status: SENT, FAILED, RATE_LIMITED, DISABLED"
          },
          "sentAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp when the notification was dispatched"
          },
          "errorMessage": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Error details if the notification failed"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          }
        }
      },
      "PublicAPI.PilotPosGroups": {
        "title": "POS group assigned to the pilot arm of a PromotionPilotConfig",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "config": {
            "$ref": "#/components/schemas/PublicAPI.PromotionPilotConfigs"
          },
          "config_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup": {
            "$ref": "#/components/schemas/PublicAPI.PosGroups"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PilotPosGroups-create": {
        "title": "POS group assigned to the pilot arm of a PromotionPilotConfig (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "config_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      },
      "PublicAPI.PilotPosGroups-update": {
        "title": "POS group assigned to the pilot arm of a PromotionPilotConfig (for update)",
        "type": "object",
        "properties": {
          "config_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          }
        }
      },
      "PublicAPI.PosGroups": {
        "title": "Named group of POS systems for targeted promotion delivery",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "posGroupCode": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Short unique business code for the POS group (e.g. NORTH, STORE-001)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the POS group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the POS group"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
            },
            "description": "Promotions assigned to this POS group"
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PosGroups-create": {
        "title": "Named group of POS systems for targeted promotion delivery (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "posGroupCode": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Short unique business code for the POS group (e.g. NORTH, STORE-001)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the POS group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the POS group"
          }
        }
      },
      "PublicAPI.PosGroups-update": {
        "title": "Named group of POS systems for targeted promotion delivery (for update)",
        "type": "object",
        "properties": {
          "posGroupCode": {
            "type": "string",
            "maxLength": 20,
            "nullable": true,
            "description": "Short unique business code for the POS group (e.g. NORTH, STORE-001)"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the POS group"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the POS group"
          }
        }
      },
      "PublicAPI.PriorityGroupPromotions": {
        "title": "Assignment of a promotion to a priority group",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "priorityGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
              }
            ],
            "description": "The owning priority group"
          },
          "priorityGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning priority group"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The assigned promotion (unique – a promotion belongs to at most one group)"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion (unique – a promotion belongs to at most one group)"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PriorityGroupPromotions-create": {
        "title": "Assignment of a promotion to a priority group (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "priorityGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning priority group"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion (unique – a promotion belongs to at most one group)"
          }
        }
      },
      "PublicAPI.PriorityGroupPromotions-update": {
        "title": "Assignment of a promotion to a priority group (for update)",
        "type": "object",
        "properties": {
          "priorityGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning priority group"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion (unique – a promotion belongs to at most one group)"
          }
        }
      },
      "PublicAPI.PriorityGroups": {
        "title": "Named group controlling promotion application order when multiple promotions match",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the priority group"
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "Priority value; higher number = applied first (default 0)"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the priority group"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions"
            },
            "description": "Promotions assigned to this priority group"
          },
          "promotions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PriorityGroups-create": {
        "title": "Named group controlling promotion application order when multiple promotions match (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the priority group"
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "Priority value; higher number = applied first (default 0)"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the priority group"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions-create"
            },
            "description": "Promotions assigned to this priority group"
          }
        }
      },
      "PublicAPI.PriorityGroups-update": {
        "title": "Named group controlling promotion application order when multiple promotions match (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the priority group"
          },
          "priority": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "description": "Priority value; higher number = applied first (default 0)"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the priority group"
          },
          "promotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PriorityGroupPromotions-create"
            },
            "description": "Promotions assigned to this priority group"
          }
        }
      },
      "PublicAPI.PromotionPilotConfigs": {
        "title": "Pilot/control POS group split + pilot window for a Promotion (F9.a)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The Promotion this pilot config applies to (1 : 1)"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The Promotion this pilot config applies to (1 : 1)"
          },
          "pilotPosGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PilotPosGroups"
            },
            "description": "POS groups participating in the pilot arm — pre-filter narrows targeting to these during the pilot window"
          },
          "pilotPosGroups@count": {
            "$ref": "#/components/schemas/count"
          },
          "controlPosGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ControlPosGroups"
            },
            "description": "POS groups in the control arm — used for A/B uplift comparison; never receive the pilot promotion"
          },
          "controlPosGroups@count": {
            "$ref": "#/components/schemas/count"
          },
          "pilotStartAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Start of the pilot window. Outside the window the Promotion is dropped by the pre-filter."
          },
          "pilotEndAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "End of the pilot window. The pilot-auto-promote-job flips PILOT→ACTIVE/DRAFT at this point."
          },
          "autoPromote": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true the auto-promote job moves PILOT→ACTIVE if uplift ≥ autoPromoteThreshold; otherwise PILOT→DRAFT"
          },
          "autoPromoteThreshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Minimum measured uplift percentage required for auto-promote to flip PILOT→ACTIVE."
          },
          "pilotShare": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 3,
            "x-sap-scale": 2,
            "nullable": true,
            "default": "1.0",
            "description": "Fraction of POS within PilotPosGroups that receive the promotion. 1.00 = all (default, identical to legacy behaviour). 0.50 = random 50% within each group. Sampling is deterministic per POS+Promo."
          },
          "controlGroupSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Optional absolute cap on the control sample size (in POS count). 0 = use all POS in ControlPosGroups (default, identical to legacy behaviour). N>0 = sample N POS deterministically across the control groups."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PromotionPilotConfigs-create": {
        "title": "Pilot/control POS group split + pilot window for a Promotion (F9.a) (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The Promotion this pilot config applies to (1 : 1)"
          },
          "pilotPosGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PilotPosGroups-create"
            },
            "description": "POS groups participating in the pilot arm — pre-filter narrows targeting to these during the pilot window"
          },
          "controlPosGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ControlPosGroups-create"
            },
            "description": "POS groups in the control arm — used for A/B uplift comparison; never receive the pilot promotion"
          },
          "pilotStartAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Start of the pilot window. Outside the window the Promotion is dropped by the pre-filter."
          },
          "pilotEndAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "End of the pilot window. The pilot-auto-promote-job flips PILOT→ACTIVE/DRAFT at this point."
          },
          "autoPromote": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true the auto-promote job moves PILOT→ACTIVE if uplift ≥ autoPromoteThreshold; otherwise PILOT→DRAFT"
          },
          "autoPromoteThreshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Minimum measured uplift percentage required for auto-promote to flip PILOT→ACTIVE."
          },
          "pilotShare": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 3,
            "x-sap-scale": 2,
            "nullable": true,
            "default": "1.0",
            "description": "Fraction of POS within PilotPosGroups that receive the promotion. 1.00 = all (default, identical to legacy behaviour). 0.50 = random 50% within each group. Sampling is deterministic per POS+Promo."
          },
          "controlGroupSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Optional absolute cap on the control sample size (in POS count). 0 = use all POS in ControlPosGroups (default, identical to legacy behaviour). N>0 = sample N POS deterministically across the control groups."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          }
        }
      },
      "PublicAPI.PromotionPilotConfigs-update": {
        "title": "Pilot/control POS group split + pilot window for a Promotion (F9.a) (for update)",
        "type": "object",
        "properties": {
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The Promotion this pilot config applies to (1 : 1)"
          },
          "pilotPosGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PilotPosGroups-create"
            },
            "description": "POS groups participating in the pilot arm — pre-filter narrows targeting to these during the pilot window"
          },
          "controlPosGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ControlPosGroups-create"
            },
            "description": "POS groups in the control arm — used for A/B uplift comparison; never receive the pilot promotion"
          },
          "pilotStartAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Start of the pilot window. Outside the window the Promotion is dropped by the pre-filter."
          },
          "pilotEndAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "End of the pilot window. The pilot-auto-promote-job flips PILOT→ACTIVE/DRAFT at this point."
          },
          "autoPromote": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true the auto-promote job moves PILOT→ACTIVE if uplift ≥ autoPromoteThreshold; otherwise PILOT→DRAFT"
          },
          "autoPromoteThreshold": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "nullable": true,
            "description": "Minimum measured uplift percentage required for auto-promote to flip PILOT→ACTIVE."
          },
          "pilotShare": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 1,
                "minimum": 0
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 3,
            "x-sap-scale": 2,
            "nullable": true,
            "default": "1.0",
            "description": "Fraction of POS within PilotPosGroups that receive the promotion. 1.00 = all (default, identical to legacy behaviour). 0.50 = random 50% within each group. Sampling is deterministic per POS+Promo."
          },
          "controlGroupSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Optional absolute cap on the control sample size (in POS count). 0 = use all POS in ControlPosGroups (default, identical to legacy behaviour). N>0 = sample N POS deterministically across the control groups."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          }
        }
      },
      "PublicAPI.PromotionPosGroups": {
        "title": "Assignment of a promotion to a POS group",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The assigned promotion"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion"
          },
          "posGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PosGroups"
              }
            ],
            "description": "The assigned POS group"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned POS group"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PromotionPosGroups-create": {
        "title": "Assignment of a promotion to a POS group (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned POS group"
          }
        }
      },
      "PublicAPI.PromotionPosGroups-update": {
        "title": "Assignment of a promotion to a POS group (for update)",
        "type": "object",
        "properties": {
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned promotion"
          },
          "posGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The assigned POS group"
          }
        }
      },
      "PublicAPI.PromotionStatuses": {
        "title": "PromotionStatuses",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionStatuses_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionStatuses_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.PromotionStatuses_texts": {
        "title": "PromotionStatuses_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.PromotionStatuses_texts-create": {
        "title": "PromotionStatuses_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.PromotionTemplates": {
        "title": "Frozen Promotion-shaped snapshot used to spawn new Promotions via materialize / cloneToPromotion",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Short template code"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the template"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the template"
          },
          "useCase": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.UseCases"
              }
            ],
            "nullable": true,
            "description": "Categorises the template by retail scenario (weekly leaflet, seasonal, loyalty, etc.)"
          },
          "useCase_code": {
            "type": "string",
            "maxLength": 30,
            "nullable": true,
            "description": "Categorises the template by retail scenario (weekly leaflet, seasonal, loyalty, etc.)"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionTypes"
              }
            ],
            "nullable": true
          },
          "type_code": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "priorityGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PriorityGroups"
              }
            ],
            "nullable": true
          },
          "priorityGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
            },
            "description": "Flat eligibility conditions evaluated with per-row AND/OR/NOT logic (mirrors Promotions.conditions)"
          },
          "conditions@count": {
            "$ref": "#/components/schemas/count"
          },
          "discountActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
            },
            "description": "Discount actions (mirrors Promotions.discountActions)"
          },
          "discountActions@count": {
            "$ref": "#/components/schemas/count"
          },
          "loyaltyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions"
            },
            "description": "Loyalty actions (mirrors Promotions.loyaltyActions)"
          },
          "loyaltyActions@count": {
            "$ref": "#/components/schemas/count"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts"
              }
            ],
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.PromotionTemplates-create": {
        "title": "Frozen Promotion-shaped snapshot used to spawn new Promotions via materialize / cloneToPromotion (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Short template code"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the template"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the template"
          },
          "useCase_code": {
            "type": "string",
            "maxLength": 30,
            "nullable": true,
            "description": "Categorises the template by retail scenario (weekly leaflet, seasonal, loyalty, etc.)"
          },
          "type_code": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "priorityGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditions-create"
            },
            "description": "Flat eligibility conditions evaluated with per-row AND/OR/NOT logic (mirrors Promotions.conditions)"
          },
          "discountActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions-create"
            },
            "description": "Discount actions (mirrors Promotions.discountActions)"
          },
          "loyaltyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions-create"
            },
            "description": "Loyalty actions (mirrors Promotions.loyaltyActions)"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts-create"
            }
          }
        }
      },
      "PublicAPI.PromotionTemplates-update": {
        "title": "Frozen Promotion-shaped snapshot used to spawn new Promotions via materialize / cloneToPromotion (for update)",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "maxLength": 50,
            "nullable": true,
            "description": "Short template code"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the template"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the template"
          },
          "useCase_code": {
            "type": "string",
            "maxLength": 30,
            "nullable": true,
            "description": "Categorises the template by retail scenario (weekly leaflet, seasonal, loyalty, etc.)"
          },
          "type_code": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "priorityGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditions-create"
            },
            "description": "Flat eligibility conditions evaluated with per-row AND/OR/NOT logic (mirrors Promotions.conditions)"
          },
          "discountActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions-create"
            },
            "description": "Discount actions (mirrors Promotions.discountActions)"
          },
          "loyaltyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateLoyaltyActions-create"
            },
            "description": "Loyalty actions (mirrors Promotions.loyaltyActions)"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionTemplates_texts-create"
            }
          }
        }
      },
      "PublicAPI.PromotionTemplates_texts": {
        "title": "PromotionTemplates_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the template"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the template"
          }
        }
      },
      "PublicAPI.PromotionTemplates_texts-create": {
        "title": "PromotionTemplates_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the template"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Detailed description of the template"
          }
        },
        "required": [
          "locale"
        ]
      },
      "PublicAPI.PromotionTypes": {
        "title": "PromotionTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.PromotionTypes_texts": {
        "title": "PromotionTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.PromotionTypes_texts-create": {
        "title": "PromotionTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.Promotions": {
        "title": "Core promotion definition with validity, type and calculation settings",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Short display name of the promotion"
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "nullable": true,
            "description": "Detailed description of the promotion"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "EXPIRED",
              "ARCHIVED",
              "PENDING_APPROVAL",
              "APPROVED",
              "REJECTED",
              "PILOT"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status"
          },
          "statusText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionStatuses"
              }
            ],
            "nullable": true
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "RECEIPT",
              "LOYALTY",
              "BUNDLE",
              "COUPON"
            ],
            "description": "Promotion type determining trigger and reward logic"
          },
          "typeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionTypes"
              }
            ],
            "nullable": true
          },
          "exclusivityLevel": {
            "type": "string",
            "enum": [
              "NONE",
              "PROMOTION",
              "GROUP",
              "GLOBAL"
            ],
            "default": "NONE",
            "description": "Controls combinability with other promotions"
          },
          "exclusivityLevelText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ExclusivityLevels"
              }
            ],
            "nullable": true
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the promotion validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the promotion validity window"
          },
          "happyHourStart": {
            "type": "string",
            "format": "time",
            "example": "15:51:04",
            "nullable": true,
            "description": "Daily start time for happy-hour promotions (HH:MM:SS)"
          },
          "happyHourEnd": {
            "type": "string",
            "format": "time",
            "example": "15:51:04",
            "nullable": true,
            "description": "Daily end time for happy-hour promotions (HH:MM:SS)"
          },
          "daysOfWeek": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "description": "Optional array of active weekdays (0=Sunday … 6=Saturday). Empty/null means every day."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "calculationConfig": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CalculationConfigs"
              }
            ],
            "nullable": true,
            "description": "Settings controlling how discounts are calculated"
          },
          "posGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups"
            },
            "description": "POS groups this promotion is restricted to. Empty = all POS groups."
          },
          "posGroups@count": {
            "$ref": "#/components/schemas/count"
          },
          "campaign": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Campaigns"
              }
            ],
            "nullable": true,
            "description": "Optional Campaign that groups this Promotion. Nullable. ON DELETE SET NULL — deleting a Campaign keeps the Promotion (campaign becomes null)."
          },
          "campaign_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional Campaign that groups this Promotion. Nullable. ON DELETE SET NULL — deleting a Campaign keeps the Promotion (campaign becomes null)."
          },
          "isExperiment": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, this promotion is run as an A/B experiment comparing the control vs experiment POS groups."
          },
          "controlGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "PosGroups.ID treated as the A/B control group."
          },
          "experimentGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "PosGroups.ID treated as the A/B experiment group."
          },
          "discountActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.DiscountActions"
            },
            "description": "Reward actions applied when this promotion triggers"
          },
          "discountActions@count": {
            "$ref": "#/components/schemas/count"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Conditions"
            },
            "description": "Eligibility conditions evaluated with flat AND/OR/NOT logic"
          },
          "conditions@count": {
            "$ref": "#/components/schemas/count"
          },
          "mutualExclusionGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ExclusionGroupPromotions"
            },
            "description": "Exclusion group assignments for this promotion"
          },
          "mutualExclusionGroups@count": {
            "$ref": "#/components/schemas/count"
          },
          "loyaltyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.LoyaltyActions"
            },
            "description": "Loyalty point operations for LOYALTY type promotions"
          },
          "loyaltyActions@count": {
            "$ref": "#/components/schemas/count"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Promotions_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions_texts"
              }
            ],
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Promotions-create": {
        "title": "Core promotion definition with validity, type and calculation settings (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Short display name of the promotion"
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "nullable": true,
            "description": "Detailed description of the promotion"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "EXPIRED",
              "ARCHIVED",
              "PENDING_APPROVAL",
              "APPROVED",
              "REJECTED",
              "PILOT"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "RECEIPT",
              "LOYALTY",
              "BUNDLE",
              "COUPON"
            ],
            "description": "Promotion type determining trigger and reward logic"
          },
          "exclusivityLevel": {
            "type": "string",
            "enum": [
              "NONE",
              "PROMOTION",
              "GROUP",
              "GLOBAL"
            ],
            "default": "NONE",
            "description": "Controls combinability with other promotions"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the promotion validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the promotion validity window"
          },
          "happyHourStart": {
            "type": "string",
            "format": "time",
            "example": "15:51:04",
            "nullable": true,
            "description": "Daily start time for happy-hour promotions (HH:MM:SS)"
          },
          "happyHourEnd": {
            "type": "string",
            "format": "time",
            "example": "15:51:04",
            "nullable": true,
            "description": "Daily end time for happy-hour promotions (HH:MM:SS)"
          },
          "daysOfWeek": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "description": "Optional array of active weekdays (0=Sunday … 6=Saturday). Empty/null means every day."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "calculationConfig": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CalculationConfigs-create"
              }
            ],
            "nullable": true,
            "description": "Settings controlling how discounts are calculated"
          },
          "posGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups-create"
            },
            "description": "POS groups this promotion is restricted to. Empty = all POS groups."
          },
          "campaign_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional Campaign that groups this Promotion. Nullable. ON DELETE SET NULL — deleting a Campaign keeps the Promotion (campaign becomes null)."
          },
          "isExperiment": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, this promotion is run as an A/B experiment comparing the control vs experiment POS groups."
          },
          "controlGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "PosGroups.ID treated as the A/B control group."
          },
          "experimentGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "PosGroups.ID treated as the A/B experiment group."
          },
          "discountActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.DiscountActions-create"
            },
            "description": "Reward actions applied when this promotion triggers"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Conditions-create"
            },
            "description": "Eligibility conditions evaluated with flat AND/OR/NOT logic"
          },
          "loyaltyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.LoyaltyActions-create"
            },
            "description": "Loyalty point operations for LOYALTY type promotions"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Promotions_texts-create"
            }
          }
        },
        "required": [
          "name"
        ]
      },
      "PublicAPI.Promotions-update": {
        "title": "Core promotion definition with validity, type and calculation settings (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Short display name of the promotion"
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "nullable": true,
            "description": "Detailed description of the promotion"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "EXPIRED",
              "ARCHIVED",
              "PENDING_APPROVAL",
              "APPROVED",
              "REJECTED",
              "PILOT"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "RECEIPT",
              "LOYALTY",
              "BUNDLE",
              "COUPON"
            ],
            "description": "Promotion type determining trigger and reward logic"
          },
          "exclusivityLevel": {
            "type": "string",
            "enum": [
              "NONE",
              "PROMOTION",
              "GROUP",
              "GLOBAL"
            ],
            "default": "NONE",
            "description": "Controls combinability with other promotions"
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the promotion validity window"
          },
          "validTo": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the promotion validity window"
          },
          "happyHourStart": {
            "type": "string",
            "format": "time",
            "example": "15:51:04",
            "nullable": true,
            "description": "Daily start time for happy-hour promotions (HH:MM:SS)"
          },
          "happyHourEnd": {
            "type": "string",
            "format": "time",
            "example": "15:51:04",
            "nullable": true,
            "description": "Daily end time for happy-hour promotions (HH:MM:SS)"
          },
          "daysOfWeek": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "description": "Optional array of active weekdays (0=Sunday … 6=Saturday). Empty/null means every day."
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "calculationConfig": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CalculationConfigs-create"
              }
            ],
            "nullable": true,
            "description": "Settings controlling how discounts are calculated"
          },
          "posGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.PromotionPosGroups-create"
            },
            "description": "POS groups this promotion is restricted to. Empty = all POS groups."
          },
          "campaign_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional Campaign that groups this Promotion. Nullable. ON DELETE SET NULL — deleting a Campaign keeps the Promotion (campaign becomes null)."
          },
          "isExperiment": {
            "type": "boolean",
            "nullable": true,
            "default": false,
            "description": "When true, this promotion is run as an A/B experiment comparing the control vs experiment POS groups."
          },
          "controlGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "PosGroups.ID treated as the A/B control group."
          },
          "experimentGroupId": {
            "type": "string",
            "maxLength": 36,
            "nullable": true,
            "description": "PosGroups.ID treated as the A/B experiment group."
          },
          "discountActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.DiscountActions-create"
            },
            "description": "Reward actions applied when this promotion triggers"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Conditions-create"
            },
            "description": "Eligibility conditions evaluated with flat AND/OR/NOT logic"
          },
          "loyaltyActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.LoyaltyActions-create"
            },
            "description": "Loyalty point operations for LOYALTY type promotions"
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.Promotions_texts-create"
            }
          }
        }
      },
      "PublicAPI.PromotionsCalendar": {
        "title": "Core promotion definition with validity, type and calculation settings",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Short display name of the promotion"
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACTIVE",
              "INACTIVE",
              "EXPIRED",
              "ARCHIVED",
              "PENDING_APPROVAL",
              "APPROVED",
              "REJECTED",
              "PILOT"
            ],
            "default": "DRAFT",
            "description": "Current lifecycle status"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "RECEIPT",
              "LOYALTY",
              "BUNDLE",
              "COUPON"
            ],
            "description": "Promotion type determining trigger and reward logic"
          },
          "startAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Start date/time of the promotion validity window"
          },
          "endAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "End date/time of the promotion validity window"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Promotions_texts": {
        "title": "Promotions_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Short display name of the promotion"
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "nullable": true,
            "description": "Detailed description of the promotion"
          }
        }
      },
      "PublicAPI.Promotions_texts-create": {
        "title": "Promotions_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Short display name of the promotion"
          },
          "description": {
            "type": "string",
            "maxLength": 5000,
            "nullable": true,
            "description": "Detailed description of the promotion"
          }
        },
        "required": [
          "locale",
          "name"
        ]
      },
      "PublicAPI.QuantityPriceTiers": {
        "title": "Volume-based discount tier for QUANTITY_TIER promotions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions"
              }
            ],
            "description": "The parent quantity-tier action"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent quantity-tier action"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum basket quantity of the dedicated code to activate this tier"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "description": "Kind of discount for this tier (UNIT_PRICE, ABSOLUTE, or PERCENTAGE)"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Discount value for this tier (unit price, absolute amount, or percentage points)"
          }
        }
      },
      "PublicAPI.QuantityPriceTiers-create": {
        "title": "Volume-based discount tier for QUANTITY_TIER promotions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent quantity-tier action"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum basket quantity of the dedicated code to activate this tier"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "description": "Kind of discount for this tier (UNIT_PRICE, ABSOLUTE, or PERCENTAGE)"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Discount value for this tier (unit price, absolute amount, or percentage points)"
          }
        }
      },
      "PublicAPI.QuantityPriceTiers-update": {
        "title": "Volume-based discount tier for QUANTITY_TIER promotions (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent quantity-tier action"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum basket quantity of the dedicated code to activate this tier"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "description": "Kind of discount for this tier (UNIT_PRICE, ABSOLUTE, or PERCENTAGE)"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Discount value for this tier (unit price, absolute amount, or percentage points)"
          }
        }
      },
      "PublicAPI.RechargeContributions": {
        "title": "Budget contribution from a stakeholder",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "stakeholder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders"
              }
            ],
            "description": "The contributing stakeholder"
          },
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The contributing stakeholder"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Contribution amount"
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Currencies"
              }
            ],
            "nullable": true,
            "description": "Currency of the contribution"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency of the contribution"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Notes or reference for this contribution"
          },
          "contributedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp of the contribution"
          },
          "budget": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Budgets"
              }
            ],
            "nullable": true,
            "description": "Optional: specific budget this contribution is for"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional: specific budget this contribution is for"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.RechargeContributions-create": {
        "title": "Budget contribution from a stakeholder (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The contributing stakeholder"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Contribution amount"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency of the contribution"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Notes or reference for this contribution"
          },
          "contributedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp of the contribution"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional: specific budget this contribution is for"
          }
        }
      },
      "PublicAPI.RechargeContributions-update": {
        "title": "Budget contribution from a stakeholder (for update)",
        "type": "object",
        "properties": {
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The contributing stakeholder"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Contribution amount"
          },
          "currency_code": {
            "type": "string",
            "maxLength": 3,
            "nullable": true,
            "description": "Currency of the contribution"
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true,
            "description": "Notes or reference for this contribution"
          },
          "contributedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "nullable": true,
            "description": "Timestamp of the contribution"
          },
          "budget_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true,
            "description": "Optional: specific budget this contribution is for"
          }
        }
      },
      "PublicAPI.RedemptionLogs": {
        "title": "Audit record of a coupon code redemption event",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "couponCode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponCodes"
              }
            ],
            "description": "The coupon code that was redeemed"
          },
          "couponCode_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon code that was redeemed"
          },
          "transactionId": {
            "type": "string",
            "maxLength": 50,
            "description": "POS transaction identifier where the redemption occurred"
          },
          "redeemedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Timestamp when the coupon was redeemed"
          }
        }
      },
      "PublicAPI.RedemptionLogs-create": {
        "title": "Audit record of a coupon code redemption event (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "couponCode_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The coupon code that was redeemed"
          },
          "transactionId": {
            "type": "string",
            "maxLength": 50,
            "description": "POS transaction identifier where the redemption occurred"
          },
          "redeemedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04Z",
            "description": "Timestamp when the coupon was redeemed"
          }
        }
      },
      "PublicAPI.ResolutionStrategies": {
        "title": "ResolutionStrategies",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ResolutionStrategies_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.ResolutionStrategies_texts": {
        "title": "ResolutionStrategies_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.ResolutionStrategies_texts-create": {
        "title": "ResolutionStrategies_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.RoundingModes": {
        "title": "RoundingModes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RoundingModes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.RoundingModes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.RoundingModes_texts": {
        "title": "RoundingModes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.RoundingModes_texts-create": {
        "title": "RoundingModes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.ScaledReceiptTiers": {
        "title": "Threshold-based discount tier for scaled receipt promotions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountActions"
              }
            ],
            "description": "The parent scaled receipt action"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent scaled receipt action"
          },
          "thresholdAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Minimum receipt total to activate this tier"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "description": "Kind of discount for this tier"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Discount value for this tier (percentage or monetary)"
          }
        }
      },
      "PublicAPI.ScaledReceiptTiers-create": {
        "title": "Threshold-based discount tier for scaled receipt promotions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent scaled receipt action"
          },
          "thresholdAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Minimum receipt total to activate this tier"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "description": "Kind of discount for this tier"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Discount value for this tier (percentage or monetary)"
          }
        }
      },
      "PublicAPI.ScaledReceiptTiers-update": {
        "title": "Threshold-based discount tier for scaled receipt promotions (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The parent scaled receipt action"
          },
          "thresholdAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Minimum receipt total to activate this tier"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "description": "Kind of discount for this tier"
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "description": "Discount value for this tier (percentage or monetary)"
          }
        }
      },
      "PublicAPI.SelectionTypes": {
        "title": "SelectionTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.SelectionTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.SelectionTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.SelectionTypes_texts": {
        "title": "SelectionTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.SelectionTypes_texts-create": {
        "title": "SelectionTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.StakeholderPromotions": {
        "title": "Links a stakeholder to a promotion with a cost-sharing percentage (deprecated)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "stakeholder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Stakeholders"
              }
            ],
            "description": "The funding stakeholder"
          },
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The funding stakeholder"
          },
          "promotion": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Promotions"
              }
            ],
            "description": "The promotion being funded"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion being funded"
          },
          "sharePercentage": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Percentage of promotion cost borne by this stakeholder (0-100)"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.StakeholderPromotions-create": {
        "title": "Links a stakeholder to a promotion with a cost-sharing percentage (deprecated) (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The funding stakeholder"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion being funded"
          },
          "sharePercentage": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Percentage of promotion cost borne by this stakeholder (0-100)"
          }
        }
      },
      "PublicAPI.StakeholderPromotions-update": {
        "title": "Links a stakeholder to a promotion with a cost-sharing percentage (deprecated) (for update)",
        "type": "object",
        "properties": {
          "stakeholder_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The funding stakeholder"
          },
          "promotion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The promotion being funded"
          },
          "sharePercentage": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 999.99,
                "minimum": -999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 5,
            "x-sap-scale": 2,
            "default": 0,
            "description": "Percentage of promotion cost borne by this stakeholder (0-100)"
          }
        }
      },
      "PublicAPI.StakeholderTypes": {
        "title": "StakeholderTypes",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.StakeholderTypes_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.StakeholderTypes_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.StakeholderTypes_texts": {
        "title": "StakeholderTypes_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        }
      },
      "PublicAPI.StakeholderTypes_texts-create": {
        "title": "StakeholderTypes_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 20
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.Stakeholders": {
        "title": "Party that funds budgets (supplier, brand, or internal)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the stakeholder"
          },
          "type": {
            "type": "string",
            "enum": [
              "SUPPLIER",
              "BRAND",
              "INTERNAL",
              "EXTERNAL_SUPPLIER"
            ],
            "description": "Classification of the stakeholder"
          },
          "contactEmail": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Primary contact email address"
          },
          "budgetAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.BudgetStakeholders"
            },
            "description": "Budgets funded by this stakeholder with share percentages"
          },
          "budgetAssignments@count": {
            "$ref": "#/components/schemas/count"
          },
          "rechargeContributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RechargeContributions"
            },
            "description": "Budget contributions made by this stakeholder"
          },
          "rechargeContributions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.Stakeholders-create": {
        "title": "Party that funds budgets (supplier, brand, or internal) (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the stakeholder"
          },
          "type": {
            "type": "string",
            "enum": [
              "SUPPLIER",
              "BRAND",
              "INTERNAL",
              "EXTERNAL_SUPPLIER"
            ],
            "description": "Classification of the stakeholder"
          },
          "contactEmail": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Primary contact email address"
          },
          "rechargeContributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RechargeContributions-create"
            },
            "description": "Budget contributions made by this stakeholder"
          }
        }
      },
      "PublicAPI.Stakeholders-update": {
        "title": "Party that funds budgets (supplier, brand, or internal) (for update)",
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Owning tenant identifier for multi-tenancy isolation"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "Display name of the stakeholder"
          },
          "type": {
            "type": "string",
            "enum": [
              "SUPPLIER",
              "BRAND",
              "INTERNAL",
              "EXTERNAL_SUPPLIER"
            ],
            "description": "Classification of the stakeholder"
          },
          "contactEmail": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "Primary contact email address"
          },
          "rechargeContributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.RechargeContributions-create"
            },
            "description": "Budget contributions made by this stakeholder"
          }
        }
      },
      "PublicAPI.SyncHistory": {
        "title": "SyncHistory",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "deployment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.LocalDeployments"
              }
            ],
            "nullable": true
          },
          "deployment_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "direction": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "itemCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0
          },
          "status": {
            "type": "string",
            "maxLength": 10,
            "nullable": true,
            "default": "SUCCESS"
          },
          "errorMessage": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateConditionArticleListItems": {
        "title": "Article entry in a template condition article list; mirrors ConditionArticleListItems",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition": {
            "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateConditionArticleListItems-create": {
        "title": "Article entry in a template condition article list; mirrors ConditionArticleListItems (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateConditionArticleListItems-update": {
        "title": "Article entry in a template condition article list; mirrors ConditionArticleListItems (for update)",
        "type": "object",
        "properties": {
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateConditionValueListItems": {
        "title": "Value entry in a template condition value list; mirrors ConditionValueListItems",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition": {
            "$ref": "#/components/schemas/PublicAPI.TemplateConditions"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "category": {
            "type": "string",
            "enum": [
              "ARTICLE_NUMBER",
              "ARTICLE_GROUP_ID",
              "CUSTOMER_GROUP_ID",
              "CARD_TYPE",
              "BIN_PREFIX",
              "LOYALTY_TIER",
              "REASON_CODE",
              "PAYMENT_MEANS",
              "CUSTOMER_ID",
              "MANUFACTURER_ID",
              "CHANNEL"
            ]
          },
          "value": {
            "type": "string",
            "maxLength": 255
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateConditionValueListItems-create": {
        "title": "Value entry in a template condition value list; mirrors ConditionValueListItems (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "category": {
            "type": "string",
            "enum": [
              "ARTICLE_NUMBER",
              "ARTICLE_GROUP_ID",
              "CUSTOMER_GROUP_ID",
              "CARD_TYPE",
              "BIN_PREFIX",
              "LOYALTY_TIER",
              "REASON_CODE",
              "PAYMENT_MEANS",
              "CUSTOMER_ID",
              "MANUFACTURER_ID",
              "CHANNEL"
            ]
          },
          "value": {
            "type": "string",
            "maxLength": 255
          }
        }
      },
      "PublicAPI.TemplateConditionValueListItems-update": {
        "title": "Value entry in a template condition value list; mirrors ConditionValueListItems (for update)",
        "type": "object",
        "properties": {
          "condition_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "category": {
            "type": "string",
            "enum": [
              "ARTICLE_NUMBER",
              "ARTICLE_GROUP_ID",
              "CUSTOMER_GROUP_ID",
              "CARD_TYPE",
              "BIN_PREFIX",
              "LOYALTY_TIER",
              "REASON_CODE",
              "PAYMENT_MEANS",
              "CUSTOMER_ID",
              "MANUFACTURER_ID",
              "CHANNEL"
            ]
          },
          "value": {
            "type": "string",
            "maxLength": 255
          }
        }
      },
      "PublicAPI.TemplateConditions": {
        "title": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "template": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
              }
            ],
            "description": "The owning template"
          },
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning template"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "CUSTOMER_GROUP",
              "RECEIPT_AMOUNT",
              "ITEM_QUANTITY",
              "PAYMENT_MEANS",
              "PAYMENT_CARD",
              "CUSTOMER",
              "MANUFACTURER",
              "ADDITIONAL_FIELD",
              "CREDIT_CARD_BIN",
              "USER_DEFINED",
              "LOYALTY_ACCOUNT",
              "MANUAL_DISCOUNT",
              "CHANNEL",
              "TIME_WINDOW",
              "TIME_PERIOD"
            ],
            "description": "Type of condition determining which evaluation logic applies"
          },
          "conditionTypeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ConditionTypes"
              }
            ],
            "nullable": true
          },
          "logicalConnector": {
            "type": "string",
            "enum": [
              "AND",
              "OR",
              "NOT"
            ],
            "default": "AND",
            "description": "AND/OR/NOT connector for flat condition evaluation"
          },
          "logicalConnectorText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.LogicalConnectors"
              }
            ],
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Display order of conditions within the template"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "quantityUom": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "minAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "currency": {
            "type": "string",
            "maxLength": 3,
            "nullable": true
          },
          "fieldName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "expectedValue": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "comparisonOperator": {
            "type": "string",
            "enum": [
              "EQUALS",
              "CONTAINS",
              "STARTS_WITH",
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN",
              "GTE",
              "LTE"
            ],
            "nullable": true
          },
          "minPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "requireReasonCode": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "valueListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems"
            },
            "description": "Generic value list for condition types that match against sets of values"
          },
          "valueListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems"
            },
            "description": "Inline article list for ARTICLE_LIST condition type"
          },
          "articleListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateConditions-create": {
        "title": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning template"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "CUSTOMER_GROUP",
              "RECEIPT_AMOUNT",
              "ITEM_QUANTITY",
              "PAYMENT_MEANS",
              "PAYMENT_CARD",
              "CUSTOMER",
              "MANUFACTURER",
              "ADDITIONAL_FIELD",
              "CREDIT_CARD_BIN",
              "USER_DEFINED",
              "LOYALTY_ACCOUNT",
              "MANUAL_DISCOUNT",
              "CHANNEL",
              "TIME_WINDOW",
              "TIME_PERIOD"
            ],
            "description": "Type of condition determining which evaluation logic applies"
          },
          "logicalConnector": {
            "type": "string",
            "enum": [
              "AND",
              "OR",
              "NOT"
            ],
            "default": "AND",
            "description": "AND/OR/NOT connector for flat condition evaluation"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Display order of conditions within the template"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "quantityUom": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "minAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "currency": {
            "type": "string",
            "maxLength": 3,
            "nullable": true
          },
          "fieldName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "expectedValue": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "comparisonOperator": {
            "type": "string",
            "enum": [
              "EQUALS",
              "CONTAINS",
              "STARTS_WITH",
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN",
              "GTE",
              "LTE"
            ],
            "nullable": true
          },
          "minPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "requireReasonCode": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "valueListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems-create"
            },
            "description": "Generic value list for condition types that match against sets of values"
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST condition type"
          }
        }
      },
      "PublicAPI.TemplateConditions-update": {
        "title": "Flat condition row on a PromotionTemplate; column-for-column mirror of Conditions (for update)",
        "type": "object",
        "properties": {
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "description": "The owning template"
          },
          "type": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "CUSTOMER_GROUP",
              "RECEIPT_AMOUNT",
              "ITEM_QUANTITY",
              "PAYMENT_MEANS",
              "PAYMENT_CARD",
              "CUSTOMER",
              "MANUFACTURER",
              "ADDITIONAL_FIELD",
              "CREDIT_CARD_BIN",
              "USER_DEFINED",
              "LOYALTY_ACCOUNT",
              "MANUAL_DISCOUNT",
              "CHANNEL",
              "TIME_WINDOW",
              "TIME_PERIOD"
            ],
            "description": "Type of condition determining which evaluation logic applies"
          },
          "logicalConnector": {
            "type": "string",
            "enum": [
              "AND",
              "OR",
              "NOT"
            ],
            "default": "AND",
            "description": "AND/OR/NOT connector for flat condition evaluation"
          },
          "sortOrder": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 0,
            "description": "Display order of conditions within the template"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "quantityUom": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "minAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "currency": {
            "type": "string",
            "maxLength": 3,
            "nullable": true
          },
          "fieldName": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "expectedValue": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "comparisonOperator": {
            "type": "string",
            "enum": [
              "EQUALS",
              "CONTAINS",
              "STARTS_WITH",
              "GREATER_THAN",
              "LESS_THAN",
              "BETWEEN",
              "GTE",
              "LTE"
            ],
            "nullable": true
          },
          "minPoints": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "requireReasonCode": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "valueListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditionValueListItems-create"
            },
            "description": "Generic value list for condition types that match against sets of values"
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateConditionArticleListItems-create"
            },
            "description": "Inline article list for ARTICLE_LIST condition type"
          }
        }
      },
      "PublicAPI.TemplateDiscountActionArticleListItems": {
        "title": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          },
          "fixedPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionArticleListItems-create": {
        "title": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          },
          "fixedPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionArticleListItems-update": {
        "title": "Mirrors ActionArticleListItems for template-side ARTICLE_LIST discount actions (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          },
          "fixedPrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionBundleComponents": {
        "title": "Mirrors BundleComponents for template-side BUNDLE actions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionBundleComponents-create": {
        "title": "Mirrors BundleComponents for template-side BUNDLE actions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionBundleComponents-update": {
        "title": "Mirrors BundleComponents for template-side BUNDLE actions (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 50
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "maxQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionExclusionArticleListItems": {
        "title": "Mirrors ExclusionArticleListItems for template-side exclusion lists",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusion": {
            "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
          },
          "exclusion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionExclusionArticleListItems-create": {
        "title": "Mirrors ExclusionArticleListItems for template-side exclusion lists (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionExclusionArticleListItems-update": {
        "title": "Mirrors ExclusionArticleListItems for template-side exclusion lists (for update)",
        "type": "object",
        "properties": {
          "exclusion_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40
          },
          "ean": {
            "type": "string",
            "maxLength": 18,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionExclusions": {
        "title": "Mirrors ActionExclusions for template-side discount exclusions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "action": {
            "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "MANUFACTURER"
            ]
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "nullable": true
          },
          "articleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "exclusionArticleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems"
            }
          },
          "exclusionArticleListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionExclusions-create": {
        "title": "Mirrors ActionExclusions for template-side discount exclusions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "MANUFACTURER"
            ]
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "nullable": true
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "exclusionArticleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems-create"
            }
          }
        }
      },
      "PublicAPI.TemplateDiscountActionExclusions-update": {
        "title": "Mirrors ActionExclusions for template-side discount exclusions (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "exclusionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "MANUFACTURER"
            ]
          },
          "articleNumber": {
            "type": "string",
            "maxLength": 40,
            "nullable": true
          },
          "articleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "articleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "manufacturer": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "exclusionArticleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusionArticleListItems-create"
            }
          }
        }
      },
      "PublicAPI.TemplateDiscountActionQuantityTiers": {
        "title": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ]
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionQuantityTiers-create": {
        "title": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025) (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ]
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          }
        }
      },
      "PublicAPI.TemplateDiscountActionQuantityTiers-update": {
        "title": "Mirrors QuantityPriceTiers for template-side QUANTITY_TIER actions (PROMO-1025) (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "minQuantity": {
            "type": "integer",
            "format": "int32"
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ]
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999,
                "minimum": 0.01
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          }
        }
      },
      "PublicAPI.TemplateDiscountActionScaledTiers": {
        "title": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action": {
            "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActions"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "thresholdAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ]
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActionScaledTiers-create": {
        "title": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "thresholdAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ]
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          }
        }
      },
      "PublicAPI.TemplateDiscountActionScaledTiers-update": {
        "title": "Mirrors ScaledReceiptTiers for template-side scaled receipt actions (for update)",
        "type": "object",
        "properties": {
          "action_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "thresholdAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ]
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2
          }
        }
      },
      "PublicAPI.TemplateDiscountActions": {
        "title": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "template": {
            "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
          },
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "actionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "RECEIPT",
              "SCALED_RECEIPT",
              "BUNDLE",
              "POST_PURCHASE_COUPON",
              "QUANTITY_TIER",
              "FREE_ITEM"
            ]
          },
          "actionTypeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ActionTypes"
              }
            ],
            "nullable": true
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "nullable": true
          },
          "discountTypeText": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.DiscountTypes"
              }
            ],
            "nullable": true
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "targetArticle": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles"
              }
            ],
            "nullable": true
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "targetArticleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "includeSubGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "selectionType": {
            "type": "string",
            "enum": [
              "ALL",
              "CHEAPEST",
              "MOST_EXPENSIVE",
              "RANDOM"
            ],
            "nullable": true
          },
          "applicationQuantityMode": {
            "type": "string",
            "enum": [
              "ALL",
              "LIMITED",
              "CHEAPEST",
              "MOST_EXPENSIVE"
            ],
            "nullable": true
          },
          "applicationQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "targetCouponType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.CouponTypes"
              }
            ],
            "nullable": true
          },
          "targetCouponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "distributionMode": {
            "type": "string",
            "enum": [
              "PROPORTIONAL",
              "EQUAL",
              "HIGHEST_FIRST"
            ],
            "nullable": true
          },
          "scaledTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers"
            }
          },
          "scaledTiers@count": {
            "$ref": "#/components/schemas/count"
          },
          "quantityTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers"
            }
          },
          "quantityTiers@count": {
            "$ref": "#/components/schemas/count"
          },
          "bundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents"
            }
          },
          "bundleComponents@count": {
            "$ref": "#/components/schemas/count"
          },
          "maxBundles": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "freeItemArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "freeItemQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "restrictToOnePerBasket": {
            "type": "boolean",
            "nullable": true,
            "default": true
          },
          "freeItemReferencePrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxFreeUnits": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems"
            }
          },
          "articleListItems@count": {
            "$ref": "#/components/schemas/count"
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions"
            }
          },
          "exclusions@count": {
            "$ref": "#/components/schemas/count"
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateDiscountActions-create": {
        "title": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "actionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "RECEIPT",
              "SCALED_RECEIPT",
              "BUNDLE",
              "POST_PURCHASE_COUPON",
              "QUANTITY_TIER",
              "FREE_ITEM"
            ]
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "nullable": true
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "targetArticleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "includeSubGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "selectionType": {
            "type": "string",
            "enum": [
              "ALL",
              "CHEAPEST",
              "MOST_EXPENSIVE",
              "RANDOM"
            ],
            "nullable": true
          },
          "applicationQuantityMode": {
            "type": "string",
            "enum": [
              "ALL",
              "LIMITED",
              "CHEAPEST",
              "MOST_EXPENSIVE"
            ],
            "nullable": true
          },
          "applicationQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "targetCouponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "distributionMode": {
            "type": "string",
            "enum": [
              "PROPORTIONAL",
              "EQUAL",
              "HIGHEST_FIRST"
            ],
            "nullable": true
          },
          "scaledTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers-create"
            }
          },
          "quantityTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers-create"
            }
          },
          "bundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents-create"
            }
          },
          "maxBundles": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "freeItemArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "freeItemQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "restrictToOnePerBasket": {
            "type": "boolean",
            "nullable": true,
            "default": true
          },
          "freeItemReferencePrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxFreeUnits": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems-create"
            }
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions-create"
            }
          }
        }
      },
      "PublicAPI.TemplateDiscountActions-update": {
        "title": "Discount action on a PromotionTemplate; column-for-column mirror of DiscountActions (for update)",
        "type": "object",
        "properties": {
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "actionType": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "RECEIPT",
              "SCALED_RECEIPT",
              "BUNDLE",
              "POST_PURCHASE_COUPON",
              "QUANTITY_TIER",
              "FREE_ITEM"
            ]
          },
          "discountType": {
            "type": "string",
            "enum": [
              "PERCENTAGE",
              "ABSOLUTE",
              "UNIT_PRICE"
            ],
            "nullable": true
          },
          "discountValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxDiscountAmount": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "targetArticleGroupId": {
            "type": "string",
            "maxLength": 20,
            "nullable": true
          },
          "includeSubGroups": {
            "type": "boolean",
            "nullable": true,
            "default": false
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "selectionType": {
            "type": "string",
            "enum": [
              "ALL",
              "CHEAPEST",
              "MOST_EXPENSIVE",
              "RANDOM"
            ],
            "nullable": true
          },
          "applicationQuantityMode": {
            "type": "string",
            "enum": [
              "ALL",
              "LIMITED",
              "CHEAPEST",
              "MOST_EXPENSIVE"
            ],
            "nullable": true
          },
          "applicationQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "targetCouponType_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "distributionMode": {
            "type": "string",
            "enum": [
              "PROPORTIONAL",
              "EQUAL",
              "HIGHEST_FIRST"
            ],
            "nullable": true
          },
          "scaledTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionScaledTiers-create"
            }
          },
          "quantityTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionQuantityTiers-create"
            }
          },
          "bundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionBundleComponents-create"
            }
          },
          "maxBundles": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "freeItemArticleNumber": {
            "type": "string",
            "maxLength": 50,
            "nullable": true
          },
          "freeItemQuantity": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 1
          },
          "restrictToOnePerBasket": {
            "type": "boolean",
            "nullable": true,
            "default": true
          },
          "freeItemReferencePrice": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "maxFreeUnits": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "articleListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionArticleListItems-create"
            }
          },
          "exclusions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.TemplateDiscountActionExclusions-create"
            }
          }
        }
      },
      "PublicAPI.TemplateLoyaltyActions": {
        "title": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "template": {
            "$ref": "#/components/schemas/PublicAPI.PromotionTemplates"
          },
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "loyaltyActionType": {
            "type": "string",
            "enum": [
              "ADD_FIXED",
              "MULTIPLY_POINTS",
              "CURRENCY_TO_POINTS",
              "SUBTRACT_POINTS"
            ]
          },
          "pointsValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "multiplier": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true
          },
          "conversionRate": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true
          },
          "targetScope": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "ALL_ITEMS"
            ],
            "default": "ALL_ITEMS"
          },
          "targetArticle": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.Articles"
              }
            ],
            "nullable": true
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.ArticleGroups"
              }
            ],
            "nullable": true
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateLoyaltyActions-create": {
        "title": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "loyaltyActionType": {
            "type": "string",
            "enum": [
              "ADD_FIXED",
              "MULTIPLY_POINTS",
              "CURRENCY_TO_POINTS",
              "SUBTRACT_POINTS"
            ]
          },
          "pointsValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "multiplier": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true
          },
          "conversionRate": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true
          },
          "targetScope": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "ALL_ITEMS"
            ],
            "default": "ALL_ITEMS"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "PublicAPI.TemplateLoyaltyActions-update": {
        "title": "Loyalty action on a PromotionTemplate; column-for-column mirror of LoyaltyActions (for update)",
        "type": "object",
        "properties": {
          "template_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "loyaltyActionType": {
            "type": "string",
            "enum": [
              "ADD_FIXED",
              "MULTIPLY_POINTS",
              "CURRENCY_TO_POINTS",
              "SUBTRACT_POINTS"
            ]
          },
          "pointsValue": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.01,
                "maximum": 9999999999999.99,
                "minimum": -9999999999999.99
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 15,
            "x-sap-scale": 2,
            "nullable": true
          },
          "multiplier": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true
          },
          "conversionRate": {
            "anyOf": [
              {
                "type": "number",
                "format": "decimal",
                "multipleOf": 0.0001,
                "maximum": 999999.9999,
                "minimum": -999999.9999
              },
              {
                "type": "string"
              }
            ],
            "example": 0,
            "x-sap-precision": 10,
            "x-sap-scale": 4,
            "nullable": true
          },
          "targetScope": {
            "type": "string",
            "enum": [
              "ARTICLE",
              "ARTICLE_GROUP",
              "ARTICLE_LIST",
              "ALL_ITEMS"
            ],
            "default": "ALL_ITEMS"
          },
          "targetArticle_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleGroup_ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "targetArticleList": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          }
        }
      },
      "PublicAPI.UseCases": {
        "title": "UseCases",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.UseCases_texts"
            }
          },
          "texts@count": {
            "$ref": "#/components/schemas/count"
          },
          "localized": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PublicAPI.UseCases_texts"
              }
            ],
            "nullable": true
          }
        }
      },
      "PublicAPI.UseCases-create": {
        "title": "UseCases (for create)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.UseCases_texts-create"
            }
          }
        },
        "required": [
          "code"
        ]
      },
      "PublicAPI.UseCases-update": {
        "title": "UseCases (for update)",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "texts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicAPI.UseCases_texts-create"
            }
          }
        }
      },
      "PublicAPI.UseCases_texts": {
        "title": "UseCases_texts",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        }
      },
      "PublicAPI.UseCases_texts-create": {
        "title": "UseCases_texts (for create)",
        "type": "object",
        "properties": {
          "locale": {
            "type": "string",
            "maxLength": 14
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "nullable": true
          },
          "descr": {
            "type": "string",
            "maxLength": 1000,
            "nullable": true
          },
          "code": {
            "type": "string",
            "maxLength": 30
          }
        },
        "required": [
          "locale",
          "code"
        ]
      },
      "PublicAPI.WebhookSubscriptions": {
        "title": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "modifiedAt": {
            "type": "string",
            "format": "date-time",
            "example": "2017-04-13T15:51:04.0000000Z",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "maxLength": 255,
            "nullable": true,
            "description": "{i18n>UserID.Description}"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Multi-tenant boundary; auto-filled from JWT/cert in srv/public-api-service.js"
          },
          "callbackUrl": {
            "type": "string",
            "maxLength": 2048,
            "description": "HTTPS endpoint to POST events to"
          },
          "secretHash": {
            "type": "string",
            "maxLength": 255,
            "description": "bcrypt(secret, cost>=12); plaintext provided only at CREATE/PATCH and never returned"
          },
          "eventFilter": {
            "type": "string",
            "maxLength": 255,
            "default": "*",
            "description": "Event-name glob (e.g. ImportJobs.SUCCEEDED, ImportJobs.*, *). Default *."
          },
          "active": {
            "type": "boolean",
            "default": true,
            "description": "Disable without deleting to preserve audit history"
          },
          "secretEncrypted": {
            "type": "string",
            "nullable": true,
            "description": "AES-256-GCM ciphertext (iv||tag||ct, base64url) of plaintext; CREDSTORE_KEY for decrypt"
          },
          "maxAttempts": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 5,
            "description": "Per-subscription override for max retry count (default 5)"
          },
          "backoffPolicy": {
            "type": "string",
            "enum": [
              "FIXED",
              "EXPONENTIAL"
            ],
            "nullable": true,
            "default": "EXPONENTIAL",
            "description": "EXPONENTIAL (default; 2^n * 30s cap 3600s) or FIXED (retryIntervalMs)"
          },
          "retryIntervalMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Fixed-policy wait in milliseconds between retries (only used when backoffPolicy=FIXED)"
          },
          "secret": {
            "type": "string",
            "nullable": true
          },
          "minorVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "PublicAPI.WebhookSubscriptions-create": {
        "title": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery (for create)",
        "type": "object",
        "properties": {
          "ID": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef"
          },
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Multi-tenant boundary; auto-filled from JWT/cert in srv/public-api-service.js"
          },
          "callbackUrl": {
            "type": "string",
            "maxLength": 2048,
            "description": "HTTPS endpoint to POST events to"
          },
          "secretHash": {
            "type": "string",
            "maxLength": 255,
            "description": "bcrypt(secret, cost>=12); plaintext provided only at CREATE/PATCH and never returned"
          },
          "eventFilter": {
            "type": "string",
            "maxLength": 255,
            "default": "*",
            "description": "Event-name glob (e.g. ImportJobs.SUCCEEDED, ImportJobs.*, *). Default *."
          },
          "active": {
            "type": "boolean",
            "default": true,
            "description": "Disable without deleting to preserve audit history"
          },
          "secretEncrypted": {
            "type": "string",
            "nullable": true,
            "description": "AES-256-GCM ciphertext (iv||tag||ct, base64url) of plaintext; CREDSTORE_KEY for decrypt"
          },
          "maxAttempts": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 5,
            "description": "Per-subscription override for max retry count (default 5)"
          },
          "backoffPolicy": {
            "type": "string",
            "enum": [
              "FIXED",
              "EXPONENTIAL"
            ],
            "nullable": true,
            "default": "EXPONENTIAL",
            "description": "EXPONENTIAL (default; 2^n * 30s cap 3600s) or FIXED (retryIntervalMs)"
          },
          "retryIntervalMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Fixed-policy wait in milliseconds between retries (only used when backoffPolicy=FIXED)"
          }
        }
      },
      "PublicAPI.WebhookSubscriptions-update": {
        "title": "Per-tenant self-service callback registration; HMAC-signed at-least-once delivery (for update)",
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "maxLength": 36,
            "description": "Multi-tenant boundary; auto-filled from JWT/cert in srv/public-api-service.js"
          },
          "callbackUrl": {
            "type": "string",
            "maxLength": 2048,
            "description": "HTTPS endpoint to POST events to"
          },
          "secretHash": {
            "type": "string",
            "maxLength": 255,
            "description": "bcrypt(secret, cost>=12); plaintext provided only at CREATE/PATCH and never returned"
          },
          "eventFilter": {
            "type": "string",
            "maxLength": 255,
            "default": "*",
            "description": "Event-name glob (e.g. ImportJobs.SUCCEEDED, ImportJobs.*, *). Default *."
          },
          "active": {
            "type": "boolean",
            "default": true,
            "description": "Disable without deleting to preserve audit history"
          },
          "secretEncrypted": {
            "type": "string",
            "nullable": true,
            "description": "AES-256-GCM ciphertext (iv||tag||ct, base64url) of plaintext; CREDSTORE_KEY for decrypt"
          },
          "maxAttempts": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "default": 5,
            "description": "Per-subscription override for max retry count (default 5)"
          },
          "backoffPolicy": {
            "type": "string",
            "enum": [
              "FIXED",
              "EXPONENTIAL"
            ],
            "nullable": true,
            "default": "EXPONENTIAL",
            "description": "EXPONENTIAL (default; 2^n * 30s cap 3600s) or FIXED (retryIntervalMs)"
          },
          "retryIntervalMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "description": "Fixed-policy wait in milliseconds between retries (only used when backoffPolicy=FIXED)"
          }
        }
      },
      "PublicAPI.return_PublicAPI_WebhookSubscriptions_testDelivery": {
        "title": "return_PublicAPI_WebhookSubscriptions_testDelivery",
        "type": "object",
        "properties": {
          "delivered": {
            "type": "boolean",
            "nullable": true
          },
          "httpStatus": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "responseBody": {
            "type": "string",
            "nullable": true
          },
          "latencyMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PublicAPI.return_PublicAPI_excludeDeployment": {
        "title": "return_PublicAPI_excludeDeployment",
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "PublicAPI.return_PublicAPI_forceFullSync": {
        "title": "return_PublicAPI_forceFullSync",
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "PublicAPI.return_PublicAPI_generateCoupons": {
        "title": "return_PublicAPI_generateCoupons",
        "type": "object",
        "properties": {
          "batchId": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "jobId": {
            "type": "string",
            "format": "uuid",
            "example": "01234567-89ab-cdef-0123-456789abcdef",
            "nullable": true
          },
          "estimated": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PublicAPI.return_PublicAPI_reincludeDeployment": {
        "title": "return_PublicAPI_reincludeDeployment",
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "nullable": true
          }
        }
      },
      "count": {
        "anyOf": [
          {
            "type": "number"
          },
          {
            "type": "string"
          }
        ],
        "description": "The number of entities in the collection. Available when using the [$count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount) query option."
      },
      "error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "target": {
                "type": "string"
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "code",
                    "message"
                  ],
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "target": {
                      "type": "string"
                    }
                  }
                }
              },
              "innererror": {
                "type": "object",
                "description": "The structure of this object is service-specific"
              }
            }
          }
        }
      }
    },
    "parameters": {
      "top": {
        "name": "$top",
        "in": "query",
        "description": "Show only the first n items, see [Paging - Top](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptiontop)",
        "schema": {
          "type": "integer",
          "minimum": 0
        },
        "example": 50
      },
      "skip": {
        "name": "$skip",
        "in": "query",
        "description": "Skip the first n items, see [Paging - Skip](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionskip)",
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "count": {
        "name": "$count",
        "in": "query",
        "description": "Include count of items, see [Count](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptioncount)",
        "schema": {
          "type": "boolean"
        }
      },
      "search": {
        "name": "$search",
        "in": "query",
        "description": "Search items by search phrases, see [Searching](http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_SystemQueryOptionsearch)",
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "error": {
        "description": "Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "OAuth2 client_credentials JWT issued by SAP XSUAA."
      },
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://<tenant>.authentication.<region>.hana.ondemand.com/oauth/token",
            "scopes": {
              "PublicApi.Read": "Read all Public API entities (default for GET).",
              "PublicApi.Write": "Write/bulk-import on writable Public API entities.",
              "MasterData.Ingest": "POST master-data inbound payloads (mTLS-gated)."
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    }
  ]
}