{
  "openapi": "3.0.1",
  "info": {
    "title": "anybill PartnerPlatformApi",
    "description": "<p>API for Partner integrations:</p><p>automated Onboarding</p><p>user creation for receipt by loyalty card</p><p>accessing basic receipt information for loyalty providers</p><p><a href=\"https://developers.anybill.de/partner_platform_api/\">Detailed integration documentation</a><p><a href='../swagger'>Swagger UI</a></p><p><a href='../redoc'>ReDoc</a></p><br /><strong>Please pay attention that all requests must be prefixed with: <em>/api</em></strong>",
    "contact": {
      "name": "anybill",
      "url": "https://anybill.de/",
      "email": "info@anybill.de"
    },
    "version": "3.0"
  },
  "servers": [
    {
      "url": "https://partner-platform.stg.anybill.de/api"
    }
  ],
  "paths": {
    "/v3/offer/create": {
      "post": {
        "tags": [
          "Offer"
        ],
        "summary": "Creates a Display Ad.\r\n            \r\n<remarks>\r\nWill always be a global display ad, and will disable currently active global display ads.\r\nThe Base64 image resource has a higher priority than the URL resource, please keep this in mind when\r\nboth parameters are set.\r\n            \r\nRequires the 'Offer' scope.\r\n</remarks>",
        "description": "Needed permissions:\n- **_Offer_** with **_Write_**",
        "requestBody": {
          "description": "DTO for the creation of the Display Ad",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDisplayAdDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the GUID of the created display ad",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "400": {
            "description": "Returns if some of the data in the dto are invalid and couldn't be processed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the api user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an unexpected error occurred."
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/onboarding": {
      "post": {
        "tags": [
          "Onboarding"
        ],
        "summary": "Send master data to the anybill system for automatic onboarding.",
        "description": "Send master data to the anybill system for automatic onboarding.\r\n            \r\nRequires scope:\r\n- onboarding\n\nNeeded permissions:\n- **_Onboarding_** with **_Write_**",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnboardingDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns if the master data were created successfully in the anybill system.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Returns if the master data are invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the vendor api user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the right scope or vendor api user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the POS clientId was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/onboarding/vendorcustomerid/{vendorCustomerId}/activated": {
      "get": {
        "tags": [
          "Onboarding"
        ],
        "summary": "Customer is activated",
        "description": "Check if customer finished the onboarding process (marked as activated) and is allowed to use other vendor API endpoints.\r\n            \r\nCustomerActivatedDto = Returns if the customer was onboarded successfully.\r\n            \r\nCustomerNotActivatedDto = Returns if the customer wasn't onboarded successfully. Customer have to finish the onboarding process.\r\n\r\nRequires scope:\r\n- onboarding\n\nNeeded permissions:\n- **_Onboarding_** with **_Read_**",
        "parameters": [
          {
            "name": "vendorCustomerId",
            "in": "path",
            "description": "Id of the vendor customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns if the customer was onboarded successfully or not.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/CustomerActivatedDto"
                    },
                    {
                      "$ref": "#/components/schemas/CustomerNotActivatedDto"
                    }
                  ],
                  "description": "Base Dto of the customer."
                },
                "examples": {
                  "Activated Response": {
                    "value": {"type":"activated","customerId":"ee4f8d15-1594-445c-bc96-6b62dbbb9458"}
                  },
                  "NotActivated Response": {
                    "value": {"type":"notActivated","customerId":"2c115cee-218b-4173-a8d9-337328549621"}
                  }
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the right scope or partner platform api user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/pricing/current": {
      "get": {
        "tags": [
          "Pricing"
        ],
        "summary": "Get the available pricing packages",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentPricingOverviewDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/receipt/list": {
      "get": {
        "tags": [
          "Receipt"
        ],
        "summary": "Retrieves a list of receipts for the given external identifier.",
        "description": "This endpoint retrieves a paginated list of receipts associated for the given external identifier without using\r\nan external created user. Only queries the receipt using the external identifiers set during receipt creation.\r\nRequires the external Identifier module to be set for the customer.\r\nThe `take` parameter specifies the maximum number of receipts to return per page, with a maximum value of 100.\r\nIf more receipts are available, the API returns a continuation token in the header of the response, which can be\r\nused in subsequent requests\r\nto retrieve the next page of results. Furthermore a MaxCount value is returned in the header of the response.\r\nClients should include the continuation token from the previous response in the request query parameters to\r\nretrieve the next page of results.\r\nRequires scopes:\r\n- user\r\n- receipt\n\nNeeded permissions:\n- **_User_** with **_Read_**\n- **_Receipt_** with **_Read_**",
        "parameters": [
          {
            "name": "externalId",
            "in": "query",
            "description": "External identifier of your user in your system (customerId, cardnumber)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "maximal amount of receipt which should be returned / page size. Max value of 100. Defaults to 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "continuationToken",
            "in": "query",
            "description": "Continuation token of the previous request",
            "schema": {
              "type": "string",
              "format": "byte"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of receipts of the user",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConsumerReceiptDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Returns if no receipts could be found for this externalId",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConsumerReceiptDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Returns if a validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the correct scope or user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/receipt/{receiptId}/pdf": {
      "post": {
        "tags": [
          "Receipt"
        ],
        "summary": "Gets the pdf of the corresponding receipt to the given externalId and receiptId",
        "description": "Requires scopes:\r\n- receipt\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Read_**\n- **_Receipt_** with **_Read_**",
        "parameters": [
          {
            "name": "externalId",
            "in": "query",
            "description": "External identifier of your user in your system (customerId, cardnumber)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "receiptId",
            "in": "path",
            "description": "Id of the receipt",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns pdf file with filetype application/pdf on success"
          },
          "400": {
            "description": "Returns if a validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the correct scope or user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the anybill user or the receipt was not found or if the receipt is already added to an\r\nanybill user. Possible types: \"user-not-found\", \"receipt-not-found\"",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/receipt/add": {
      "post": {
        "tags": [
          "Receipt"
        ],
        "summary": "Adds an anonymous receipt to an anybill user",
        "description": "Adds the receipt with the given receiptId to the anybill user with the given userId. The receiptId and the userId must be linked to your client.\r\n\r\nRequires scopes:\r\n- user\r\n- receipt\n\nNeeded permissions:\n- **_User_** with **_ReadWrite_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the anybill user previously created using the user endpoints",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Receipt Id",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddReceiptDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns receipt Id on success.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "400": {
            "description": "Returns if a validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the correct scope or user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the anybill user or the receipt was not found or if the receipt is already added to an anybill user. Possible types: \"user-not-found\", \"receipt-not-found\"",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/receipt/list": {
      "get": {
        "tags": [
          "Receipt"
        ],
        "summary": "Retrieves a list of receipts of the given anybill user.",
        "description": "This endpoint retrieves a paginated list of receipts associated with the specified anybill user. \r\nThe `take` parameter specifies the maximum number of receipts to return per page, with a maximum value of 100. \r\nIf more receipts are available, the API returns a continuation token in the header of the response, which can be used in subsequent requests \r\nto retrieve the next page of results. Furthermore a MaxCount value is returned in the header of the response.\r\nClients should include the continuation token from the previous response in the request query parameters to retrieve the next page of results.\r\n\r\nRequires scopes:\r\n- user\r\n- receipt\n\nNeeded permissions:\n- **_User_** with **_Read_**\n- **_Receipt_** with **_Read_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the anybill user",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "maximal amount of receipt which should be returned / page size. Max value of 100. Defaults to 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "continuationToken",
            "in": "query",
            "description": "Continuation token of the previous request",
            "schema": {
              "type": "string",
              "format": "byte"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of receipts of the anybill user",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConsumerReceiptDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Returns if a validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the correct scope or user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the anybill user was not found. Possible types: \"user-not-found\"",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/receipt/{receiptId}/pdf": {
      "post": {
        "tags": [
          "Receipt"
        ],
        "summary": "Get pdf for user receipt",
        "description": "Requires scopes:\r\n- receipt\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Read_**\n- **_Receipt_** with **_Read_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the user",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "receiptId",
            "in": "path",
            "description": "Id of the receipt",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns pdf file with filetype application/pdf on success"
          },
          "400": {
            "description": "Returns if a validation error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the correct scope or user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the anybill user or the receipt was not found or if the receipt is already added to an anybill user. Possible types: \"user-not-found\", \"receipt-not-found\"",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/store": {
      "get": {
        "tags": [
          "Store"
        ],
        "summary": "Retrieves a paginated list of all valid stores for the authenticated customer.",
        "description": "This endpoint returns a list of all currently valid stores associated with the authenticated customer's account.\r\nResults are paginated using the skip and take query parameters.\r\nThe response also includes the total number of matching stores in the `X-Total-Count` response header.",
        "parameters": [
          {
            "name": "skip",
            "in": "query",
            "description": "The number of stores to skip. Use for pagination. Default is 0.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "description": "The maximum number of stores to return.\r\nThe value must be between 1 and 500. Default is 100.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Stores retrieved successfully. Returns a list of stores and includes `X-Total-Count` header indicating the\r\ntotal number of stores.",
            "headers": {
              "X-Total-Count": {
                "description": "The total count of the list.",
                "schema": {
                  "type": "number",
                  "description": "The total count of the list.",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StoreDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No stores were found for the customer."
          },
          "401": {
            "description": "Authentication failed. The caller is not authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller lacks the required permissions or scope.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "An unexpected server error occurred while retrieving the stores.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Store"
        ],
        "summary": "Create or update a store",
        "description": "If the given \"ExternalStoreId\" is already present, the store is going to be updated.",
        "requestBody": {
          "description": "The available data for the store.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertStoreDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns if the store was updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreDto"
                }
              }
            }
          },
          "201": {
            "description": "Returns if the store was created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StoreDto"
                }
              }
            }
          },
          "400": {
            "description": "Returns if model validation, add or update failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the appUser could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the right scope or appUser permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/store/batch": {
      "post": {
        "tags": [
          "Store"
        ],
        "summary": "Upserts (adds or updates) a batch of stores for the authenticated client.",
        "description": "Accepts up to 100 store entries in a single request.\r\nIf a store with the same `VendorCustomerStoreId` already exists, a new store detail will be added instead of\r\ncreating a new store.\r\nReturns a list of results indicating success or failure per store entry.\r\nUse the Microsoft.AspNetCore.Http.StatusCodes.Status207MultiStatus response to handle partial failures in the batch.",
        "requestBody": {
          "description": "List of stores to upsert (max 100).",
          "content": {
            "application/json": {
              "schema": {
                "maxItems": 100,
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UpsertStoreDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "207": {
            "description": "One or more stores were processed successfully; includes success and error results per store.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UpsertStoreResultDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request was invalid (e.g., malformed JSON or more than 100 items submitted).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "The customer configuration for the client ID was not found or an unexpected error occurred."
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Create anonymous app user",
        "description": "Creates a new anonymous app user.\r\n\r\nIf an ExternalId is provided and the user is already found, the existing user id is returned.\r\n\r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "requestBody": {
          "description": "Additional user details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterAnonymousUserDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns when user already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterAppUserResponseDto"
                }
              }
            }
          },
          "201": {
            "description": "Returns when user was successfully created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterAppUserResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Returns if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}": {
      "delete": {
        "tags": [
          "User"
        ],
        "summary": "Delete anonymous appUser",
        "description": "Deletes an anonymous appUser.\r\n            \r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the appUser to delete.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Returns on success."
          },
          "400": {
            "description": "Returns if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the the user was not found."
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/token": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Request new (anonymous) user token",
        "description": "Retrieves new token information for the given userId. The token information should then be forwarded to the\r\nrequesting frontend application and used to access user information and receipts.\r\n            \r\nIf this endpoint is called directly after the user creation, a successful token retrieval can occasionally take\r\nup to 1 minute due to the user not being accessible in Active Directory. In this case a specific 404 Error with\r\nProblemDetails.Type \"user-temporarily-not-available\" is returned. Integrate a retry for this specific case.  \r\n\r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the app user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "applicationClientId",
            "in": "query",
            "description": "Client Id of the frontend application which is requesting the token",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymousUserTokenResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Returns if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Returns if not authorized to access the data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Returns if a resource could not be found or a user is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "503": {
            "description": "Returns if the service should be called again at later time.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/token": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Request new (anonymous) user token",
        "description": "Retrieves new token information for the given userId or externalId. The token information should then be forwarded to the\r\nrequesting frontend application and used to access user information and receipts.\r\n            \r\nIf this endpoint is called directly after the user creation, a successful token retrieval can occasionally take\r\nup to 1 minute due to the user not being accessible in Active Directory. In this case a specific 404 Error with\r\nProblemDetails.Type \"user-temporarily-not-available\" is returned. Integrate a retry for this specific case.  \r\n\r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnonymousUserTokenRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymousUserTokenResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Returns if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Returns if not authorized to access the data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Returns if a resource could not be found or a user is temporarily unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "503": {
            "description": "Returns if the service should be called again at later time.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/active": {
      "patch": {
        "tags": [
          "User"
        ],
        "summary": "Sets a flag whether the digital receipt receival is de/activated for the user",
        "description": "Currently this endpoint does not toggle the receipt receival, instead this should be used to\r\ninform anybill about a use de- or activating the digital receipt service.\r\n\r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "anybill user Id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "digitalReceiptActive",
            "in": "query",
            "description": "state of the current",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Returns on success."
          },
          "401": {
            "description": "Returns if the user could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the correct scope or user permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the anybill user was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Returns if the data provided is invalid."
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/external-identifier": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Add an additional external identifier to an existing user",
        "description": "Adds a new external identifier (e.g. a fuel card number) to an existing anonymous user.\r\nThe user is identified by their anybill user ID, which must already have an external identifier\r\nassociated with the same vendor customer.\r\n            \r\nanybill does not validate the content of the external identifier and does not verify whether\r\nit actually belongs to the specified user.\r\n            \r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the existing anybill user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The external identifier to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddExternalIdentifierDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns when the external identifier was successfully added."
          },
          "400": {
            "description": "Returns if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the user was not found or does not belong to this client.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Returns if the external identifier already exists for this user and vendor customer.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      },
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get all external identifiers of an existing user",
        "description": "Returns all external identifiers (e.g. fuel card numbers) associated with the user\r\nfor the calling vendor customer. The user must belong to this client.\r\n            \r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Read_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the existing anybill user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the list of external identifiers for this user.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExternalIdentifierDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Returns if the user was not found or does not belong to this client.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    },
    "/v3/user/{userId}/external-identifier/{externalId}": {
      "delete": {
        "tags": [
          "User"
        ],
        "summary": "Remove an external identifier from an existing user",
        "description": "Removes an external identifier (e.g. a fuel card number) from an existing anonymous user.\r\nThe user is identified by their anybill user ID and must belong to this client.\r\n            \r\nRequires scope:\r\n- user\n\nNeeded permissions:\n- **_User_** with **_Write_**",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "Id of the existing anybill user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "externalId",
            "in": "path",
            "description": "The external identifier to remove (e.g. a fuel card number).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Returns when the external identifier was successfully removed."
          },
          "400": {
            "description": "Returns if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the user or external identifier was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "oauth2": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AddExternalIdentifierDto": {
        "required": [
          "externalId"
        ],
        "type": "object",
        "properties": {
          "externalId": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "description": "External identifier to associate with the user (e.g. a fuel card number).\r\nanybill does not validate the content of this value nor verify whether it\r\nactually belongs to the specified user."
          }
        },
        "additionalProperties": false,
        "description": "Request body for adding an additional external identifier to an existing user."
      },
      "AddReceiptDto": {
        "required": [
          "receiptId"
        ],
        "type": "object",
        "properties": {
          "receiptId": {
            "minLength": 1,
            "type": "string",
            "description": "Id of the anybill receipt extracted from the receipt URL",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "AddressDto": {
        "required": [
          "city",
          "countryCode",
          "street",
          "zip"
        ],
        "type": "object",
        "properties": {
          "countryCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "Country code of the address in ISO 3166-1 alpha-3 format."
          },
          "zip": {
            "maxLength": 12,
            "minLength": 1,
            "type": "string",
            "description": "Zip code / postal code of the address."
          },
          "city": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "City of the address."
          },
          "street": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "Street name of the address."
          },
          "number": {
            "maxLength": 15,
            "type": "string",
            "description": "Street number of the address.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address of the vendorCustomer."
      },
      "AnonymousUserTokenRequestDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "The id of the anybill user.",
            "format": "uuid",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "Id of the user in an external customer system.",
            "nullable": true
          },
          "applicationClientId": {
            "type": "string",
            "description": "Client Id of the frontend application which is requesting the token.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to get the SDK token. Either the UserId parameter or the ExternalId parameter should be provided."
      },
      "AnonymousUserTokenResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the registered app user.",
            "format": "uuid"
          },
          "accessToken": {
            "type": "string",
            "description": "Access Token for authentication.",
            "nullable": true
          },
          "refreshToken": {
            "type": "string",
            "description": "Refresh Token to refreshing the access token.",
            "nullable": true
          },
          "expiresIn": {
            "type": "string",
            "description": "Time in seconds until the Access Token expires.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Holds token information for a registered app user, which can be used to authenticate an anybill user in\r\nfrontend applications."
      },
      "BillingAddressDto": {
        "required": [
          "city",
          "street",
          "zip"
        ],
        "type": "object",
        "properties": {
          "countryCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "Country code of the address in ISO 3166-1 alpha-3 format.",
            "nullable": true
          },
          "zip": {
            "maxLength": 12,
            "minLength": 1,
            "type": "string",
            "description": "Zip code / postal code of the address."
          },
          "city": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "City of the address."
          },
          "street": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "Street name of the address."
          },
          "number": {
            "maxLength": 15,
            "type": "string",
            "description": "Street number of the address.",
            "nullable": true
          },
          "name": {
            "maxLength": 150,
            "type": "string",
            "description": "Name of the person/organization for a billing address.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BillingTypeDto": {
        "enum": [
          "VendorBilling",
          "PosBilling"
        ],
        "type": "string",
        "description": "Intended billing method of this VendorCustomer\r\n            \r\n## VendorBilling\r\nA VendorCustomer does only directly receive invoices if VendorBilling is selected.\r\nDefaults to VendorBilling if not explicitly stated otherwise.\r\n\r\n## PosBilling\r\nMany POS offer a combined pricing including anybill and their POS system. In such a case PosBilling should be selected.\r\nIn that case the POS receives invoices for this customer.",
        "format": "int32"
      },
      "ConsumerReceiptDto": {
        "type": "object",
        "properties": {
          "receiptId": {
            "type": "string",
            "description": "Unique identifier for the receipt.",
            "format": "uuid"
          },
          "receiptNr": {
            "type": "string",
            "description": "Identifier of the receipt issued by the POS that created the receipt.",
            "nullable": true
          },
          "storeId": {
            "type": "string",
            "description": "Unique identifier for the store who issued the receipts (anybill internal identifier).",
            "format": "uuid"
          },
          "externalStoreId": {
            "type": "string",
            "description": "The external store id of the store where the receipt was issued",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "Total amount of the receipt, including VAT.",
            "format": "double"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code of the receipt. (e.g \"EUR\")",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "date time when the receipt was issued.",
            "format": "date-time"
          },
          "imageResource": {
            "type": "string",
            "description": "URI to the logo of the vendor or store.",
            "nullable": true
          },
          "vendorName": {
            "type": "string",
            "description": "Name of the vendor who issued the receipt.",
            "nullable": true
          },
          "vendorAddress": {
            "$ref": "#/components/schemas/VendorAddressDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a reduced model of the available receipt data suitable for display in frontend application."
      },
      "ContactPersonDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "eMail": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "mobile": {
            "type": "string",
            "nullable": true
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateDisplayAdDto": {
        "required": [
          "imgFormat",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "minLength": 1,
            "type": "string",
            "description": "Title of the offer"
          },
          "imgBase64": {
            "type": "string",
            "description": "Image content encoded in base 64",
            "nullable": true
          },
          "imgUrl": {
            "type": "string",
            "description": "Image content that is pulled from the URI",
            "nullable": true
          },
          "imgFormat": {
            "$ref": "#/components/schemas/ImageFormatDto"
          },
          "onClickUri": {
            "type": "string",
            "description": "Optional URI that is triggered when a click is registered on the content area",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CurrentPricingOverviewDto": {
        "type": "object",
        "properties": {
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CurrentPricingPackageDto"
            },
            "description": "List of pricing packages",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Overview of the current pricing"
      },
      "CurrentPricingPackageDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "If of the pricing package",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "Name of the pricing package",
            "nullable": true
          },
          "netBaseFee": {
            "type": "number",
            "description": "Net base fee per store",
            "format": "double"
          },
          "netBaseFeeYearly": {
            "type": "number",
            "description": "Net base fee per store if paid yearly",
            "format": "double"
          },
          "totalIncludedBillCount": {
            "type": "integer",
            "description": "Total included bills per store",
            "format": "int32"
          },
          "netPricePerAdditionalBill": {
            "type": "number",
            "description": "Net fee per additional bill",
            "format": "double"
          },
          "apps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PricingPackageAppDto"
            },
            "description": "Linked apps for a pricing package",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomerActivatedDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomerResponseDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ],
        "description": "Response that the customer is activated."
      },
      "CustomerNotActivatedDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomerResponseDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ],
        "description": "Response that the customer is not activated."
      },
      "CustomerResponseDto": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of the response.",
            "nullable": true,
            "readOnly": true
          },
          "customerId": {
            "type": "string",
            "description": "Id of the customer.",
            "format": "uuid",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Base Dto of the customer."
      },
      "CustomerStoreDto": {
        "type": "object",
        "properties": {
          "vendorCustomerStoreId": {
            "type": "string",
            "description": "Id of the store.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Name of the store.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DayOfWeek": {
        "enum": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday"
        ],
        "type": "string",
        "format": "int32"
      },
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ErrorProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            },
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ExternalIdentifierDto": {
        "required": [
          "externalId"
        ],
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "The external identifier value (e.g. a fuel card number).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An external identifier associated with an anybill user."
      },
      "ImageFormatDto": {
        "enum": [
          "None",
          "MediumRectangle",
          "FullBanner",
          "Leaderboard",
          "SixteenNine",
          "FourThree",
          "ThreeTwo"
        ],
        "type": "string"
      },
      "InvoicingCycleDto": {
        "enum": [
          "Monthly",
          "Yearly"
        ],
        "type": "string",
        "description": "Cycle for invoicing payments"
      },
      "OnboardingCreateStoreDetailDto": {
        "required": [
          "address",
          "displayName"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Name of the store which will be displayed in the app. Could be different as the Legal name."
          },
          "legalName": {
            "maxLength": 128,
            "type": "string",
            "description": "Legal name of the store.",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/AddressDto"
          },
          "vatId": {
            "maxLength": 24,
            "type": "string",
            "description": "VatId of the store.",
            "nullable": true
          },
          "googlePlacesId": {
            "maxLength": 512,
            "type": "string",
            "description": "GooglePlacesId. Is used to show the google rating in the app.",
            "nullable": true
          },
          "phoneNumber": {
            "maxLength": 64,
            "type": "string",
            "description": "General phoneNumber of the store.",
            "nullable": true
          },
          "supportPhoneNumber": {
            "maxLength": 64,
            "type": "string",
            "description": "Support phoneNumber of the store.",
            "nullable": true
          },
          "website": {
            "maxLength": 2048,
            "type": "string",
            "description": "The store website.",
            "nullable": true
          },
          "email": {
            "maxLength": 128,
            "type": "string",
            "description": "E-mail address of the store.",
            "nullable": true
          },
          "language": {
            "type": "string",
            "description": "The language a store communicates in. Language is in ISO 639-1 format e.g. 'de'",
            "nullable": true
          },
          "openingHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StoreOpeningHoursDto"
            },
            "description": "The stores opening hours.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": ""
      },
      "OnboardingCreateStoreDto": {
        "required": [
          "storeDetail"
        ],
        "type": "object",
        "properties": {
          "vendorCustomerStoreId": {
            "maxLength": 36,
            "type": "string",
            "description": "Id of the store for the vendorCustomer. Must be unique for every vendorCustomer.",
            "nullable": true
          },
          "storeDetail": {
            "$ref": "#/components/schemas/OnboardingCreateStoreDetailDto"
          }
        },
        "additionalProperties": false,
        "description": "Store information."
      },
      "OnboardingCreateVendorCustomerDto": {
        "required": [
          "address",
          "companyName",
          "email"
        ],
        "type": "object",
        "properties": {
          "companyName": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Name of the vendorCustomer."
          },
          "email": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string",
            "description": "E-mail address of the vendorCustomer.\r\nThis E-mail is used to send the registration mail to the customer."
          },
          "invoicingEmail": {
            "maxLength": 128,
            "type": "string",
            "description": "Optional invoice Email address.",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/AddressDto"
          },
          "billingAddress": {
            "$ref": "#/components/schemas/BillingAddressDto"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingTypeDto"
          },
          "distributorCustomerId": {
            "type": "string",
            "description": "Id of the distributor customer.\r\nis required if the customer is serviced via the POS specialist dealer.",
            "format": "uuid",
            "nullable": true,
            "deprecated": true
          },
          "vatId": {
            "type": "string",
            "description": "Value added tax identification number of the customer",
            "nullable": true
          },
          "distributorExternalId": {
            "maxLength": 255,
            "type": "string",
            "description": "Custom external identifier provided by anybill.\r\nUsed to identify the distributor if the customer is serviced via the POS specialist dealer.",
            "nullable": true
          },
          "contact": {
            "$ref": "#/components/schemas/ContactPersonDto"
          }
        },
        "additionalProperties": false,
        "description": "Create new"
      },
      "OnboardingDto": {
        "required": [
          "stores",
          "vendorCustomer"
        ],
        "type": "object",
        "properties": {
          "vendorCustomer": {
            "$ref": "#/components/schemas/OnboardingCreateVendorCustomerDto"
          },
          "stores": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OnboardingCreateStoreDto"
            },
            "description": "List of stores created.",
            "nullable": true
          },
          "invoicingDetails": {
            "$ref": "#/components/schemas/OnboardingInvoicingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Master data of the customer which should be create in the anybill systems."
      },
      "OnboardingInvoicingDetailsDto": {
        "type": "object",
        "properties": {
          "pricingPackageId": {
            "type": "string",
            "description": "Id of a selected pricing package",
            "format": "uuid"
          },
          "invoicingCycle": {
            "$ref": "#/components/schemas/InvoicingCycleDto"
          }
        },
        "additionalProperties": false
      },
      "OnboardingResponseDto": {
        "type": "object",
        "properties": {
          "link": {
            "type": "string",
            "description": "Link to the anybill partner portal.",
            "nullable": true
          },
          "registrationLink": {
            "type": "string",
            "description": "Registration link for the new customer.\r\nAfter a successful transmission of the data to anybill, a linkout must take place.",
            "nullable": true
          },
          "vendorCustomerId": {
            "type": "string",
            "description": "Id of the created vendor customer.",
            "format": "uuid"
          },
          "vendorApiUser": {
            "$ref": "#/components/schemas/VendorApiUserDto"
          },
          "stores": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerStoreDto"
            },
            "description": "List of created Stores.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response of the automatic onboarding."
      },
      "PricingPackageAppDto": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "Unique identifier of the app",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "RegisterAnonymousUserDto": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External ID of the user.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Register anonymous user."
      },
      "RegisterAppUserResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the registered app user.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Response of the register app user"
      },
      "StoreAddressDto": {
        "required": [
          "city",
          "countryCode",
          "street",
          "zip"
        ],
        "type": "object",
        "properties": {
          "countryCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "Country code of the address in ISO 3166-1 alpha-3 format. (e.g. DEU)"
          },
          "zip": {
            "maxLength": 12,
            "minLength": 1,
            "type": "string",
            "description": "Zip code / postal code of the address."
          },
          "city": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "City of the address."
          },
          "street": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "Street name of the address."
          },
          "number": {
            "maxLength": 15,
            "type": "string",
            "description": "Street number of the address.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StoreDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the store in your system. This Id has to be available at the POS and included\r\nin receipt data.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "Legal name of the store which should be display on the receipt, reports and invoices",
            "nullable": true
          },
          "vatId": {
            "type": "string",
            "description": "VatId of the store. Required if the VatId of the store differs to the customer VatId",
            "nullable": true
          },
          "language": {
            "type": "string",
            "description": "Language of the store. Controls the default language of the receipt retrieval website and the receipt PDF.",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/StoreAddressDto"
          }
        },
        "additionalProperties": false
      },
      "StoreOpeningHoursDto": {
        "required": [
          "close",
          "dayOfWeek",
          "open"
        ],
        "type": "object",
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "open": {
            "minLength": 1,
            "type": "string",
            "description": "Store open time."
          },
          "close": {
            "minLength": 1,
            "type": "string",
            "description": "Store close time."
          }
        },
        "additionalProperties": false
      },
      "UpsertStoreDto": {
        "required": [
          "address",
          "externalStoreId",
          "language",
          "name"
        ],
        "type": "object",
        "properties": {
          "externalStoreId": {
            "maxLength": 36,
            "minLength": 1,
            "type": "string",
            "description": "Id of the store in your system. This Id has to be available at the POS"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string",
            "description": "Legal name of the store which should be display on the receipt, reports and invoices"
          },
          "vatId": {
            "maxLength": 24,
            "type": "string",
            "description": "VatId of the store. Required if the VatId of the store differs to the customer VatId",
            "nullable": true
          },
          "language": {
            "minLength": 1,
            "type": "string",
            "description": "Language of the store. Controls the default language of the receipt retrieval website and the receipt PDF.\r\nAccepted in the RFC 4646 format (e.g. \"en-US\") or ISO 639-1 (e.g. \"en\").\r\nDefaults to \"de\""
          },
          "address": {
            "$ref": "#/components/schemas/StoreAddressDto"
          }
        },
        "additionalProperties": false,
        "description": "Object used to create or update a store"
      },
      "UpsertStoreResultDto": {
        "type": "object",
        "properties": {
          "externalStoreId": {
            "type": "string",
            "description": "External Id of the Store",
            "nullable": true
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether process was successful"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Includes errors of the process, if failures occured",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result object holding information about a creation or update of a store within a batch call"
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "VendorAddressDto": {
        "type": "object",
        "properties": {
          "street": {
            "type": "string",
            "description": "Street name including street number.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "City.",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code.",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "description": "Country code of seller according to ISO 3166 alpha-3 country code.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the address object corresponding to the store that issued the receipt."
      },
      "VendorApiUserDto": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Username for the vendor API.",
            "nullable": true
          },
          "password": {
            "type": "string",
            "description": "Password for the vendor API.",
            "nullable": true
          },
          "clientId": {
            "type": "string",
            "description": "ClientId of the POS software customer.",
            "nullable": true
          },
          "path": {
            "type": "string",
            "description": "Path of the vendor API endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "User credentials for the vendor API."
      }
    },
    "securitySchemes": {
      "oauth2": {
        "type": "apiKey",
        "description": "Standard Authorization header using the Bearer scheme. Example: \"bearer { token }\"",
        "name": "Authorization",
        "in": "header"
      }
    }
  }
}