{
  "openapi": "3.1.0",
  "info": {
    "title": "PerfectGym Next API",
    "description": "* Appointment, bookable appointment and slots operations\n* Redeem checkin vouchers\n* Class and slots operations\n* Cross studio operations\n* Get customers and contracts\n* Retrieve customer accounting details\n* Retrieve customer communication details\n* Retrieve customer transaction details\n* Get device information\n* Employee operations\n* Debt collection operations\n* Leads operations\n* Manage membership contracts\n* Membership operations\n* Online offer operations\n* Payment operations\n* Get studio information\n* Get trial offers information",
    "version": "1.14.1"
  },
  "servers": [
    {
      "url": "https://open-api-demo.open-api.perfectgym.com",
      "description": "Demo tenant"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "tags": [
    {
      "name": "Appointments",
      "description": "Appointment, bookable appointment and slots operations"
    },
    {
      "name": "Checkin vouchers",
      "description": "Redeem checkin vouchers"
    },
    {
      "name": "Classes",
      "description": "Class and slots operations"
    },
    {
      "name": "Cross Studio",
      "description": "Cross studio operations"
    },
    {
      "name": "Customers",
      "description": "Get customers and contracts"
    },
    {
      "name": "Customers Account",
      "description": "Retrieve customer accounting details"
    },
    {
      "name": "Customers Communication",
      "description": "Retrieve customer communication details"
    },
    {
      "name": "Customers Self-service"
    },
    {
      "name": "Devices",
      "description": "Get device information"
    },
    {
      "name": "Employees",
      "description": "Employee operations"
    },
    {
      "name": "Finance",
      "description": "Debt collection operations"
    },
    {
      "name": "Leads",
      "description": "Leads operations"
    },
    {
      "name": "Membership Self-service",
      "description": "Manage membership contracts"
    },
    {
      "name": "Memberships",
      "description": "Membership operations"
    },
    {
      "name": "Online offers",
      "description": "Online offer operations"
    },
    {
      "name": "Payments",
      "description": "Payment operations"
    },
    {
      "name": "Studios",
      "description": "Get studio information"
    },
    {
      "name": "Trial Offers",
      "description": "Get trial offers information"
    }
  ],
  "paths": {
    "/v1/payments/user-session": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Create a user payment session",
        "description": "Required Scopes: `PAYMENT_WRITE`\n\nRequest to initiate a user session for payments. This is used to collect payment instruments for future recurring payments or one-time transactions.",
        "operationId": "userSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsUserSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsUserSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/customers/{customerId}/self-service/contact-data": {
      "get": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Get customer's contact data",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_READ`\n\nReturns customer current contact data along with requested change of this data",
        "operationId": "getCustomerContactData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataDtoCustomerContactData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      },
      "post": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Create contact data amendment",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_WRITE`\n\nCreates request for contact data amendment for specified customerId",
        "operationId": "createCustomerContactDataAmendment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Requested changes for contact data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactData"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerContactData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/communications/{customerId}/threads": {
      "post": {
        "tags": [
          "Customers Communication"
        ],
        "summary": "Create communication thread",
        "description": "Required Scopes: `COMMUNICATION_WRITE`\n\nCreates new thread with a new communication for a customer",
        "operationId": "createCommunicationInNewCommunicationThread",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommunicationThreadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommunicationThreadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/checkin-vouchers/redeem": {
      "post": {
        "tags": [
          "Checkin vouchers"
        ],
        "summary": "Redeem checkin voucher",
        "description": "Required Scopes: `CHECKIN_VOUCHER_WRITE`\n\nRedeem checkin voucher",
        "operationId": "redeemCheckinVoucher",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CheckinVoucherRedeem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CheckinVoucherRedeemResultDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/trial-offers/bookable-trial-offers/classes": {
      "get": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Get bookable trial offer classes",
        "description": "Required Scopes: `TRIAL_OFFER_READ`\n\nGet pageable bookable trial offer classes within the next year",
        "operationId": "getBookableTrialOfferClasses",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request (last ID of the class)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrialOfferClassesSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/studios/utilization": {
      "get": {
        "tags": [
          "Studios"
        ],
        "summary": "Get studio utilization",
        "description": "Required Scopes: `STUDIO_READ`\n\nReturns information about current checkin count and maximum studio capacity",
        "operationId": "getUtilization",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StudioUtilization"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/online-offers/purchasable": {
      "get": {
        "tags": [
          "Online offers"
        ],
        "summary": "Get online offers",
        "description": "Required Scopes: `ONLINE_OFFER_READ`\n\nReturns paginated purchasable online offers.",
        "operationId": "getOnlineOffers",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request (last ID of the class)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnlineOfferSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/memberships/{customerId}/self-service/contract-data": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get customer's contract data",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_READ`\n\nReturns customer's current contract data for memberships",
        "operationId": "getContractData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MembershipSelfServiceContractData"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/memberships/membership-offers": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "summary": "Get all membership offers",
        "description": "Required Scopes: `MEMBERSHIP_READ`\n\nReturns all available membership offers.",
        "operationId": "getMembershipOffers",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MembershipOffer"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/leads/config": {
      "get": {
        "tags": [
          "Leads"
        ],
        "summary": "Getting the config of the lead",
        "description": "Required Scopes: `LEAD_READ`\n\nReturns generic lead data configuration",
        "operationId": "getLeadConfig",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadConfig"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/employees": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Get employees",
        "description": "Required Scopes: `EMPLOYEE_READ`\n\nReturns employees for studio defined by used x-api-key.",
        "operationId": "getEmployees",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmployeeSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/devices": {
      "get": {
        "tags": [
          "Devices"
        ],
        "summary": "Get devices",
        "description": "Required Scopes: `DEVICE_READ`\n\nReturns devices for a studio",
        "operationId": "getDevices",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Device"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/debt-collection/configuration": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get Configuration of Debt Collection",
        "description": "Required Scopes: `DEBT_COLLECTION_READ`\n\nGet Configuration of Debt Collection",
        "operationId": "getDebtCollectionConfiguration",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebtCollectionConfiguration"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/customers": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customers",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns all customers from studio in expected slices",
        "operationId": "getCustomers",
        "parameters": [
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          },
          {
            "name": "lastOffsetId",
            "in": "query",
            "description": "Last ID of customer from last chunk",
            "required": false,
            "deprecated": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request (last ID of the customer)",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100,
              "maximum": 500,
              "minimum": 50
            }
          },
          {
            "name": "customerStatus",
            "in": "query",
            "description": "Defines status of returned customers",
            "required": false,
            "schema": {
              "type": "string",
              "default": "MEMBER",
              "enum": [
                "MEMBER",
                "PROSPECT",
                "FORMER_MEMBER"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/customers/{customerId}/account/balances": {
      "get": {
        "tags": [
          "Customers Account"
        ],
        "summary": "Get customer's account balance data",
        "description": "Required Scopes: `CUSTOMER_ACCOUNT_READ`\n\nReturns customer's current account balance data",
        "operationId": "getCustomersAccountBalanceData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAccountBalance"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/cross-studio/customers/by": {
      "get": {
        "tags": [
          "Cross Studio"
        ],
        "summary": "Get customer by",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns customer by one of the given parameters from all studios with activated partner integration",
        "operationId": "getCrossStudioCustomerBy",
        "parameters": [
          {
            "name": "cardNumber",
            "in": "query",
            "description": "Card number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat"
            }
          },
          {
            "name": "debtorId",
            "in": "query",
            "description": "Unique ID of the debtor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "qrCodeUuid",
            "in": "query",
            "description": "QR code UUID to identify the customer",
            "required": false,
            "deprecated": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "barcode",
            "in": "query",
            "description": "Barcode to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pin",
            "in": "query",
            "description": "PIN to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "Customer number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/classes": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get classes",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns classes with at least one scheduled appointment for the period of one day before to fourteen days ahead",
        "operationId": "getActiveClasses",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request (last ID of the class)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/appointments/bookable": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get bookable appointments",
        "description": "Required Scopes: `BOOKABLE_APPOINTMENTS_READ`\n\nReturns bookable appointments",
        "operationId": "getBookableAppointments",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request (last ID of the bookable appointment)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookableAppointmentSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 1
      }
    },
    "/v1/devices/{deviceId}/activate": {
      "put": {
        "tags": [
          "Devices"
        ],
        "summary": "Activate device",
        "description": "Required Scopes: `DEVICE_WRITE`\n\nActivates device and returns token",
        "operationId": "activateDevice",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeviceActivationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/communications/{customerId}/threads/{threadId}": {
      "put": {
        "tags": [
          "Customers Communication"
        ],
        "summary": "Update communication thread",
        "description": "Required Scopes: `COMMUNICATION_WRITE`\n\nAdds new communication for a customer to an existing communication thread and updates the thread",
        "operationId": "createCommunicationInExistingCommunicationThread",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "threadId",
            "in": "path",
            "description": "The ID of the communication thread",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommunicationThreadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommunicationThreadResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/memberships/{customerId}/self-service/ordinary-contract-cancelation": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Create contract cancelation amendment",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_WRITE`\n\nCreates contract cancelation amendment for specified contract id",
        "operationId": "createContractCancelationAmendment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSelfServiceMainContractCancelation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/leads/validate": {
      "post": {
        "tags": [
          "Leads"
        ],
        "summary": "Validate for lead creation",
        "description": "Required Scopes: `LEAD_WRITE`\n\nValidates the lead data for creation",
        "operationId": "validateForLeadCreation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LeadCreationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadCreationValidationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/trial-offers/bookable-trial-offers/appointments/bookable": {
      "get": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Get bookable trial offer appointments",
        "description": "Required Scopes: `TRIAL_OFFER_READ`\n\nGet pageable bookable trial offer appointments within the next year",
        "operationId": "getBookableTrialOfferAppointments",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request (last ID of the bookable appointment)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookableTrialOfferAppointmentsSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/studios/information": {
      "get": {
        "tags": [
          "Studios"
        ],
        "summary": "Get studio general information",
        "description": "Required Scopes: `STUDIO_READ`\n\nReturns studio's general information for authenticated subject",
        "operationId": "getStudioInformation",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StudioInformation"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/online-offers/purchasable/{offerId}": {
      "get": {
        "tags": [
          "Online offers"
        ],
        "summary": "Get online offer details",
        "description": "Required Scopes: `ONLINE_OFFER_READ`\n\nReturns extended information about the online offer by id.",
        "operationId": "getOnlineOfferExtendedById",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "description": "The id of the online offer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnlineOfferExtended"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/memberships/membership-offers/{membershipOfferId}": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "summary": "Get membership offer by id",
        "description": "Required Scopes: `MEMBERSHIP_READ`\n\nReturns extended information about the membership offer.",
        "operationId": "getMembershipOfferById",
        "parameters": [
          {
            "name": "membershipOfferId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipOfferExtended"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/employees/{id}": {
      "get": {
        "tags": [
          "Employees"
        ],
        "summary": "Get employee",
        "description": "Required Scopes: `EMPLOYEE_READ`\n\nReturns employee by id",
        "operationId": "getEmployee",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the employee",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Employee"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/debt-collection/{debtCollectionRunId}/debtors": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get Debtors",
        "description": "Required Scopes: `DEBT_COLLECTION_READ`\n\nReturns debtors for specified debtCollectionRunId in slices",
        "operationId": "getDebtors",
        "parameters": [
          {
            "name": "debtCollectionRunId",
            "in": "path",
            "description": "Unique ID of the debt collection run",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebtorSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/customers/{customerId}/activities/checkins": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's checkin history",
        "description": "Required Scopes: `CHECKIN_READ`\n\nReturns a list of studio checkins of the customer for a specific time span (default is one month from today) in expected slices",
        "operationId": "getCustomersCheckinHistory",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The from date of the time span",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The to date of the time span, should not be greater than 365 days from the start date.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCheckinSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/customers/{customerId}/account/transactions": {
      "get": {
        "tags": [
          "Customers Account"
        ],
        "summary": "Get customer's account past transactions in slices",
        "description": "Required Scopes: `CUSTOMER_ACCOUNT_READ`\n\nReturns customer's account transaction data for the past excluding today",
        "operationId": "getCustomersAccountTransactionData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingEntrySlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/cross-studio/customers/{customerId}": {
      "get": {
        "tags": [
          "Cross Studio"
        ],
        "summary": "Get customer by id",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns customer by given id from all studios with activated partner integration",
        "operationId": "getCrossStudioCustomerById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/classes/{classId}": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get class by id",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns a class for specified id",
        "operationId": "getClassById",
        "parameters": [
          {
            "name": "classId",
            "in": "path",
            "description": "Id of the class.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Class"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/appointments/bookable/{bookableAppointmentId}": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get bookable appointment",
        "description": "Required Scopes: `BOOKABLE_APPOINTMENTS_READ`\n\nReturns bookable appointment",
        "operationId": "getBookableAppointment",
        "parameters": [
          {
            "name": "bookableAppointmentId",
            "in": "path",
            "description": "Id of the bookable appointment",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookableAppointment"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 2
      }
    },
    "/v1/communications/{customerId}/communication-preferences": {
      "get": {
        "tags": [
          "Customers Communication"
        ],
        "summary": "Get communication preferences",
        "description": "Required Scopes: `COMMUNICATION_PREFERENCES_READ`\n\nGet communication preferences for a customer",
        "operationId": "getCommunicationPreferences",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommunicationPreference"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      },
      "put": {
        "tags": [
          "Customers Communication"
        ],
        "summary": "Update communication preferences",
        "description": "Required Scopes: `COMMUNICATION_PREFERENCES_WRITE`\n\nUpdate communication preferences for a customer",
        "operationId": "updateCommunicationPreferences",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CommunicationPreference"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommunicationPreference"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/online-offers/purchase/preview": {
      "post": {
        "tags": [
          "Online offers"
        ],
        "summary": "Preview online offer purchase preview",
        "description": "Required Scopes: `ONLINE_OFFER_WRITE`\n\nReturns a preview of an online offer purchase by provided offer id and optional voucher code and customer id.",
        "operationId": "postOnlineOfferPurchasePreview",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnlineOfferPurchasePreviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnlineOfferPurchasePreviewResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/memberships/signup/preview": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "summary": "Preview information before signing up for a new membership",
        "description": "Required Scopes: `MEMBERSHIP_WRITE`",
        "operationId": "postSignupPreview",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSignupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1SignupPreviewDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/leads/create": {
      "post": {
        "tags": [
          "Leads"
        ],
        "summary": "Create a new Lead based on the config",
        "description": "Required Scopes: `LEAD_WRITE`\n\nCreates a new lead based on the configuration",
        "operationId": "createLead",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LeadCreationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadCreationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/customers/{customerId}/self-service/address-data": {
      "get": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Get customer's address data",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_READ`\n\nReturns customer current address data along with requested change of this data",
        "operationId": "getCustomerAddressData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataDtoCustomerAddressData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      },
      "post": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Create address data amendment",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_WRITE`\n\nCreates request for address data amendment for specified customerId",
        "operationId": "createCustomerAddressDataAmendment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Requested changes for address data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddressData"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerAddressData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/cross-studio/customers/search": {
      "post": {
        "tags": [
          "Cross Studio"
        ],
        "summary": "Search customers",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns all customers from all studios with activated partner integration by given criteria",
        "operationId": "searchCrossStudioCustomers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSearchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Customer"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/trial-offers/config/{configId}": {
      "get": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Get trial offer config",
        "description": "Required Scopes: `TRIAL_OFFER_READ`\n\nGet trial offer config by config id",
        "operationId": "getTrialOfferConfig",
        "parameters": [
          {
            "name": "configId",
            "in": "path",
            "description": "Id of the trial offer configuration",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrialOfferConfig"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/studios/tags": {
      "get": {
        "tags": [
          "Studios"
        ],
        "summary": "Get all available studio tags",
        "description": "Required Scopes: `STUDIO_READ`\n\nReturns all tags that can be assigned to a studio",
        "operationId": "getAll",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Tag"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/memberships/self-service/contract-cancelation-reasons": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get studio's contract cancelation reason data",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_READ`\n\nGet available contract cancelation reasons for the studio",
        "operationId": "getContractCancelationReasonData",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContractCancelationReason"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/debt-collection/{debtCollectionRunId}/details": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get Transfer Details",
        "description": "Required Scopes: `DEBT_COLLECTION_READ`\n\nGet transfer details by specified debtCollectionRunId",
        "operationId": "getTransferDetails",
        "parameters": [
          {
            "name": "debtCollectionRunId",
            "in": "path",
            "description": "Unique ID of the debt collection run",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferDetails"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/customers/{customerId}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer by id",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns customer by given id",
        "operationId": "getCustomerById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/customers/{customerId}/account/transactions/upcoming": {
      "get": {
        "tags": [
          "Customers Account"
        ],
        "summary": "Get customer's account upcoming transactions in slices within the next year",
        "description": "Required Scopes: `CUSTOMER_ACCOUNT_READ`\n\nReturns customer's account upcoming transaction data including today",
        "operationId": "getCustomersAccountUpcomingData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingEntrySlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/classes/slots": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get classes slots",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns class slots within the timeframe of daysAhead starting from slotWindowStartDate, for multiple classes",
        "operationId": "getClassSlotsForMultipleClasses",
        "parameters": [
          {
            "name": "daysAhead",
            "in": "query",
            "description": "Days from now on to look ahead",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "maximum": 6,
              "minimum": 0
            }
          },
          {
            "name": "slotWindowStartDate",
            "in": "query",
            "description": "Class slots are retrieved within the time window from slotWindowStartDate to (slotWindowStartDate + daysAhead)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/appointments/bookable/{bookableAppointmentId}/slots": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get bookable appointment slots",
        "description": "Required Scopes: `BOOKABLE_APPOINTMENTS_READ`\n\nReturns bookable appointment slots",
        "operationId": "getBookableAppointmentSlots",
        "parameters": [
          {
            "name": "bookableAppointmentId",
            "in": "path",
            "description": "Id of the bookable appointment",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Id of the customer",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "daysAhead",
            "in": "query",
            "description": "Days from now on to look ahead",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "maximum": 6,
              "minimum": 1
            }
          },
          {
            "name": "slotWindowStartDate",
            "in": "query",
            "description": "Bookable appointment slots are calculated in the window from slotWindowStartDate to (slotWindowStartDate + daysAhead)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BookableAppointmentSlot"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 3
      }
    },
    "/v1/studios/information/tags": {
      "put": {
        "tags": [
          "Studios"
        ],
        "summary": "Update studio's tags",
        "description": "Required Scopes: `STUDIO_WRITE`\n\nUpdates the tags assigned to the studio",
        "operationId": "updateStudioTags",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Tag"
                },
                "uniqueItems": true
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Tag"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/trial-offers/lead/validate": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Validate for lead customer creation",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nValidate for the creation of a new lead customer",
        "operationId": "validateForLeadCustomerCreation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrialOfferLeadCustomerCreationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrialOfferLeadCustomerCreationValidationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/online-offers/purchase": {
      "post": {
        "tags": [
          "Online offers"
        ],
        "summary": "Purchase an online offer",
        "description": "Required Scopes: `ONLINE_OFFER_WRITE`\n\nReturns response DTO on success.",
        "operationId": "postOnlineOfferPurchase",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OnlineOfferPurchaseRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnlineOfferPurchaseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/memberships/{customerId}/self-service/withdraw-ordinary-contract-cancelation/{contractId}": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "withdraw cancelation of contract",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_WRITE`\n\nWithdraws contract cancelation amendment or reverts cancelation for specific contract id",
        "operationId": "withdrawContractCancelation",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/memberships/signup": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "summary": "Sign up a new membership",
        "description": "Required Scopes: `MEMBERSHIP_WRITE`\n\nReturns customer id within the result dto.",
        "operationId": "signupMembership",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSignupRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipSignupResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/debt-collection/update": {
      "post": {
        "tags": [
          "Finance"
        ],
        "summary": "Update debt collection",
        "description": "Required Scopes: `DEBT_COLLECTION_WRITE`",
        "operationId": "updateDebtCollection",
        "requestBody": {
          "description": "Debt collection update details",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DebtCollectionUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed. No matching debt collection contract found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/appointments/bookable/validate": {
      "post": {
        "tags": [
          "Appointments"
        ],
        "summary": "Validate for appointment booking",
        "description": "Required Scopes: `APPOINTMENTS_WRITE`\n\nReturns validation result",
        "operationId": "validateForAppointmentBooking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppointmentBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppointmentBookingValidationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/customers/by": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer by",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns customer by one of the given parameters",
        "operationId": "getCustomerBy",
        "parameters": [
          {
            "name": "cardNumber",
            "in": "query",
            "description": "Card number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          },
          {
            "name": "debtorId",
            "in": "query",
            "description": "Unique ID of the debtor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "qrCodeUuid",
            "in": "query",
            "description": "QR code UUID to identify the customer",
            "required": false,
            "deprecated": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "barcode",
            "in": "query",
            "description": "Barcode to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pin",
            "in": "query",
            "description": "PIN to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "Customer number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/cross-studio/customers/{customerId}/activities/checkins": {
      "get": {
        "tags": [
          "Cross Studio"
        ],
        "summary": "Get customer's checkin history",
        "description": "Required Scopes: `CHECKIN_READ`\n\nReturns a list of studio checkins of the customer from all studios with activated partner integration for a specific time span (default is one month from today) in expected slices",
        "operationId": "getCrossStudioCustomersCheckinHistory",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The from date of the time span",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "toDate",
            "in": "query",
            "description": "The to date of the time span, should not be greater than 365 days from the start date.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerCheckinSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/classes/{classId}/slots": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get class slots",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns class slots for specified class id and the period of one day before to fourteen days ahead",
        "operationId": "getClassSlots",
        "parameters": [
          {
            "name": "classId",
            "in": "path",
            "description": "Id of the class.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 4
      }
    },
    "/v1/trial-offers/lead/create": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Create a lead customer",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nCreate a lead customer",
        "operationId": "createLeadCustomer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrialOfferLeadCustomerCreationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrialOfferLeadCustomerCreationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/memberships/customers/{customerId}/add-membership/preview": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "summary": "Preview information before adding a contract to an existing customer",
        "description": "Required Scopes: `MEMBERSHIP_WRITE`",
        "operationId": "postMembershipPreview",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSignupContract"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1SignupPreviewDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/debt-collection/{debtCollectionRunId}/confirmTransfer": {
      "post": {
        "tags": [
          "Finance"
        ],
        "summary": "Confirm transfer retrieval",
        "description": "Required Scopes: `DEBT_COLLECTION_WRITE`\n\nAfter fetching all data (details and debtors) related to a transfer use this endpoint to confirm the retrieval. This will flag the related data in Magicline as retrieved by the Agency. This endpoint should only be called if the status of the transfer is WAITING_FOR_CONFIRMATION (see getTransferDetails)",
        "operationId": "confirmTransfer",
        "parameters": [
          {
            "name": "debtCollectionRunId",
            "in": "path",
            "description": "Unique ID of the debt collection run",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK, we received the confirmation. If the transfer was already confirmed (e.g. retransmission) also 200 is returned."
          },
          "400": {
            "description": "Validation of the request failed. No matching debt collection contract found. The transfer is in an invalid state and confirmation is not possible.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/customers/{customerId}/self-service/master-data": {
      "get": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Get customer's master data",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_READ`\n\nReturns customer current master data along with requested change of this data",
        "operationId": "getCustomerMasterData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataDtoCustomerMasterData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      },
      "post": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Create master data amendment",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_WRITE`\n\nCreates request for master data amendment for specified customerId",
        "operationId": "createCustomerMasterDataAmendment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Requested changes for master data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMasterData"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerMasterData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/customers/search": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Search customers",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns all customers from studio by given criteria",
        "operationId": "searchCustomers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerSearchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Customer"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/appointments/booking/book": {
      "post": {
        "tags": [
          "Appointments"
        ],
        "summary": "Book an appointment booking",
        "description": "Required Scopes: `APPOINTMENTS_WRITE`\n\nBook an appointment booking for given customer",
        "operationId": "bookAppointmentBooking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppointmentBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppointmentBookingResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/online-offers/{customerId}/purchased": {
      "get": {
        "tags": [
          "Online offers"
        ],
        "summary": "Get online offer purchases",
        "description": "Required Scopes: `ONLINE_OFFER_READ`\n\nReturns online offer purchases by customer id",
        "operationId": "getOnlineOfferPurchasesByCustomerId",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The id of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OnlineOfferCustomerPurchase"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/memberships/{contractId}/self-service/idle-periods/config": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get the idle period configuration of the contract",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_CONFIG_READ`\n\nGet the idle period configuration of the contract",
        "operationId": "getIdlePeriodConfig",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriodConfiguration"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/cross-studio/membership-offers/studios": {
      "get": {
        "tags": [
          "Cross Studio"
        ],
        "summary": "Get studios with active membership offers",
        "description": "Required Scopes: `STUDIO_READ`\n\nReturns all studios with at least one active membership offer.",
        "operationId": "getStudiosWithActiveMembershipOffers",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/StudioInformationBase"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/classes/{classId}/slots/{classSlotId}": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get class slot by id",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns class slots for specified class slot id",
        "operationId": "getClassSlotById",
        "parameters": [
          {
            "name": "classId",
            "in": "path",
            "description": "Id of the class.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "classSlotId",
            "in": "path",
            "description": "Unique ID of the class slot",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlot"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 5
      }
    },
    "/v1/memberships/{contractId}/self-service/idle-periods/validate": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Validate an idle period request",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_WRITE`\n\nValidate if an idle period or idle period amendment can be created with the data from the idle period request",
        "operationId": "validateIdlePeriodRequest",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdlePeriodValidationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriodValidationStatusResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/memberships/customers/{customerId}/add-membership": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "summary": "Add a contract to an existing customer",
        "description": "Required Scopes: `MEMBERSHIP_WRITE`",
        "operationId": "addMembership",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSignupContract"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/customers/{customerId}/account/payment": {
      "post": {
        "tags": [
          "Customers Account"
        ],
        "summary": "Book a payment for a customer",
        "description": "Required Scopes: `PAYMENT_WRITE`\n\nRequest to book a payment for a specific customer. This endpoint is used to process payments associated with a member's account.",
        "operationId": "bookCustomerPayment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookCustomerPaymentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookCustomerPaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/cross-studio/customers/search/by-payment-details": {
      "post": {
        "tags": [
          "Cross Studio"
        ],
        "summary": "Search customers by payment details",
        "description": "Required Scopes: `CUSTOMER_PAYMENT_SEARCH`\n\nReturns all customers from all studios with activated partner integration by given criteria",
        "operationId": "searchCrossStudioCustomersByPaymentDetails",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "ACH": "#/components/schemas/AchPaymentMethodSearchCriteria",
                    "BACS": "#/components/schemas/BacsPaymentMethodSearchCriteria",
                    "CREDIT_CARD": "#/components/schemas/CreditCardPaymentMethodSearchCriteria",
                    "SEPA": "#/components/schemas/SepaPaymentMethodSearchCriteria"
                  }
                },
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/AchPaymentMethodSearchCriteria"
                  },
                  {
                    "$ref": "#/components/schemas/BacsPaymentMethodSearchCriteria"
                  },
                  {
                    "$ref": "#/components/schemas/CreditCardPaymentMethodSearchCriteria"
                  },
                  {
                    "$ref": "#/components/schemas/SepaPaymentMethodSearchCriteria"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerWithPaymentDetails"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/classes/booking/book": {
      "post": {
        "tags": [
          "Classes"
        ],
        "summary": "Book a class slot",
        "description": "Required Scopes: `CLASSES_WRITE`\n\nBook a class slot for given customer",
        "operationId": "bookClassSlot",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSlotBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotBookingResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/trial-offers/bookable-trial-offers/classes/{classId}/slots": {
      "get": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Get class slots for trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_READ`\n\nReturns class slots for trial offers for specified class id and the period of one day before to fourteen days ahead",
        "operationId": "getClassSlotsForTrialOffers",
        "parameters": [
          {
            "name": "classId",
            "in": "path",
            "description": "Id of the trial offer class",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50,
              "maximum": 100,
              "minimum": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/online-offers/{customerId}/purchased/{offerId}": {
      "get": {
        "tags": [
          "Online offers"
        ],
        "summary": "Get online offer purchases by customer id and offer id",
        "description": "Required Scopes: `ONLINE_OFFER_READ`\n\nReturns online offer purchases by customer id and offer id",
        "operationId": "getOnlineOfferPurchasesByCustomerIdAndOfferId",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The id of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "description": "The id of the online offer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OnlineOfferCustomerPurchaseExtended"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/debt-collection/cases": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get debt collection cases",
        "description": "Required Scopes: `DEBT_COLLECTION_READ`\n\nReturns the current state of debt collection cases specified by debtorId, collectionCaseId and agencyCollectionCaseId. Each parameter has maximum allowable 50 ids.",
        "operationId": "getDebtCollectionCases",
        "parameters": [
          {
            "name": "debtorId",
            "in": "query",
            "description": "Unique ID of the debtor",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 0
            }
          },
          {
            "name": "collectionCaseId",
            "in": "query",
            "description": "The case id provided by Magicline. This is returned from the 'Get Debtors' endpoint as 'collectionCaseId'",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 0
            }
          },
          {
            "name": "agencyCollectionCaseId",
            "in": "query",
            "description": "The case ID used by the agency. This relates to the 'agencyCollectionCaseId' parameter used in the 'Update debt collection' endpoint.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 0
            }
          },
          {
            "name": "caseAdjustmentRequestId",
            "in": "query",
            "description": "The request ID delivered by webhook entityId. It contains the latest changes to a case in the Magicline.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DebtorUpdate"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/customers/{customerId}/contracts": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's contracts",
        "description": "Required Scopes(any of): `CUSTOMER_CONTRACT_READ`, `CUSTOMER_READ`\n\nReturns customer's contracts",
        "operationId": "getCustomersContracts",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ContractStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/customers/measurement/latest": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's measurement",
        "description": "Required Scopes(any of): `CUSTOMER_MEASUREMENT_READ`, `CUSTOMER_READ`\n\nReturns customer's latest measurement for specified customer.",
        "operationId": "getCustomerMeasurement",
        "parameters": [
          {
            "name": "cardNumber",
            "in": "query",
            "description": "Card number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          },
          {
            "name": "qrCodeUuid",
            "in": "query",
            "description": "QR code UUID to identify the customer",
            "required": false,
            "deprecated": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "barcode",
            "in": "query",
            "description": "Barcode to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pin",
            "in": "query",
            "description": "PIN to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Measurement"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      }
    },
    "/v1/appointments/booking/{bookingId}": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get an appointment booking",
        "description": "Required Scopes: `APPOINTMENTS_READ`\n\nGet an appointment booking by id",
        "operationId": "getAppointmentBooking",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "description": "Id of the appointment booking",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppointmentBookingResultWithCustomerId"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 6
      },
      "delete": {
        "tags": [
          "Appointments"
        ],
        "summary": "Delete an appointment booking",
        "description": "Required Scopes: `APPOINTMENTS_WRITE`\n\nDelete an appointment booking by id",
        "operationId": "deleteAppointmentBooking",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "description": "Id of the appointment booking",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      }
    },
    "/v1/memberships/{contractId}/self-service/idle-periods": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get the idle periods of the contract",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_READ`\n\nGet contract idle periods. Amendments are returned, when a idle period is in status pending verification",
        "operationId": "getIdlePeriods",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriodLists"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      },
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Create a contract idle period amendment",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_WRITE`\n\nCreate a contract idle period amendment. When the amendment is accepted, it will become an idle period. ATTENTION: Please see https://developer.magicline.com/apis/openapi/general-information#multipartform-data-requests",
        "operationId": "createIdlePeriodAmendment",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "$ref": "#/components/schemas/IdlePeriodCreateRequest"
                  },
                  "document": {
                    "type": "string",
                    "format": "binary",
                    "description": "Idle period proposal document (jpeg, png, pdf, heic)"
                  }
                },
                "required": [
                  "data"
                ]
              },
              "encoding": {
                "data": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriod"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 9
      }
    },
    "/v1/customers/{customerId}/self-service/payment-data": {
      "get": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Get customer's payment data",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_READ`\n\nReturns customer current payment data along with requested change of this data",
        "operationId": "getCustomerPaymentData",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataDtoCustomerPaymentData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      },
      "post": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Create payment data amendment",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_WRITE`\n\nCreates request for payment data amendment for specified customerId",
        "operationId": "createCustomerPaymentDataAmendment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Requested changes for payment data",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenApiV1CustomerPaymentAmendment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerPaymentData"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      }
    },
    "/v1/customers/{customerId}/account/payment-instrument": {
      "post": {
        "tags": [
          "Customers Account"
        ],
        "summary": "Update payment instrument of a customer",
        "description": "Required Scopes: `PAYMENT_WRITE`\n\nUpdate a payment instrument for a specific customer.",
        "operationId": "updateCustomerPaymentInstrument",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsUpdateCustomerPaymentInstrumentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateCustomerPaymentInstrumentResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      }
    },
    "/v1/classes/booking/validate": {
      "post": {
        "tags": [
          "Classes"
        ],
        "summary": "Validate class slot is bookable",
        "description": "Required Scopes: `CLASSES_WRITE`\n\nValidate class slot is available to book for given customer",
        "operationId": "validateClassSlot",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSlotBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotBookingValidationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      }
    },
    "/v1/trial-offers/bookable-trial-offers/appointments/bookable/{bookableAppointmentId}/slots": {
      "get": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Get bookable appointment slots for trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_READ`\n\nReturns bookable appointment slots for trial offers",
        "operationId": "getBookableAppointmentSlotsForTrialOffers",
        "parameters": [
          {
            "name": "bookableAppointmentId",
            "in": "path",
            "description": "Id of the bookable trial offer appointment",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Id of the customer",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "daysAhead",
            "in": "query",
            "description": "Days from now on to look ahead",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1,
              "maximum": 6,
              "minimum": 1
            }
          },
          {
            "name": "slotWindowStartDate",
            "in": "query",
            "description": "Bookable appointment slots are calculated in the window from slotWindowStartDate to (slotWindowStartDate + daysAhead)",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BookableAppointmentSlot"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      }
    },
    "/v1/memberships/{customerId}/membership-switch/configs": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "summary": "Get all membership switch configurations for a customer",
        "description": "Required Scopes: `MEMBERSHIP_READ`\n\nReturns all available membership switch configurations for a customer.",
        "operationId": "getMembershipSwitchConfigurationsForCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer to load membership switch configurations for",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "studioId",
            "in": "query",
            "description": "An optional studio ID to load membership switch configurations for instead of the customer's",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MembershipSwitchConfig"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      }
    },
    "/v1/customers/contracts/by": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's contracts by",
        "description": "Required Scopes(any of): `CUSTOMER_CONTRACT_READ`, `CUSTOMER_READ`\n\nReturns customer's contracts by one of the given parameters",
        "operationId": "getCustomerContractsBy",
        "parameters": [
          {
            "name": "cardNumber",
            "in": "query",
            "description": "Card number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          },
          {
            "name": "debtorId",
            "in": "query",
            "description": "Unique ID of the debtor",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "qrCodeUuid",
            "in": "query",
            "description": "QR code UUID to identify the customer",
            "required": false,
            "deprecated": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "barcode",
            "in": "query",
            "description": "Barcode to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pin",
            "in": "query",
            "description": "PIN to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerNumber",
            "in": "query",
            "description": "Customer number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/ContractStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Contract"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 7
      }
    },
    "/v1/memberships/{contractId}/self-service/idle-periods/{idlePeriodId}": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get contract idle period by id",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_READ`\n\nGet contract idle period or amendment by id.",
        "operationId": "getIdlePeriodById",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "idlePeriodId",
            "in": "path",
            "description": "Unique ID of the idle period",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriod"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      },
      "put": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Update a contract idle period",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_WRITE`\n\nUpdate a contract idle period. When the amendment is accepted, it will become an idle period. ATTENTION: Please see https://developer.magicline.com/apis/openapi/general-information#multipartform-data-requests",
        "operationId": "updateIdlePeriod",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "idlePeriodId",
            "in": "path",
            "description": "Unique ID of the idle period",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "data": {
                    "$ref": "#/components/schemas/IdlePeriodUpdateRequest"
                  },
                  "document": {
                    "type": "string",
                    "format": "binary",
                    "description": "Idle period proposal document (jpeg, png, pdf, heic)"
                  }
                },
                "required": [
                  "data"
                ]
              },
              "encoding": {
                "data": {
                  "contentType": "application/json"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriod"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 19
      },
      "delete": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Withdraw a contract idle period",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_WRITE`\n\nWithdraw a contract idle period or amendment.",
        "operationId": "withdrawIdlePeriod",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "idlePeriodId",
            "in": "path",
            "description": "Unique ID of the idle period",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 10
      }
    },
    "/v1/trial-offers/classes/booking/validate": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Validate class slot is bookable for trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nValidate class slot for trial offers is available to book for given customer",
        "operationId": "validateClassSlotForTrialOffers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSlotBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotBookingValidationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      }
    },
    "/v1/customers/{customerId}/weighing": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Save weighing results",
        "description": "Required Scopes(any of): `CUSTOMER_WRITE`, `CUSTOMER_WEIGHING_WRITE`\n\nSaves weighing details for given customer",
        "operationId": "createCustomerWeighing",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "benefitKey",
            "in": "query",
            "description": "Key of the benefit to use",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerWeighings"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerWeighings"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      }
    },
    "/v1/memberships/{customerId}/membership-switch/configs/{configId}": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "summary": "Get membership switch configuration by id for a customer",
        "description": "Required Scopes: `MEMBERSHIP_READ`\n\nReturns extended information about the membership offer.",
        "operationId": "getMembershipSwitchConfigurationForCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer to load a membership switch configuration for",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "configId",
            "in": "path",
            "description": "The ID of the membership switch configuration",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "studioId",
            "in": "query",
            "description": "An optional studio ID to validate whether the specified membership switch configuration is available for that studio",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1MembershipSwitchConfigExtended"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      }
    },
    "/v1/customers/{customerId}/account/payment-details": {
      "get": {
        "tags": [
          "Customers Account"
        ],
        "summary": "Get payment details of a customer",
        "description": "Required Scopes: `PAYMENT_READ`\n\nGet payment details for a specific customer.",
        "operationId": "getCustomerPaymentDetails",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPaymentDetails"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      }
    },
    "/v1/classes/booking/{bookingId}": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get class booking by id",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns class booking for specified booking id",
        "operationId": "getClassBookingById",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "description": "Id of the booking",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotBookingResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      },
      "delete": {
        "tags": [
          "Classes"
        ],
        "summary": "Cancel a class booking",
        "description": "Required Scopes: `CLASSES_WRITE`\n\nCancel booking of a class slot for given bookingId",
        "operationId": "cancelClassSlotById",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "description": "Unique id of the booking to be cancelled",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Booking was cancelled successfully"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 10
      }
    },
    "/v1/appointments/booking": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get appointment bookings for a customer",
        "description": "Required Scopes: `APPOINTMENTS_READ`\n\nGet appointment bookings with a period starting and ending within a timeframe of +/- 2 weeks for a specific customer",
        "operationId": "getAppointmentBookings",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "Id of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AppointmentBookingResult"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 8
      }
    },
    "/v1/trial-offers/appointments/booking/validate": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Validate for appointment booking for trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nReturns validation result for trial offers appointment booking",
        "operationId": "validateForAppointmentBookingForTrialOffers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppointmentBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppointmentBookingValidationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 9
      }
    },
    "/v1/memberships/{customerId}/membership-switch/preview": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "summary": "Preview the membership switch",
        "description": "Required Scopes: `MEMBERSHIP_WRITE`\n\nReturns information about an impact of a membership switch of a given contract.",
        "operationId": "postMembershipSwitchPreview",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The ID of the customer to preview the membership switch for",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "studioId",
            "in": "query",
            "description": "An optional studio ID to retrieve studio-specific offer information for, such as pricing",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSwitch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MembershipSwitchPreview"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 9
      }
    },
    "/v1/customers/{customerId}/benefits": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's benefits",
        "description": "Required Scopes(any of): `CUSTOMER_BENEFIT_READ`, `CUSTOMER_READ`\n\nReturns all customer's benefits",
        "operationId": "getBenefits",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Benefit keys to validate, when provided, service will check only them",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": "FIRST_KEY&key=SECOND_KEY"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BenefitValidationDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 9
      }
    },
    "/v1/customers/{customerId}/self-service/amendment/{amendmentId}": {
      "delete": {
        "tags": [
          "Customers Self-service"
        ],
        "summary": "Withdraw customer's amendment",
        "description": "Required Scopes: `CUSTOMER_SELF_SERVICE_WRITE`\n\nWithdraw customer's amendment",
        "operationId": "withdrawAmendment",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "amendmentId",
            "in": "path",
            "description": "Unique ID of the amendment",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Amendment was withdrawn."
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 9
      }
    },
    "/v1/trial-offers/classes/booking/book": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Book a class slot for trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nBook a class slot for trial offers for given customer",
        "operationId": "bookClassSlotForTrialOffers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClassSlotBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClassSlotBookingResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 10
      }
    },
    "/v1/memberships/{customerId}/membership-switch": {
      "post": {
        "tags": [
          "Memberships"
        ],
        "summary": "Perform the membership switch",
        "description": "Required Scopes: `MEMBERSHIP_WRITE`\n\nPerforms the membership switch for a given contract.",
        "operationId": "switchMembership",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSwitch"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 10
      }
    },
    "/v1/customers/benefits": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's benefits by",
        "description": "Required Scopes(any of): `CUSTOMER_BENEFIT_READ`, `CUSTOMER_READ`\n\nReturns customer's benefits by one of the given parameters: card number, barcode or pin. Exactly one identifier must be provided.",
        "operationId": "getBenefitsBy",
        "parameters": [
          {
            "name": "cardNumber",
            "in": "query",
            "description": "Card number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          },
          {
            "name": "barcode",
            "in": "query",
            "description": "Barcode to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pin",
            "in": "query",
            "description": "PIN to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "key",
            "in": "query",
            "description": "Benefit keys to validate, when provided, service will check only them",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": "FIRST_KEY&key=SECOND_KEY"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BenefitValidationDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 10
      }
    },
    "/v1/trial-offers/appointments/booking/book": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Book an appointment for trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nBook an appointment for trial offers for given customer",
        "operationId": "bookAppointmentForTrialOffer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AppointmentBookingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppointmentBookingResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 11
      }
    },
    "/v1/customers/{customerId}/benefits/{benefitKey}/use": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Post customer's benefit usage",
        "description": "Required Scopes(any of): `CUSTOMER_WRITE`, `CUSTOMER_BENEFIT_WRITE`",
        "operationId": "useBenefit",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "benefitKey",
            "in": "path",
            "description": "Key of the benefit to use",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Benefit has been used."
          },
          "400": {
            "description": "Benefit could not be used or provided key is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 11
      }
    },
    "/v1/memberships/self-service/additional-modules": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get additional modules",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_READ`\n\nGet additional modules for a studio",
        "operationId": "getAdditionalModules",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdditionalModule"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 11
      }
    },
    "/v1/memberships/discount-campaigns/{campaignId}": {
      "get": {
        "tags": [
          "Memberships"
        ],
        "summary": "Get discount campaign by id",
        "description": "Required Scopes: `MEMBERSHIP_READ`\n\nReturns basic information about the discount campaign.",
        "operationId": "getDiscountCampaign",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DiscountCampaignDetail"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 11
      }
    },
    "/v1/debt-collection/blocked/debtors": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get blocked debt collection debtors",
        "description": "Required Scopes: `DEBT_COLLECTION_READ`",
        "operationId": "getDebtCollectionBlockedDebtors",
        "parameters": [
          {
            "name": "debtorId",
            "in": "query",
            "description": "Unique ID of the debtor",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebtorIdSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 11
      }
    },
    "/v1/classes/booking": {
      "get": {
        "tags": [
          "Classes"
        ],
        "summary": "Get class bookings by customer id",
        "description": "Required Scopes: `CLASSES_READ`\n\nReturns class booking with a period starting and ending within a timeframe of +/- 2 weeks for a specific customer",
        "operationId": "getClassBookingsByCustomerId",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "Id of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClassSlotBookingResult"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 11
      }
    },
    "/v1/trial-offers/bookings/{bookingId}/confirm": {
      "post": {
        "tags": [
          "Trial Offers"
        ],
        "summary": "Confirm the booking of trial offers",
        "description": "Required Scopes: `TRIAL_OFFER_WRITE`\n\nConfirm the booking of trial offers for classes or appointments if required",
        "operationId": "confirmTrialOfferBooking",
        "parameters": [
          {
            "name": "bookingId",
            "in": "path",
            "description": "Id of the booking",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingConfirmationResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 12
      }
    },
    "/v1/customers/benefits/{benefitKey}/use": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Post customer's benefit usage by",
        "description": "Required Scopes(any of): `CUSTOMER_WRITE`, `CUSTOMER_BENEFIT_WRITE`\n\nUses customer's benefit identified by one of the given parameters: card number, barcode or pin. Exactly one identifier must be provided.",
        "operationId": "useBenefitBy",
        "parameters": [
          {
            "name": "cardNumber",
            "in": "query",
            "description": "Card number to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cardNumberFormat",
            "in": "query",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CardNumberFormat",
              "default": "DECIMAL"
            }
          },
          {
            "name": "barcode",
            "in": "query",
            "description": "Barcode to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pin",
            "in": "query",
            "description": "PIN to identify the customer",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "benefitKey",
            "in": "path",
            "description": "Key of the benefit to use",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Benefit has been used."
          },
          "400": {
            "description": "Benefit could not be used, provided key is invalid, or exactly one identifier was not provided.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 12
      }
    },
    "/v1/memberships/{contractId}/self-service/additional-modules/purchasable": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get purchasable additional modules",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_READ`\n\nGet purchasable additional modules for a studio and a customer (via main contract)",
        "operationId": "getPurchasableAdditionalModules",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the main contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdditionalModule"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 12
      }
    },
    "/v1/debt-collection/blocked/debts": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get blocked debt collection debts",
        "description": "Required Scopes: `DEBT_COLLECTION_READ`",
        "operationId": "getDebtCollectionBlockedDebts",
        "parameters": [
          {
            "name": "debtId",
            "in": "query",
            "description": "Unique ID of the debt",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebtorIdSlicedResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 12
      }
    },
    "/v1/memberships/{contractId}/self-service/additional-modules/validate": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Validate an additional module contract request",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_CONTRACT_WRITE`\n\nValidate an additional module contract request",
        "operationId": "validateAdditionalModuleContractRequest",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the main contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdditionalModuleContractRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdditionalModuleContractValidationStatus"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 13
      }
    },
    "/v1/customers/{customerId}/access-code": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer's access code",
        "description": "Required Scopes: `CUSTOMER_READ`\n\nReturns customer's access code",
        "operationId": "getCustomerAccessCode",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAccessCode"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 13
      }
    },
    "/v1/customers/{customerId}/access-medium": {
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Add a new access medium to a customer",
        "description": "Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`\n\nReturns the newly added access medium",
        "operationId": "addAccessMedium",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccessMediumDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessMediumDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "deprecated": true,
        "x-redoclyOrder": 14
      }
    },
    "/v1/memberships/{contractId}/self-service/additional-modules/purchase": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Purchase an additional module contract",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_CONTRACT_WRITE`\n\nPurchase an additional module contract",
        "operationId": "purchaseAdditionalModuleContract",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the main contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdditionalModuleContractRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdditionalModuleContract"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 14
      }
    },
    "/v1/customers/{customerId}/access-mediums": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Add a new access medium to a customer",
        "description": "Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`\n\nReturns the newly added access medium",
        "operationId": "addAccessMediums",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccessMediumDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessMediumDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 14
      }
    },
    "/v1/customers/{customerId}/access-mediums/{accessMediumId}": {
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Update customer's access medium",
        "description": "Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`\n\nUpdates the customer's access medium. Only previously created mediums may be updated.",
        "operationId": "updateAccessMediums",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "accessMediumId",
            "in": "path",
            "description": "Unique ID of the access medium",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccessIdentificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessMediumDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 15
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "Delete customer's access medium",
        "description": "Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`\n\nDeletes the customer's access medium. Only previously created mediums may be deleted.",
        "operationId": "deleteAccessMediums",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "accessMediumId",
            "in": "path",
            "description": "Unique ID of the access medium",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 16
      }
    },
    "/v1/memberships/{contractId}/self-service/additional-module-contracts/{additionalModuleContractId}": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get an additional module contract",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_CONTRACT_READ`\n\nGet an additional module contract via additional module contract id",
        "operationId": "getAdditionalModuleContract",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the main contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "additionalModuleContractId",
            "in": "path",
            "description": "Unique ID of the additional module contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdditionalModuleContractExtended"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 15
      }
    },
    "/v1/memberships/{contractId}/self-service/additional-module-contracts/{additionalModuleContractId}/ordinary-cancelation": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Create additional module contract cancelation amendment ",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_CONTRACT_WRITE`\n\nCreates additional module contract cancelation amendment for specified contract id and additional module contract id",
        "operationId": "createModuleContractCancelationAmendment",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the main contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "additionalModuleContractId",
            "in": "path",
            "description": "Unique ID of the additional module contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdditionalModuleContractCancelation"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 16
      }
    },
    "/v1/memberships/{contractId}/self-service/additional-module-contracts/{additionalModuleContractId}/withdraw-cancelation": {
      "post": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "withdraw cancelation of the additional module contract",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_CONTRACT_WRITE`\n\nWithdraws additional module contract cancelation amendment or reverts cancelation for specific additional module contract id",
        "operationId": "withdrawAdditionalModuleContractCancelation",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "additionalModuleContractId",
            "in": "path",
            "description": "Unique ID of the additional module contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoidResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 17
      }
    },
    "/v1/customers/{customerId}/documents": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Returns all documents for a customer",
        "description": "Required Scopes: `CUSTOMER_DOCUMENT_READ`\n\nReturns all documents for a customer",
        "operationId": "getDocuments",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset from last request",
            "required": false,
            "schema": {
              "type": "string",
              "default": "0"
            }
          },
          {
            "name": "sliceSize",
            "in": "query",
            "description": "Desired size of data chunk",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10,
              "maximum": 50,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDocuments"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 17
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Upload new document to a customer",
        "description": "Required Scopes: `CUSTOMER_DOCUMENT_WRITE`\n\nReturns the newly uploaded document information",
        "operationId": "uploadDocument",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "description",
            "in": "query",
            "description": "Document description",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "Member contract"
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "Upload file with correct extension."
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDocumentUploadResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 18
      }
    },
    "/v1/customers/{customerId}/documents/{id}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Returns document for a customer",
        "description": "Required Scopes: `CUSTOMER_DOCUMENT_READ`\n\nReturns document for a customer",
        "operationId": "getDocumentById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique ID of the document",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDocument"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 17
      }
    },
    "/v1/memberships/{contractId}/self-service/idle-periods/remaining": {
      "get": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get contract's remaining idle periods",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_READ`\n\nReturns contract's remaining idle periods",
        "operationId": "getRemainingIdlePeriods",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemainingIdlePeriods"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 18
      }
    },
    "/v1/customers/{customerId}/images": {
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Update customer profile image",
        "description": "Required Scopes: `CUSTOMER_WRITE`\n\nUpdates customer profile image. The image will be rescaled(1200x1200) and converted to mime type `image/jpeg`.",
        "operationId": "updateImage",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "image": {
                    "type": "string",
                    "format": "binary",
                    "description": "Upload image with correct extension. Supported mime types: `image/jpeg, image/png`"
                  }
                },
                "required": [
                  "image"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerImage"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 19
      }
    },
    "/v1/memberships/{contractId}/self-service/idle-periods/{idlePeriodId}/preview": {
      "put": {
        "tags": [
          "Membership Self-service"
        ],
        "summary": "Get preview of an updated idle period charges and fees",
        "description": "Required Scopes: `MEMBERSHIP_SELF_SERVICE_IDLE_PERIOD_READ`\n\nGet preview of an updated idle period charges and fees",
        "operationId": "idlePeriodUpdatePreview",
        "parameters": [
          {
            "name": "contractId",
            "in": "path",
            "description": "Unique ID of the contract",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "idlePeriodId",
            "in": "path",
            "description": "Unique ID of the idle period",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdlePeriodUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdlePeriodUpdatePreview"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 20
      }
    },
    "/v1/customers/{customerId}/access-restrictions": {
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Set customer's access restriction",
        "description": "Required Scopes: `CUSTOMER_ACCESS_RESTRICTION_WRITE`\n\nCreates or updates access restriction for the customer.\nIf the customer already has an access restriction, it will be updated with the provided data. Only previously created restrictions may be updated.\nIf no such restriction exists, it will be created. It is necessary to provide either both `startDate` and `endDate` or neither of them.\n",
        "operationId": "setAccessRestriction",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccessRestriction"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessRestriction"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 20
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "Delete customer's access restriction",
        "description": "Required Scopes: `CUSTOMER_ACCESS_RESTRICTION_WRITE`\n\nDeletes the customer's access restriction. Only previously created restrictions may be deleted.",
        "operationId": "deleteAccessRestriction",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 21
      }
    },
    "/v1/taxadvisor/exports/create": {
      "post": {
        "tags": [
          "Finance"
        ],
        "summary": "Create tax advisor export",
        "description": "Required Scopes: `TAX_ADVISOR_EXPORT_WRITE`\n\nReturns the export id",
        "operationId": "createExport",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxAdvisorCreateExport"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxAdvisorExportResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 21
      }
    },
    "/v1/customers/create": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Create customer",
        "description": "Required Scopes: `CUSTOMER_WRITE`\n\nCreates a new customer (prospect) with comprehensive data to allow for future conversion to a full member",
        "operationId": "createCustomer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MembershipSignupCustomer"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiV1CustomerCreateResult"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 22
      }
    },
    "/v1/taxadvisor/exports/{exportId}": {
      "get": {
        "tags": [
          "Finance"
        ],
        "summary": "Get tax advisor export by id",
        "description": "Required Scopes: `TAX_ADVISOR_EXPORT_READ`\n\nReturns export download data like the download URL",
        "operationId": "getExport",
        "parameters": [
          {
            "name": "exportId",
            "in": "path",
            "description": "The exportId received from createExport",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxAdvisorExportDownload"
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 22
      }
    },
    "/v1/customers/additional-information-fields": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get additional information fields",
        "description": "Required Scopes: `ADDITIONAL_INFORMATION_READ`\n\nReturns additional information fields available for assignment to customers. ",
        "operationId": "getAdditionalInformationFields",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdditionalInformationField"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 23
      }
    },
    "/v1/customers/{customerId}/additional-information-field-assignments": {
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Sets additional information field assignments",
        "description": "Required Scopes: `ADDITIONAL_INFORMATION_WRITE`\n\nSets additional information field assignments for a customer. We overwrite existing values, so you need to provide all field assignments that you want to set. If you want to remove a field assignment, don't add it.",
        "operationId": "setAdditionalInformationFieldAssignments",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "description": "List of additional information field assignments",
                "items": {
                  "$ref": "#/components/schemas/AdditionalInformationFieldAssignment"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdditionalInformationFieldAssignment"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 24
      }
    },
    "/v1/customers/{customerId}/switch-studio": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Switch studio",
        "description": "Required Scopes: `CUSTOMER_WRITE`\n\nSwitches the studio of the given customer to the specified target studio. The API key of the customer's source studio must be used for this request.",
        "operationId": "switchStudio",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OpenApiV1CustomerStudioSwitchRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 25
      }
    },
    "/v1/customers/{customerId}/archive": {
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "Archive customer",
        "description": "Required Scopes: `CUSTOMER_PRIVACY_WRITE`\n\nArchives customer by customerId.",
        "operationId": "archiveCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 26
      }
    },
    "/v1/customers/{customerId}/anonymise": {
      "put": {
        "tags": [
          "Customers"
        ],
        "summary": "Anonymise archived customer",
        "description": "Required Scopes: `CUSTOMER_PRIVACY_WRITE`\n\nAnonymises archived customer by customerId.",
        "operationId": "anonymiseArchivedCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "Unique ID of the customer",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 27
      }
    },
    "/v1/studios/confirmActivation": {
      "post": {
        "tags": [
          "Studios"
        ],
        "summary": "Confirm contract activation",
        "description": "If your integration has webhook access, then you need to activate webhook events via this endpoint",
        "operationId": "confirmActivation",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Validation of the request failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. No api-key, wrong api-key or wrong header name.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Authorization failed. The caller has no privilege to the given resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Entity does not exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Concurrent modification detected. The entity was modified by another request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Access denied - rate limit is exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected system error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-redoclyOrder": 999
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "description": "Error data",
        "properties": {
          "errorMessage": {
            "type": "string",
            "description": "Resolved message in the context-specific default locale"
          },
          "errorCode": {
            "type": "string",
            "description": "Key for translation files"
          },
          "traceId": {
            "type": "string",
            "description": "Datadog trace id"
          },
          "args": {
            "type": "array",
            "deprecated": true,
            "description": "Arguments referenced by format specifiers while resolving the message from translation files",
            "items": {
              "type": "object",
              "deprecated": true
            }
          },
          "typedArgs": {
            "type": "array",
            "deprecated": true,
            "description": "Same as `args` but with type information",
            "items": {
              "$ref": "#/components/schemas/TypedArgumentDto"
            }
          },
          "reference": {
            "type": "string",
            "description": "Reference to validation error",
            "example": "parent.child"
          }
        },
        "required": [
          "errorMessage"
        ]
      },
      "TypedArgumentDto": {
        "type": "object",
        "properties": {
          "value": {
            "type": "object"
          },
          "type": {
            "type": "string",
            "enum": [
              "TIMESTAMP",
              "BOOLEAN",
              "DATE",
              "MONTH_DAY",
              "TIME",
              "TERM",
              "TERM_LIST",
              "INTEGER",
              "DECIMAL",
              "STRING",
              "MONEY",
              "LIMITABLE_CONFIG_PROPERTY",
              "I18N_KEY",
              "I18N_KEY_LIST",
              "PERMISSION_LIST",
              "ENUM",
              "AVAILABILITY_LIST"
            ]
          }
        }
      },
      "Tag": {
        "type": "object",
        "description": "Tag information used for categorization or grouping.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Unique name of a tag",
            "example": "tag123"
          }
        },
        "required": [
          "name"
        ]
      },
      "IdlePeriodUpdateRequest": {
        "type": "object",
        "description": "Represents an idle period update request",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the idle period"
          },
          "temporalUnit": {
            "type": "string",
            "description": "Represents the temporal unit of an idle period ",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents a monthly temporal unit of the idle period. Can be used for month pickers only. Supports only full months.",
              "WEEK": "Represents a weekly temporal unit of the idle period. Can be used for week pickers only. Supports only full weeks.",
              "DAY": "Represents a daily temporal unit of the idle period. Can be used for day pickers only."
            }
          },
          "termValue": {
            "type": "integer",
            "format": "int32",
            "description": "Duration term of the idle period. The field is related to the temporal unit",
            "example": 1
          },
          "unlimited": {
            "type": "boolean",
            "description": "If true, the idle period has no defined end date. In that case, termValue and temporalUnit are empty.",
            "example": true
          },
          "reasonId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of an idle period reason",
            "example": 1
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the idle period. This field is only utilized when shortening an existing idle period (i.e., the start date remains unchanged, but the new end date is earlier than the original).",
            "example": "2025-12-31"
          }
        },
        "required": [
          "reasonId",
          "startDate"
        ]
      },
      "IdlePeriod": {
        "type": "object",
        "description": "Represents an idle period",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the idle period or amendment, depending on the state",
            "example": 203
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the idle period"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the idle period"
          },
          "reason": {
            "type": "string",
            "deprecated": true,
            "description": "Reason of the idle period",
            "example": "Vacation"
          },
          "fee": {
            "$ref": "#/components/schemas/Money",
            "deprecated": true
          },
          "unlimited": {
            "type": "boolean",
            "description": "Indicates whether the idle period is unlimited",
            "example": false
          },
          "documentUrl": {
            "type": "string",
            "description": "Temporal download-url for the idle period document, restricted to 15 minutes"
          },
          "state": {
            "type": "string",
            "description": "State of the idle period",
            "enum": [
              "PENDING_VERIFICATION",
              "ACCEPTED"
            ],
            "example": "PENDING_VERIFICATION",
            "x-enumDescriptions": {
              "ACCEPTED": "The idle period is accepted",
              "PENDING_VERIFICATION": "The idle period verification is pending"
            }
          },
          "idlePeriodFeeCalculationConfig": {
            "$ref": "#/components/schemas/IdlePeriodFeeCalculationConfig",
            "description": "Configuration for idle period fee calculation"
          },
          "idlePeriodFee": {
            "$ref": "#/components/schemas/IdlePeriodFee",
            "description": "Fee details for the idle period"
          },
          "idlePeriodReason": {
            "$ref": "#/components/schemas/IdlePeriodReason",
            "description": "The idle period reason details"
          },
          "usedFreeTermsInDays": {
            "type": "integer",
            "format": "int32",
            "description": "Number of free term days used by this idle period",
            "example": 14
          }
        },
        "required": [
          "endDate",
          "fee",
          "id",
          "idlePeriodReason",
          "reason",
          "startDate",
          "state"
        ]
      },
      "IdlePeriodFee": {
        "type": "object",
        "description": "Represents the fee details for an idle period",
        "properties": {
          "idlePeriodFeeCalculationType": {
            "type": "string",
            "description": "The type of fee calculation used for the idle period",
            "enum": [
              "NONE",
              "ABSOLUTE",
              "RELATIVE",
              "TERM_BASED"
            ],
            "example": "ABSOLUTE",
            "x-enumDescriptions": {
              "ABSOLUTE": "Absolute fee amount",
              "RELATIVE": "Relative fee calculation based on percentage",
              "TERM_BASED": "Fee calculation based on term duration",
              "NONE": "No fee calculation"
            }
          },
          "idlePeriodTotalAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "The total amount for the idle period"
          },
          "idlePeriodFeeCalculationAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "The amount used for fee calculation"
          },
          "idlePeriodFeeCalculationTerm": {
            "$ref": "#/components/schemas/Term",
            "description": "The term used for fee calculation"
          },
          "idlePeriodFeeCalculationPercentage": {
            "type": "number",
            "description": "The percentage used for fee calculation",
            "example": 10
          }
        }
      },
      "IdlePeriodFeeCalculationConfig": {
        "type": "object",
        "description": "Configuration for idle period fee calculation",
        "properties": {
          "idlePeriodAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "The idle period amount"
          },
          "idlePeriodAmountPerTermUnit": {
            "$ref": "#/components/schemas/Money",
            "description": "The idle period amount per term unit"
          },
          "defaultTemporalUnit": {
            "type": "string",
            "description": "The default temporal unit for the idle period",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents a monthly temporal unit of the idle period. Can be used for month pickers only. Supports only full months.",
              "WEEK": "Represents a weekly temporal unit of the idle period. Can be used for week pickers only. Supports only full weeks.",
              "DAY": "Represents a daily temporal unit of the idle period. Can be used for day pickers only."
            }
          },
          "dynamicIdlePeriodAmountPercentage": {
            "type": "number",
            "description": "The dynamic idle period amount percentage",
            "example": 10
          },
          "recurringIdlePeriodCharges": {
            "type": "boolean",
            "description": "Indicates whether recurring idle period charges are enabled",
            "example": false
          }
        },
        "required": [
          "idlePeriodAmount"
        ]
      },
      "IdlePeriodReason": {
        "type": "object",
        "description": "Represents the reason of an idle period",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the idle period reason",
            "example": 203
          },
          "name": {
            "type": "string",
            "description": "Name of the idle period reason",
            "example": "Vacation"
          },
          "documentRequired": {
            "type": "boolean",
            "description": "Whether the idle period reason requires a document of proof"
          }
        },
        "required": [
          "documentRequired",
          "id",
          "name"
        ]
      },
      "Money": {
        "type": "object",
        "description": "Represents a financial data",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of the finance data tuple",
            "example": 20
          },
          "currency": {
            "type": "string",
            "format": "ISO 4217",
            "description": "Currency of the finance data tuple",
            "example": "EUR"
          }
        },
        "required": [
          "amount",
          "currency"
        ]
      },
      "Term": {
        "type": "object",
        "description": "Represents a term",
        "properties": {
          "value": {
            "type": "integer",
            "format": "int32",
            "description": "The value of the term",
            "example": 2
          },
          "unit": {
            "type": "string",
            "description": "Represents a temporal unit",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents month unit",
              "YEAR": "Represents year unit",
              "WEEK": "Represents a week unit",
              "DAY": "Represents a day unit"
            }
          }
        },
        "required": [
          "unit",
          "value"
        ]
      },
      "AccountPreviewItem": {
        "type": "object",
        "description": "Represents a contract charge preview item",
        "properties": {
          "paidPeriodFrom": {
            "type": "string",
            "format": "date",
            "description": "Start date of the paid period",
            "example": "2025-01-01"
          },
          "paidPeriodTo": {
            "type": "string",
            "format": "date",
            "description": "End date of the paid period",
            "example": "2025-01-31"
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Date to charge is/was to be paid",
            "example": "2025-01-14"
          },
          "description": {
            "type": "string",
            "description": "Description of the charge"
          },
          "amount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount of the charge"
          },
          "discountedAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted amount of the charge"
          },
          "chargeType": {
            "type": "string",
            "description": "Represents the classification of the charge",
            "enum": [
              "MEMBERSHIP_CHARGE",
              "BONUS_PERIOD_CHARGE",
              "CONTRACT_IDLE_PERIOD_CHARGE",
              "IDLE_PERIOD_CHARGE",
              "TRIAL_PERIOD_CHARGE",
              "FLAT_FEE",
              "MODULE_FEE",
              "CREDIT",
              "DEBT_CLAIM_REVERSAL",
              "DEBT_CLAIM_REDUCTION",
              "DAMAGE_COMPENSATION",
              "BALANCE_DEBIT",
              "BALANCE_CREDIT",
              "DEBIT_ADJUSTMENT",
              "CREDIT_ADJUSTMENT",
              "CHARGE_DISCOUNT",
              "SALES_DIRECT_DEBIT",
              "SALES_NON_DIRECT_DEBIT",
              "CONSUMPTION_CREDIT_RECHARGE",
              "STARTER_PACKAGE",
              "ADDITIONAL_CHARGE",
              "TRANSACTION_FEE",
              "NO_SHOW_FEE",
              "DUNNING_FEE",
              "ADDRESS_INQUIRY_FEE",
              "CHARGED_BACK_FEE",
              "CANCELATION_FEE",
              "CARD_REPLACEMENT_FEE",
              "REFUND_COMPENSATION",
              "BENEFIT_DEBT_CLAIM",
              "DEBT_CLAIM_ABANDONMENT",
              "DEBT_CLAIM_CONVERSION",
              "RETURNED_BOTTLE_DEPOSIT"
            ],
            "example": "MEMBERSHIP_CHARGE",
            "x-enumDescriptions": {
              "IDLE_PERIOD_CHARGE": "Charge for a freeze period",
              "CREDIT": "Credit from a freeze period",
              "STARTER_PACKAGE": "Initial package or starter kit charge",
              "FLAT_FEE": "One-time or recurring flat fee for additional services or products",
              "CHARGED_BACK_FEE": "Fee for chargeback processing",
              "DEBT_CLAIM_REDUCTION": "Reduction of an existing debt claim",
              "DAMAGE_COMPENSATION": "Compensation for damages or losses",
              "CANCELATION_FEE": "Fee for canceling a service or contract",
              "MODULE_FEE": "One-time or recurring module fee for additional services or products",
              "SALES_DIRECT_DEBIT": "Sale transaction via direct debit payment",
              "BONUS_PERIOD_CHARGE": "Bonus period charge to compensate regular charge during bonus period",
              "ADDRESS_INQUIRY_FEE": "Fee for address inquiry services",
              "SALES_NON_DIRECT_DEBIT": "Sale transaction via non-direct debit payment",
              "DUNNING_FEE": "Fee for dunning or collection activities",
              "TRANSACTION_FEE": "Fee for processing a transaction",
              "DEBT_CLAIM_ABANDONMENT": "Abandonment of a debt claim",
              "DEBIT_ADJUSTMENT": "Debit adjustment entry",
              "DEBT_CLAIM_CONVERSION": "Conversion of a debt claim to another type",
              "ADDITIONAL_CHARGE": "Manual created one-time charge",
              "BENEFIT_DEBT_CLAIM": "Debt claim related to services",
              "NO_SHOW_FEE": "Fee charged for missed appointments",
              "CONTRACT_IDLE_PERIOD_CHARGE": "Charge for a contract freeze period",
              "REFUND_COMPENSATION": "Compensation for a refund",
              "CHARGE_DISCOUNT": "Discount applied to a charge",
              "MEMBERSHIP_CHARGE": "Regular membership charge for a contract",
              "CARD_REPLACEMENT_FEE": "Fee for replacing a card",
              "CREDIT_ADJUSTMENT": "Credit adjustment entry",
              "TRIAL_PERIOD_CHARGE": "Charge for a trial or probationary membership period",
              "CONSUMPTION_CREDIT_RECHARGE": "Recharge of consumption credit balance",
              "DEBT_CLAIM_REVERSAL": "Reversal of a previously created debt claim",
              "BALANCE_DEBIT": "Imported debt claim balance",
              "BALANCE_CREDIT": "Imported credit balance",
              "RETURNED_BOTTLE_DEPOSIT": "Credit for returned bottle deposits"
            }
          }
        },
        "required": [
          "amount",
          "dueDate"
        ]
      },
      "IdlePeriodUpdatePreview": {
        "type": "object",
        "description": "Represents the preview for the idle period update",
        "properties": {
          "previewEndDate": {
            "type": "string",
            "format": "date",
            "description": "Represents the updated contract end date",
            "example": "2025-12-31"
          },
          "previewCharges": {
            "type": "array",
            "description": "The contract charges applicable following the idle period update",
            "items": {
              "$ref": "#/components/schemas/AccountPreviewItem"
            }
          },
          "validationStatus": {
            "type": "string",
            "description": "Status of the idle period validation",
            "enum": [
              "IDLEPERIOD_DEACTIVATED_FOR_CONTRACT",
              "IDLEPERIOD_PENDING_VERIFICATION",
              "IDLEPERIOD_DATE_NOT_FIRSTDAY_OF_TEMPORALUNIT",
              "IDLEPERIOD_DEADLINE_VIOLATED",
              "IDLEPERIOD_EXPECTED_STARTDATE_MISMATCH",
              "IDLEPERIOD_MAXIMUM_YEARS_VIOLATED",
              "IDLEPERIOD_OVERLAPPING",
              "IDLEPERIOD_TEMPORALUNIT_INVALID",
              "IDLEPERIOD_MAXIMUM_TERMS_VIOLATED",
              "IDLEPERIOD_CREATABLE",
              "IDLEPERIOD_TERMVALUE_MISSING",
              "IDLEPERIOD_UNLIMITED_PARAMETER_IS_MISSING",
              "IDLEPERIOD_ENDDATE_AND_TERM_PROVIDED",
              "IDLEPERIOD_ENDDATE_BEFORE_STARTDATE",
              "IDLEPERIOD_ENDDATE_ONLY_FOR_SHORTENING",
              "IDLEPERIOD_UPDATABLE"
            ],
            "example": "IDLEPERIOD_DEACTIVATED_FOR_CONTRACT",
            "x-enumDescriptions": {
              "IDLEPERIOD_DEACTIVATED_FOR_CONTRACT": "Idle periods are deactivated for the contract.",
              "IDLEPERIOD_ENDDATE_ONLY_FOR_SHORTENING": "The endDate field is restricted to shortening existing idle periods.",
              "IDLEPERIOD_MAXIMUM_YEARS_VIOLATED": "5 years is a hard limit for the length of the idle period.",
              "IDLEPERIOD_EXPECTED_STARTDATE_MISMATCH": "The idle period start date does not match the expected start date.",
              "IDLEPERIOD_DEADLINE_VIOLATED": "The start date violates the submission deadline.",
              "IDLEPERIOD_ENDDATE_AND_TERM_PROVIDED": "End date and term (temporal unit and term value) cannot be provided at the same time.",
              "IDLEPERIOD_CREATABLE": "The idle period can be created.",
              "IDLEPERIOD_TERMVALUE_MISSING": "The value for the term is missing.",
              "IDLEPERIOD_PENDING_VERIFICATION": "Idle periods cannot be created if a pending verification for an amendment exists.",
              "IDLEPERIOD_MAXIMUM_TERMS_VIOLATED": "The idle period violates the maximum terms value.",
              "IDLEPERIOD_UNLIMITED_PARAMETER_IS_MISSING": "The unlimited parameter is required for unlimited idle period updates.",
              "IDLEPERIOD_UPDATABLE": "The idle period can be updated.",
              "IDLEPERIOD_DATE_NOT_FIRSTDAY_OF_TEMPORALUNIT": "[DEPRECATED] This validation status is no longer used. The validation is now handled by IDLEPERIOD_DEADLINE_VIOLATED.",
              "IDLEPERIOD_TEMPORALUNIT_INVALID": "The temporal unit must match the temporal unit of the config.",
              "IDLEPERIOD_OVERLAPPING": "The idle period is overlapping existing idle periods.",
              "IDLEPERIOD_ENDDATE_BEFORE_STARTDATE": "The end date cannot be set before the start date."
            }
          },
          "accountBalanceBeforeUpdate": {
            "$ref": "#/components/schemas/Money",
            "description": "The customer's account balance before the idle period update"
          },
          "accountBalanceAfterUpdate": {
            "$ref": "#/components/schemas/Money",
            "description": "The customer's account balance after the idle period update"
          }
        },
        "required": [
          "validationStatus"
        ]
      },
      "DeviceActivationResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Device id",
            "example": 26
          },
          "accessToken": {
            "type": "string",
            "description": "Device token for further communication",
            "example": "53cda15a-5652-4f62-9b97-508f870ff40b"
          }
        }
      },
      "CustomerImage": {
        "type": "object",
        "description": "Customer's image",
        "properties": {
          "imageUrl": {
            "type": "string",
            "description": "Url with an image to download. It will expire after 15 minutes",
            "example": "https://example.com"
          }
        }
      },
      "AdditionalInformationFieldAssignment": {
        "type": "object",
        "description": "Representation of additional information field assignment",
        "properties": {
          "additionalInformationFieldId": {
            "type": "integer",
            "format": "int64",
            "description": "The unique ID of the additional information field",
            "example": 1234567890
          },
          "value": {
            "type": "string",
            "description": "The value of the additional information field assignment. For list fields this is the id of the selected item, for text fields this is the text value, for numeric fields must be positive or negative integers, for date fields this is the date in ISO-8601 format, and for boolean fields this is 'true' or 'false'."
          },
          "name": {
            "type": "string",
            "description": "The name of the additional information field",
            "example": "Membership Type"
          }
        },
        "required": [
          "additionalInformationFieldId",
          "value"
        ]
      },
      "AccessRestriction": {
        "type": "object",
        "description": "Access restriction of customer",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Reason for the restriction",
            "example": "Destroyed equipment"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the restriction",
            "example": "2024-01-01"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the restriction",
            "example": "2024-06-30"
          }
        },
        "required": [
          "reason"
        ]
      },
      "UpdateAccessIdentificationRequest": {
        "type": "object",
        "description": "Represents access medium of customer",
        "properties": {
          "value": {
            "type": "string",
            "description": "Unique identifier for the access medium"
          }
        }
      },
      "AccessMediumDto": {
        "type": "object",
        "description": "Represents access medium of customer",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the access medium",
            "example": 1234567890
          },
          "type": {
            "type": "string",
            "description": "Represents a type of access medium",
            "enum": [
              "CARD_NUMBER",
              "PIN",
              "BARCODE",
              "WALLET_PASS"
            ],
            "example": "CARD_NUMBER",
            "x-enumDescriptions": {
              "PIN": "Personal identification number",
              "BARCODE": "Barcode content",
              "WALLET_PASS": "Wallet pass identifier",
              "CARD_NUMBER": "Card number"
            }
          },
          "value": {
            "type": "string",
            "description": "Unique identifier for the access medium"
          }
        }
      },
      "CommunicationThreadRequest": {
        "type": "object",
        "description": "Communication thread request",
        "properties": {
          "communicationThreadStatus": {
            "type": "string",
            "description": "The status of a communication thread",
            "enum": [
              "CREATED",
              "ONGOING",
              "CLOSED"
            ],
            "example": "CREATED",
            "x-enumDescriptions": {
              "CREATED": "The thread is created",
              "CLOSED": "The thread is closed",
              "ONGOING": "The thread is in ongoing progress"
            }
          },
          "ticketNumber": {
            "type": "string",
            "description": "The ticket number of the third party ticketing system",
            "example": "A123456"
          },
          "subject": {
            "type": "string",
            "description": "The subject of the communication",
            "example": "Complaint"
          },
          "content": {
            "type": "string",
            "description": "The content of the communication",
            "example": "I received two invoices this month, but I only made one purchase."
          },
          "communicationDirection": {
            "type": "string",
            "description": "The direction of the communication",
            "enum": [
              "INCOMING",
              "OUTGOING"
            ],
            "example": "INCOMING",
            "x-enumDescriptions": {
              "INCOMING": "The communication is incoming from the customer",
              "OUTGOING": "The communication is outgoing to the customer"
            }
          },
          "ticketLink": {
            "type": "string",
            "description": "The link to the ticket in the third party ticketing system",
            "example": "https://ticketing-system.com/ticket/A123456"
          },
          "communicationChannel": {
            "type": "string",
            "description": "The channel of the communication",
            "enum": [
              "LETTER",
              "EMAIL",
              "TEXT_MESSAGE",
              "PHONE",
              "FAX",
              "CONVERSATION",
              "CHAT",
              "OTHER"
            ],
            "example": "LETTER",
            "x-enumDescriptions": {
              "OTHER": "Communication via other means",
              "LETTER": "Communication via letter",
              "TEXT_MESSAGE": "Communication via text message",
              "PHONE": "Communication via phone",
              "CHAT": "Communication via chat",
              "EMAIL": "Communication via email",
              "FAX": "Communication via fax",
              "CONVERSATION": "Communication via conversation"
            }
          },
          "agent": {
            "type": "string",
            "description": "The employee/agent handling the communication",
            "example": "Peter Meyer"
          },
          "communicationDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "When this field is not null it will be used as the date time of the communication instead of the current time",
            "example": "2022-06-22T08:00:00.000+02:00[Europe/Berlin]"
          }
        },
        "required": [
          "communicationChannel",
          "communicationDirection",
          "communicationThreadStatus",
          "content",
          "subject"
        ]
      },
      "CommunicationThreadResponse": {
        "type": "object",
        "description": "Communication thread response",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "The customer's ID",
            "example": 1
          },
          "communicationId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the communication",
            "example": 1
          },
          "threadId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the communication thread",
            "example": 1
          },
          "communicationThreadStatus": {
            "type": "string",
            "description": "The status of a communication thread",
            "enum": [
              "CREATED",
              "ONGOING",
              "CLOSED"
            ],
            "example": "CREATED",
            "x-enumDescriptions": {
              "CREATED": "The thread is created",
              "CLOSED": "The thread is closed",
              "ONGOING": "The thread is in ongoing progress"
            }
          },
          "ticketNumber": {
            "type": "string",
            "description": "The ticket number of the third party ticketing system",
            "example": "A123456"
          },
          "subject": {
            "type": "string",
            "description": "The subject of the communication",
            "example": "Complaint"
          },
          "content": {
            "type": "string",
            "description": "The content of the communication",
            "example": "I received two invoices this month, but I only made one purchase."
          },
          "communicationDirection": {
            "type": "string",
            "description": "The direction of the communication",
            "enum": [
              "INCOMING",
              "OUTGOING"
            ],
            "example": "INCOMING",
            "x-enumDescriptions": {
              "INCOMING": "The communication is incoming from the customer",
              "OUTGOING": "The communication is outgoing to the customer"
            }
          },
          "ticketLink": {
            "type": "string",
            "description": "The link to the ticket in the third party ticketing system",
            "example": "https://ticketing-system.com/ticket/A123456"
          },
          "communicationChannel": {
            "type": "string",
            "description": "The channel of the communication",
            "enum": [
              "LETTER",
              "EMAIL",
              "TEXT_MESSAGE",
              "PHONE",
              "FAX",
              "CONVERSATION",
              "CHAT",
              "OTHER"
            ],
            "example": "LETTER",
            "x-enumDescriptions": {
              "OTHER": "Communication via other means",
              "LETTER": "Communication via letter",
              "TEXT_MESSAGE": "Communication via text message",
              "PHONE": "Communication via phone",
              "CHAT": "Communication via chat",
              "EMAIL": "Communication via email",
              "FAX": "Communication via fax",
              "CONVERSATION": "Communication via conversation"
            }
          },
          "agent": {
            "type": "string",
            "description": "The employee/agent handling the communication",
            "example": "Peter Meyer"
          }
        },
        "required": [
          "communicationChannel",
          "communicationDirection",
          "communicationId",
          "communicationThreadStatus",
          "content",
          "customerId",
          "subject",
          "threadId"
        ]
      },
      "CommunicationChannelWrapper": {
        "type": "object",
        "description": "Communication channel wrapper",
        "properties": {
          "communicationChannel": {
            "type": "string",
            "description": "The communication channel",
            "enum": [
              "LETTER",
              "EMAIL",
              "TEXT_MESSAGE",
              "PHONE",
              "FAX",
              "CONVERSATION",
              "CHAT",
              "OTHER"
            ],
            "example": "EMAIL",
            "x-enumDescriptions": {
              "OTHER": "Communication via other means",
              "LETTER": "Communication via letter",
              "TEXT_MESSAGE": "Communication via text message",
              "PHONE": "Communication via phone",
              "CHAT": "Communication via chat",
              "EMAIL": "Communication via email",
              "FAX": "Communication via fax",
              "CONVERSATION": "Communication via conversation"
            }
          },
          "customerOverridable": {
            "type": "boolean",
            "description": "Indicates if the customer can override the communication channel",
            "example": true
          },
          "active": {
            "type": "boolean",
            "description": "Indicates if the communication channel is active",
            "example": true
          }
        },
        "required": [
          "communicationChannel"
        ]
      },
      "CommunicationPreference": {
        "type": "object",
        "description": "The communication preference of a customer per message category",
        "properties": {
          "messageCategory": {
            "type": "string",
            "description": "The message category of the communication preference",
            "enum": [
              "CONTRACT",
              "GENERAL",
              "APPOINTMENT",
              "NEWSLETTER",
              "LOYALTY_PROGRAM"
            ],
            "example": "CONTRACT",
            "x-enumDescriptions": {
              "APPOINTMENT": "The message category is appointment related",
              "NEWSLETTER": "The message category is newsletter related",
              "CONTRACT": "The message category is contract related",
              "LOYALTY_PROGRAM": "The message category is loyalty program related",
              "GENERAL": "The message category is general"
            }
          },
          "channels": {
            "type": "array",
            "description": "The communication channels related to the message category of the communication preference",
            "items": {
              "$ref": "#/components/schemas/CommunicationChannelWrapper"
            }
          }
        }
      },
      "Language": {
        "type": "object",
        "description": "Basic language information",
        "properties": {
          "languageCode": {
            "type": "string",
            "format": "ISO 639-1",
            "description": "The language code",
            "example": "de"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "The country code",
            "example": "DE"
          }
        },
        "required": [
          "languageCode"
        ]
      },
      "LeadCustomerAddressData": {
        "type": "object",
        "description": "Lead customer address information",
        "properties": {
          "street": {
            "type": "string",
            "description": "Street of the lead customer",
            "example": "Burgring"
          },
          "houseNumber": {
            "type": "string",
            "description": "House number of the lead customer",
            "example": "23A"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the lead customer",
            "example": "13000"
          },
          "city": {
            "type": "string",
            "description": "City name of the lead customer",
            "example": "Berlin"
          }
        },
        "required": [
          "city",
          "street",
          "zipCode"
        ]
      },
      "LeadData": {
        "type": "object",
        "description": "Full Lead customer data with address",
        "properties": {
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party customer in the third party system",
            "example": "A1000"
          },
          "firstname": {
            "type": "string",
            "description": "First name of the lead customer",
            "example": "Max"
          },
          "secondFirstname": {
            "type": "string",
            "description": "Second first name of the lead customer",
            "example": "Peter"
          },
          "lastname": {
            "type": "string",
            "description": "Last name of the lead customer",
            "example": "Mustermann"
          },
          "secondLastname": {
            "type": "string",
            "description": "Second last name of the lead customer",
            "example": "Meier"
          },
          "email": {
            "type": "string",
            "description": "Email of the lead customer",
            "example": "example@email.com"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Date of birth of the lead customer",
            "example": "2000-10-10"
          },
          "telephone": {
            "type": "string",
            "description": "Telephone number of the lead customer",
            "example": "5006001112"
          },
          "language": {
            "$ref": "#/components/schemas/Language",
            "description": "Language of the lead customer"
          },
          "address": {
            "$ref": "#/components/schemas/LeadCustomerAddressData"
          }
        },
        "required": [
          "email",
          "firstname",
          "lastname"
        ]
      },
      "TrialOfferLeadCustomerCreationRequest": {
        "type": "object",
        "description": "Trial offer lead customer creation request",
        "properties": {
          "leadCustomerData": {
            "$ref": "#/components/schemas/LeadData"
          },
          "trialOfferConfigId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the trial offer config",
            "example": 1
          }
        },
        "required": [
          "leadCustomerData",
          "trialOfferConfigId"
        ]
      },
      "TrialOfferLeadCustomerCreationValidationResult": {
        "type": "object",
        "description": "Trial offer lead customer creation validation result",
        "properties": {
          "validationStatus": {
            "type": "string",
            "description": "Status of the lead customer creation validation",
            "enum": [
              "POSSIBLE",
              "INVALID_LEAD_CUSTOMER_DATA",
              "DUPLICATE_CUSTOMER"
            ],
            "example": "POSSIBLE",
            "x-enumDescriptions": {
              "POSSIBLE": "Lead customer creation is possible",
              "INVALID_LEAD_CUSTOMER_DATA": "The provided lead customer data is invalid",
              "DUPLICATE_CUSTOMER": "A customer with provided data already exists"
            }
          }
        },
        "required": [
          "validationStatus"
        ]
      },
      "TrialOfferLeadCustomerCreationResult": {
        "type": "object",
        "description": "Result of trial offer lead customer creation",
        "properties": {
          "leadCustomerId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the created lead customer",
            "example": 1001
          }
        }
      },
      "ClassSlotBookingRequest": {
        "type": "object",
        "description": "Represents class slot booking request",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 203
          },
          "classSlotId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the class slot",
            "example": 20334
          }
        },
        "required": [
          "classSlotId",
          "customerId"
        ]
      },
      "ClassSlotBookingValidationResult": {
        "type": "object",
        "description": "Class slot booking validation result",
        "properties": {
          "validationStatus": {
            "type": "string",
            "description": "Status of the booking validation",
            "enum": [
              "AVAILABLE",
              "NO_CONTINGENT",
              "BOOKING_LIMIT_REACHED",
              "CUSTOMER_ALREADY_BOOKED",
              "CUSTOMER_IDLE",
              "CUSTOMER_IN_OTHER_BOOKING",
              "DISPLAY_ONLY",
              "DATE_TIME_BEFORE_EARLIEST_BOOKING_DATE_TIME",
              "DATE_TIME_AFTER_LATEST_BOOKING_DATE_TIME",
              "STUDIO_CLOSED",
              "NO_SHOW_PENALTY_ACTIVE",
              "NOT_AVAILABLE"
            ],
            "example": "AVAILABLE",
            "x-enumDescriptions": {
              "AVAILABLE": "Booking is possible",
              "NO_CONTINGENT": "Customer doesn't have required contingent",
              "BOOKING_LIMIT_REACHED": "Waiting List/Max participant list exceeded",
              "CUSTOMER_ALREADY_BOOKED": "Customer already added to class slot",
              "CUSTOMER_IDLE": "Customer has an idle period during the time of the class slot",
              "STUDIO_CLOSED": "Studio is closed during period",
              "CUSTOMER_IN_OTHER_BOOKING": "Customer has other bookings in this period",
              "DATE_TIME_BEFORE_EARLIEST_BOOKING_DATE_TIME": "Date and time are before earliest possible booking date",
              "NOT_AVAILABLE": "Booking is not possible for other reasons",
              "DISPLAY_ONLY": "Class is display only",
              "DATE_TIME_AFTER_LATEST_BOOKING_DATE_TIME": "Date and time are after latest possible booking date",
              "NO_SHOW_PENALTY_ACTIVE": "Customer has an active no-show penalty that blocks booking"
            }
          }
        },
        "required": [
          "validationStatus"
        ]
      },
      "ClassSlotBookingResult": {
        "type": "object",
        "description": "Represents successful booking result",
        "properties": {
          "bookingId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of a class booking",
            "example": 2033
          },
          "bookingStatus": {
            "type": "string",
            "description": "Status of the class slot booking",
            "enum": [
              "BOOKED",
              "BOOKED_WITH_CONFIRMATION_REQUIRED",
              "WAITING_LIST",
              "CANCELED"
            ],
            "example": "BOOKED",
            "x-enumDescriptions": {
              "BOOKED": "Customer is successfully booked",
              "CANCELED": "Customer booking is canceled",
              "BOOKED_WITH_CONFIRMATION_REQUIRED": "Customer is booked, but booking confirmation is required",
              "WAITING_LIST": "Customer is assigned to waiting list"
            }
          },
          "classSlotId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of a class slot",
            "example": 14928
          },
          "classId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of a class",
            "example": 14928
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of a customer",
            "example": 14925548
          },
          "classSlotStatus": {
            "type": "string",
            "description": "The status of a class slot",
            "enum": [
              "PLANNED",
              "CANCELED",
              "COMPLETED"
            ],
            "example": "COMPLETED",
            "x-enumDescriptions": {
              "COMPLETED": "The class slot is completed.",
              "CANCELED": "The class slot is canceled.",
              "PLANNED": "The class slot is planned."
            }
          },
          "participantStatus": {
            "type": "string",
            "description": "The status of a participant",
            "enum": [
              "PARTICIPATING",
              "NOT_PARTICIPATING",
              "UNSET"
            ],
            "example": "PARTICIPATING",
            "x-enumDescriptions": {
              "PARTICIPATING": "The customer is participating.",
              "UNSET": "The participation status is not set.",
              "NOT_PARTICIPATING": "The customer is not participating."
            }
          }
        },
        "required": [
          "bookingId",
          "bookingStatus",
          "classId",
          "classSlotId",
          "classSlotStatus",
          "customerId",
          "participantStatus"
        ]
      },
      "BookingConfirmationResult": {
        "type": "object",
        "description": "The result of the booking confirmation process",
        "properties": {
          "status": {
            "type": "string",
            "description": "Status of the booking confirmation",
            "enum": [
              "CONFIRMED",
              "EXPIRED"
            ],
            "example": "CONFIRMED",
            "x-enumDescriptions": {
              "CONFIRMED": "The booking is confirmed.",
              "EXPIRED": "The time to confirm the booking has expired."
            }
          }
        },
        "required": [
          "status"
        ]
      },
      "AppointmentBookingRequest": {
        "type": "object",
        "description": "Represents appointment booking request",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 203
          },
          "bookableAppointmentId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the bookable appointment",
            "example": 20334
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Start date time of the bookable appointment slot",
            "example": "2022-06-22T08:00:00.000+02:00[Europe/Berlin]"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "End date time of the bookable appointment slot",
            "example": "2022-06-22T10:00:00.000+02:00[Europe/Berlin]"
          },
          "instructorIds": {
            "type": "array",
            "description": "Instructor ID list of the bookable appointment slot",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "required": [
          "bookableAppointmentId",
          "customerId",
          "endDateTime",
          "startDateTime"
        ]
      },
      "AppointmentBookingValidationResult": {
        "type": "object",
        "description": "Appointment booking validation result",
        "properties": {
          "validationStatus": {
            "type": "string",
            "description": "Status of the booking validation",
            "enum": [
              "PAST_START_DATE_TIME",
              "END_DATE_TIME_NOT_AFTER_START_DATE_TIME",
              "PERIOD_DOES_NOT_MATCH",
              "CUSTOMER_IN_OTHER_BOOKING",
              "CUSTOMER_IDLE",
              "NO_CONTINGENT",
              "BOOKABLE_APPOINTMENT_RESTRICTIONS_NOT_FULFILLED",
              "BOOKING_LIMIT_REACHED",
              "DATE_TIME_BEFORE_EARLIEST_BOOKING_DATE_TIME",
              "DATE_TIME_AFTER_LATEST_BOOKING_DATE_TIME",
              "STUDIO_CLOSED",
              "RESOURCE_NOT_AVAILABLE",
              "NOT_AVAILABLE",
              "AVAILABLE"
            ],
            "example": "RESOURCE_NOT_AVAILABLE",
            "x-enumDescriptions": {
              "NO_CONTINGENT": "Customer doesn't have required contingent",
              "CUSTOMER_IDLE": "Customer has an idle period during the time of the bookable appointment slot",
              "BOOKABLE_APPOINTMENT_RESTRICTIONS_NOT_FULFILLED": "The restriction(s) of the bookable appointment is/are not fulfilled",
              "STUDIO_CLOSED": "Studio is closed during period",
              "AVAILABLE": "Booking is possible",
              "PAST_START_DATE_TIME": "The start date and time is in the past",
              "BOOKING_LIMIT_REACHED": "Booking limit reached",
              "CUSTOMER_IN_OTHER_BOOKING": "Customer has other bookings in this period",
              "DATE_TIME_BEFORE_EARLIEST_BOOKING_DATE_TIME": "Date and time are before earliest possible booking date",
              "PERIOD_DOES_NOT_MATCH": "The period from start date and time to end date and time does not match the main time of the bookable appointment",
              "RESOURCE_NOT_AVAILABLE": "(A) resource(s) is/are not available",
              "END_DATE_TIME_NOT_AFTER_START_DATE_TIME": "The end date and time is not after the start date and time",
              "NOT_AVAILABLE": "Booking is not possible for other reasons",
              "DATE_TIME_AFTER_LATEST_BOOKING_DATE_TIME": "Date and time are after latest possible booking date"
            }
          }
        },
        "required": [
          "validationStatus"
        ]
      },
      "AppointmentBookingResult": {
        "type": "object",
        "description": "Represents successful booking result",
        "properties": {
          "bookingId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the appointment booking",
            "example": 2033
          },
          "bookingStatus": {
            "type": "string",
            "description": "Status of the appointment booking",
            "enum": [
              "BOOKED",
              "BOOKED_WITH_CONFIRMATION_REQUIRED",
              "CANCELED"
            ],
            "example": "BOOKED",
            "x-enumDescriptions": {
              "BOOKED": "Customer is successfully booked",
              "CANCELED": "Customer booking is canceled",
              "BOOKED_WITH_CONFIRMATION_REQUIRED": "Customer booking is successful, but confirmation is required"
            }
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Start date and time of the appointment booking"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "End date and time of the appointment booking"
          },
          "title": {
            "type": "string",
            "description": "Title of the appointment booking",
            "example": "Mission Beach body"
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration of the appointment booking in minutes",
            "example": 45
          },
          "category": {
            "type": "string",
            "description": "Category of the appointment booking",
            "example": "Fitness"
          },
          "description": {
            "type": "string",
            "description": "Description of the appointment booking",
            "example": "Get your body ready for beaches"
          },
          "imgUrl": {
            "type": "string",
            "description": "Image URL assigned to display this appointment booking"
          },
          "instructors": {
            "type": "array",
            "description": "Instructors list of the appointment booking",
            "items": {
              "$ref": "#/components/schemas/Instructor"
            }
          },
          "appointmentStatus": {
            "type": "string",
            "description": "The status of an appointment",
            "enum": [
              "PLANNED",
              "CANCELED",
              "COMPLETED"
            ],
            "example": "COMPLETED",
            "x-enumDescriptions": {
              "COMPLETED": "The appointment is completed.",
              "CANCELED": "The appointment is canceled.",
              "PLANNED": "The appointment is planned."
            }
          },
          "participantStatus": {
            "type": "string",
            "description": "The status of a participant",
            "enum": [
              "PARTICIPATING",
              "NOT_PARTICIPATING",
              "UNSET"
            ],
            "example": "PARTICIPATING",
            "x-enumDescriptions": {
              "PARTICIPATING": "The customer is participating.",
              "UNSET": "The participation status is not set.",
              "NOT_PARTICIPATING": "The customer is not participating."
            }
          }
        },
        "required": [
          "appointmentStatus",
          "bookingId",
          "bookingStatus",
          "endDateTime",
          "participantStatus",
          "startDateTime"
        ]
      },
      "Instructor": {
        "type": "object",
        "description": "Basic instructor information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the instructor",
            "example": 101
          },
          "firstName": {
            "type": "string",
            "description": "Instructor's first name",
            "example": "Anna"
          },
          "lastName": {
            "type": "string",
            "description": "Instructor's last name",
            "example": "Chodakowska"
          },
          "publicName": {
            "type": "string",
            "description": "Public name that should be shown to customers",
            "example": "Peter2000"
          }
        },
        "required": [
          "firstName",
          "id",
          "lastName"
        ]
      },
      "TaxAdvisorCreateExport": {
        "type": "object",
        "description": "Export creation details",
        "properties": {
          "fromDate": {
            "type": "string",
            "format": "date",
            "description": "Bookings accounting date range start. Must be in past and equal or before the toDate. The maximum time range is 90 days. ",
            "example": "2020-12-15"
          },
          "toDate": {
            "type": "string",
            "format": "date",
            "description": "Bookings accounting date range end. Must be in past and equal or after the fromDate. The maximum time range is 90 days.",
            "example": "2020-12-30"
          },
          "exportFormat": {
            "type": "string",
            "description": "The export format of bookings",
            "enum": [
              "SINGLE",
              "AGGREGATED"
            ],
            "example": "AGGREGATED",
            "x-enumDescriptions": {
              "SINGLE": "Contains all bookings as a single unit",
              "AGGREGATED": "Bookings are aggregated by account numbers"
            }
          },
          "exportFileFormat": {
            "type": "string",
            "description": "The file format of the export",
            "enum": [
              "JSON",
              "CSV",
              "XLSX"
            ],
            "example": "JSON",
            "x-enumDescriptions": {
              "XLSX": "Microsoft Excel",
              "CSV": "Comma Separated Values",
              "JSON": "JavaScript Object Notation"
            }
          },
          "exportLocale": {
            "type": "string",
            "description": "The locale of the export.",
            "enum": [
              "ENGLISH",
              "GERMAN"
            ],
            "example": "ENGLISH",
            "x-enumDescriptions": {
              "ENGLISH": "English",
              "GERMAN": "German"
            }
          }
        },
        "required": [
          "exportFileFormat",
          "exportFormat",
          "fromDate",
          "toDate"
        ]
      },
      "TaxAdvisorExportResult": {
        "type": "object",
        "description": "Tax advisor export creation response",
        "properties": {
          "exportId": {
            "type": "integer",
            "format": "int64",
            "description": "Id of created export"
          }
        }
      },
      "PaymentsUserSessionRequest": {
        "type": "object",
        "description": "Request to initiate a user session for payments.",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Specifies the payment amount for the initiated transaction. Should equal 0 to capture a payment instrument for future recurring payments. The currency is defined by the studio.",
            "example": 19.99
          },
          "scope": {
            "type": "string",
            "description": "Specifies where the created payment instruments will be used, as the available payment methods differ by scope.",
            "enum": [
              "MEMBER_ACCOUNT",
              "ECOM"
            ],
            "example": "MEMBER_ACCOUNT",
            "x-enumDescriptions": {
              "MEMBER_ACCOUNT": "Use when initiating a payment user session to collect a payment\n instrument intended for future payment runs (e.g., BACS, credit card).\n",
              "ECOM": "Use when the user is making a purchase or when the payment instrument\n will be used for future user-initiated payments (e.g., saving a credit card for later purchases).\n"
            }
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "This field represents the unique identifier for an existing customer within ERP. Providing this ID ensures the payment session is linked to the correct customer record. It is a mutually exclusive field with `finionPayCustomerId`, meaning you can only provide one or the other.\n\n- **Conditions for use**: This ID is required for payment sessions involving existing customers.\n\n- **Behavior when omitted**: If this field is left empty, a new customer will be treated as a “potential customer” and a `finionPayCustomerId` will be automatically generated and returned in the response. If omitted, it will not be possible to use it for existing customers.\n\n- **Mutually exclusive with**: `finionPayCustomerId`\n",
            "example": 1234567890
          },
          "finionPayCustomerId": {
            "type": "string",
            "format": "uuid",
            "description": "This field is the identifier for a customer within the Finion Pay payment service, typically used for customers who are not yet registered in ERP. Use this ID to track repeat payment sessions for a potential customer.\n\n- **Conditions for use**: This ID should only be provided for subsequent payment sessions for a customer who has been previously identified by Finion Pay but doesn’t have an ERP `customerId` yet.\n\n- **Behavior when omitted**: In the absence of a `customerId`, a new `finionPayCustomerId` will be automatically created and assigned to the user for the current session.\n\n- **Mutually exclusive with**: `customerId`\n",
            "example": "753ea8ec-c2ec-4761-824b-bc46eda3f644"
          },
          "permittedPaymentChoices": {
            "type": "array",
            "description": "List of permitted payment choices, i.e. obtained by the contract offer. Acts as a filter for the available payment methods defined by the scope",
            "items": {
              "type": "string",
              "description": "The payment choice",
              "enum": [
                "CASH",
                "BANK_TRANSFER",
                "BACS",
                "SEPA",
                "CH_DD",
                "LSV",
                "CREDIT_CARD",
                "TWINT",
                "PAYPAL",
                "BANCONTACT",
                "IDEAL"
              ],
              "example": "CASH",
              "x-enumDescriptions": {
                "BACS": "Payment by BACS direct debit",
                "IDEAL": "Payment by ideal",
                "PAYPAL": "Payment by paypal",
                "TWINT": "Payment by Twint",
                "SEPA": "Payment by SEPA direct debit",
                "BANK_TRANSFER": "Payment by bank transfer",
                "CH_DD": "Payment by CH_DD direct debit",
                "CASH": "Payment by cash",
                "BANCONTACT": "Payment by bancontact",
                "CREDIT_CARD": "Payment by credit card",
                "LSV": "Payment by LSV direct debit"
              }
            },
            "uniqueItems": true
          },
          "referenceText": {
            "type": "string",
            "description": "Allows the definition of the reference text shown on the bank statement of the customer.",
            "example": "Gym Joining Fee 01.07.2025"
          },
          "requireDirectDebitSignature": {
            "type": "boolean",
            "description": "When set to true the direct debit form will show a signature field to the user that is required to proceed. This applies to the payment methods SEPA, CH_DD and LSV.",
            "example": false
          },
          "showExistingPaymentInstruments": {
            "type": "boolean",
            "description": "When set to true the UPC component will also fetch the user's existing payment instruments. Default is true",
            "example": true
          }
        },
        "required": [
          "amount",
          "referenceText",
          "scope"
        ]
      },
      "PaymentsUserSessionResponse": {
        "type": "object",
        "description": "Response containing the user session token and its validity period for payments.",
        "properties": {
          "token": {
            "type": "string",
            "description": "The token for the user session.",
            "example": "CllClFmVlSCs3oe0ND0JloLWlNzdb3QseU4507gf1mSVAHqRTwzKWU"
          },
          "tokenValidUntil": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time until the token is valid.",
            "example": "2025-01-07T16:25:09.416924Z"
          },
          "finionPayCustomerId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifies a customer in Finion Pay, i.e. to retrieve existing payment instruments.",
            "example": "753ea8ec-c2ec-4761-824b-bc46eda3f644"
          },
          "finionPayRegion": {
            "type": "string",
            "description": "FinionPay region of the tenant.",
            "example": "eu-central-1"
          }
        },
        "required": [
          "finionPayCustomerId",
          "finionPayRegion",
          "token",
          "tokenValidUntil"
        ]
      },
      "OnlineOfferPurchaseRequest": {
        "type": "object",
        "description": "Request for purchasing an online offer",
        "properties": {
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the online offer to be purchased",
            "example": 12345
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the customer making the purchase",
            "example": 67890
          },
          "validFrom": {
            "type": "string",
            "format": "date",
            "description": "The date from which the purchased online offer becomes valid",
            "example": "2024-07-01"
          },
          "voucherCode": {
            "type": "string",
            "description": "Voucher code to apply for the purchase",
            "example": "SUMMER2024"
          },
          "paymentRequestToken": {
            "type": "string",
            "description": "Payment request token to authenticate the payment request",
            "example": "abc123token"
          }
        },
        "required": [
          "customerId",
          "onlineOfferId",
          "validFrom"
        ]
      },
      "OnlineOfferPurchaseResponse": {
        "type": "object",
        "description": "Response of an online offer purchase",
        "properties": {
          "onlineOfferPurchaseId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique id of the online offer purchase",
            "example": 123456
          },
          "studioAccessCode": {
            "type": "string",
            "description": "Code to checkin to a studio",
            "example": "PTKXPMUO"
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "Price of the online offer before discounts"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted price of the online offer after applying the voucher"
          },
          "discountValue": {
            "$ref": "#/components/schemas/Money",
            "description": "Discount value of the voucher"
          },
          "voucherSuccessMessage": {
            "type": "string",
            "description": "Success message if the voucher was applied successfully",
            "example": "Voucher applied successfully"
          },
          "voucherErrorCode": {
            "type": "string",
            "description": "Represents a voucher error code",
            "enum": [
              "INVALID_CODE",
              "ALREADY_REDEEMED"
            ],
            "example": "INVALID_CODE",
            "x-enumDescriptions": {
              "INVALID_CODE": "Represents an invalid voucher code",
              "ALREADY_REDEEMED": "Represents that the voucher has already been redeemed"
            }
          }
        }
      },
      "OnlineOfferPurchasePreviewRequest": {
        "type": "object",
        "description": "Request for previewing an online offer purchase",
        "properties": {
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the online offer to be purchased",
            "example": 12345
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the customer making the purchase",
            "example": 67890
          },
          "voucherCode": {
            "type": "string",
            "description": "Voucher code to be applied for the purchase",
            "example": "SUMMER21"
          }
        },
        "required": [
          "onlineOfferId"
        ]
      },
      "OnlineOfferPurchasePreviewResponse": {
        "type": "object",
        "description": "Preview of an online offer purchase",
        "properties": {
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "Price of the online offer before discounts"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted price of the online offer after applying the voucher"
          },
          "discountValue": {
            "$ref": "#/components/schemas/Money",
            "description": " Discount value of the voucher"
          },
          "voucherSuccessMessage": {
            "type": "string",
            "description": "Success message if the voucher was applied successfully",
            "example": "Voucher applied successfully"
          },
          "voucherErrorCode": {
            "type": "string",
            "description": "Represents a voucher error code",
            "enum": [
              "INVALID_CODE",
              "ALREADY_REDEEMED"
            ],
            "example": "INVALID_CODE",
            "x-enumDescriptions": {
              "INVALID_CODE": "Represents an invalid voucher code",
              "ALREADY_REDEEMED": "Represents that the voucher has already been redeemed"
            }
          }
        }
      },
      "VoidResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "string"
          }
        }
      },
      "MembershipSelfServiceMainContractCancelation": {
        "type": "object",
        "description": "Request to cancel customers main contract",
        "properties": {
          "cancelationDate": {
            "type": "string",
            "format": "date",
            "description": "Date the contract should be canceled to",
            "example": "2023-01-25"
          },
          "cancelationReasonId": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the reason why the contract is canceled",
            "example": 1234
          },
          "contractId": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the contract",
            "example": 1000
          }
        },
        "required": [
          "cancelationDate",
          "cancelationReasonId",
          "contractId"
        ]
      },
      "MembershipSwitch": {
        "type": "object",
        "description": "The contract information used for the membership switch",
        "properties": {
          "configId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the membership switch configuration",
            "example": 1234567890
          },
          "membershipOfferTermId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the membership switch offer term",
            "example": 1234567890
          },
          "sourceContractId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the contract which is being switched from",
            "example": 1234567890
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of the contract",
            "example": "2025-08-24"
          },
          "notes": {
            "type": "string",
            "description": "The notes related to the membership switch",
            "example": "Some notes"
          },
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party contract in the third party system",
            "example": "1000a"
          },
          "selectedSelectableModuleIds": {
            "type": "array",
            "description": "The selected modules from the available selectable modules",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "selectedOptionalModuleIds": {
            "type": "array",
            "description": "The selected modules from the available optional modules",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "initialPaymentRequestToken": {
            "type": "string",
            "description": "This token identifies a pre-authorized payment request. It acts as a reference to the payment session initiated by the user. It's not needed for preview endpoints.",
            "example": "3JtyH5sakfn2V22vB0napNC2zWMlpFwS9gPQawuk7Jw1F00atOD0BA"
          }
        },
        "required": [
          "configId",
          "membershipOfferTermId",
          "sourceContractId",
          "startDate"
        ]
      },
      "AttachedDocument": {
        "type": "object",
        "description": "Represents document information.",
        "properties": {
          "fileName": {
            "type": "string",
            "description": "Name of the file to download",
            "example": "contract.pdf"
          },
          "url": {
            "type": "string",
            "description": "Temporary valid download link. Expires after 5 hours.",
            "example": "https://some-url.com"
          }
        },
        "required": [
          "fileName",
          "url"
        ]
      },
      "ContractVolume": {
        "type": "object",
        "description": "Contains the total amount to be paid during the initial runtime of the contract and the average amounts per month\n and per the rate's payment frequency (e.g. 1 week)\n",
        "properties": {
          "totalContractVolume": {
            "$ref": "#/components/schemas/Money",
            "description": "Total contract volume",
            "example": 600
          },
          "averagePaymentVolumePerMonth": {
            "$ref": "#/components/schemas/Money",
            "description": "Average payment volume per month",
            "example": 50
          },
          "averagePaymentVolumePerPaymentFrequencyTerm": {
            "$ref": "#/components/schemas/Money",
            "description": "Average payment volume per payment frequency term",
            "example": 50
          }
        }
      },
      "ExternalUrl": {
        "type": "object",
        "description": "Represents url information.",
        "properties": {
          "title": {
            "type": "string",
            "description": "Url title",
            "example": "Example Resource"
          },
          "url": {
            "type": "string",
            "description": "Url to access the resource",
            "example": "https://some-url.com"
          }
        },
        "required": [
          "title",
          "url"
        ]
      },
      "MembershipOfferTextBlock": {
        "type": "object",
        "description": "Contract text block information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique identifier of the text block",
            "example": 1234567890
          },
          "title": {
            "type": "string",
            "description": "The title of the text block",
            "example": "Title of 1. text block"
          },
          "text": {
            "type": "string",
            "description": "The text of the text block",
            "example": "Text of 1. text block"
          },
          "order": {
            "type": "integer",
            "format": "int32",
            "description": "The order of the text block in the contract",
            "example": 1
          },
          "hasSignature": {
            "type": "boolean",
            "description": "Text block configuration has a signature field. You have the option to show a signature input field and it will be added in the contract document. It is not a required field in magicline. It is up to your implementation if you add this field."
          },
          "showCommunicationPrivacyOptions": {
            "type": "boolean",
            "description": "Text block contains information about the communication privacy options. You are advised to show a matrix with communication settings in combination with this text block. "
          },
          "attachmentType": {
            "type": "string",
            "description": "Indicates the type of attachment for this block",
            "enum": [
              "NONE",
              "FILE",
              "URL",
              "CONTRACT_PDF_PREVIEW"
            ],
            "example": "CONTRACT_PDF_PREVIEW",
            "x-enumDescriptions": {
              "CONTRACT_PDF_PREVIEW": "Contract PDF preview",
              "NONE": "No text block",
              "FILE": "File information available in `attachedDocument`",
              "URL": "Url information available in `attachedExternalUrlDto`"
            }
          },
          "attachedExternalUrlDto": {
            "$ref": "#/components/schemas/ExternalUrl"
          },
          "attachedDocument": {
            "$ref": "#/components/schemas/AttachedDocument"
          },
          "rateBundleModuleId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the associated rate bundle module. Only set if this is a module consent text block.",
            "example": 1234567890
          },
          "confirmationRequired": {
            "type": "boolean"
          }
        }
      },
      "MembershipSwitchPreview": {
        "type": "object",
        "description": "Preview of the impact of a membership switch",
        "properties": {
          "contractVolumeInformation": {
            "$ref": "#/components/schemas/ContractVolume"
          },
          "ageAdjustedPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "The price adjusted for the age of the member, if applicable"
          },
          "moduleConsentTextBlocks": {
            "type": "array",
            "description": "List of contract text blocks that are part of this membership switch.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTextBlock"
            }
          },
          "paymentPreview": {
            "$ref": "#/components/schemas/SignupPaymentPreview",
            "description": "Detailed payment preview including schedule and due-on-signing amount"
          },
          "accountBalanceBeforeUpdate": {
            "$ref": "#/components/schemas/Money",
            "description": "The customer's account balance before the membership switch"
          },
          "accountBalanceAfterUpdate": {
            "$ref": "#/components/schemas/Money",
            "description": "The customer's account balance after the membership switch"
          }
        }
      },
      "Price": {
        "type": "object",
        "description": "Represents a financial data with tax information",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of the finance data tuple",
            "example": 20
          },
          "currency": {
            "type": "string",
            "format": "ISO 4217",
            "description": "Currency of the finance data tuple",
            "example": "EUR"
          },
          "priceComponents": {
            "type": "array",
            "description": "Information about taxes",
            "items": {
              "$ref": "#/components/schemas/PriceComponent"
            }
          }
        },
        "required": [
          "amount",
          "currency",
          "priceComponents"
        ]
      },
      "PriceComponent": {
        "type": "object",
        "description": "Represents calculated tax details for a monetary amount.",
        "properties": {
          "netAmount": {
            "type": "number",
            "description": "Net price (before tax). Formula: Net + Tax = Gross. This is the base price without any tax applied.",
            "example": 39.99
          },
          "grossAmount": {
            "type": "number",
            "description": "Gross price (total including tax). Formula: Net + Tax = Gross. This is the final price the customer pays.",
            "example": 43.19
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount. Formula: Gross - Net = Tax. This represents the tax portion of the price.",
            "example": 3.2
          },
          "taxRate": {
            "type": "number",
            "description": "Tax rate as a percentage (e.g., 8.00 means 8%).",
            "example": 8
          }
        }
      },
      "SignupPaymentPreview": {
        "type": "object",
        "description": "Represents a preview of the payment schedule for a signup process.",
        "properties": {
          "paymentSchedule": {
            "type": "array",
            "description": "Payment schedule entries in chronological order",
            "items": {
              "$ref": "#/components/schemas/SignupPaymentScheduleEntry"
            }
          },
          "dueOnSigningAmount": {
            "$ref": "#/components/schemas/Price",
            "description": "Total amount due at contract signing"
          }
        }
      },
      "SignupPaymentScheduleEntry": {
        "type": "object",
        "description": "Represents a single payment schedule entry for a signup process.",
        "properties": {
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Due date of the payment in ISO-8601 format",
            "example": "2025-12-31"
          },
          "description": {
            "type": "string",
            "description": "Description of the charge",
            "example": "Contract Basic"
          },
          "type": {
            "type": "string",
            "description": "Type of membership payment",
            "enum": [
              "CONTRACT_FEE",
              "STARTER_PACKAGE",
              "FLAT_FEE",
              "MODULE_FEE",
              "BONUS_PERIOD"
            ],
            "example": "MEMBERSHIP_FEE",
            "x-enumDescriptions": {
              "BONUS_PERIOD": "Bonus period",
              "STARTER_PACKAGE": "Membership starter package",
              "FLAT_FEE": "Flat fee",
              "CONTRACT_FEE": "Membership contract fee",
              "MODULE_FEE": "Membership module fee"
            }
          },
          "amount": {
            "$ref": "#/components/schemas/Price",
            "description": "Amount of the charge"
          },
          "mandatoryOnSigning": {
            "type": "boolean",
            "description": "Indicates if the payment is mandatory on signing",
            "example": true
          }
        }
      },
      "IdlePeriodCreateRequest": {
        "type": "object",
        "description": "Represents an idle period create request",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the idle period"
          },
          "temporalUnit": {
            "type": "string",
            "description": "Represents the temporal unit of an idle period ",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents a monthly temporal unit of the idle period. Can be used for month pickers only. Supports only full months.",
              "WEEK": "Represents a weekly temporal unit of the idle period. Can be used for week pickers only. Supports only full weeks.",
              "DAY": "Represents a daily temporal unit of the idle period. Can be used for day pickers only."
            }
          },
          "termValue": {
            "type": "integer",
            "format": "int32",
            "description": "Duration term of the idle period. The field is related to the temporal unit",
            "example": 1
          },
          "unlimited": {
            "type": "boolean",
            "description": "If true, the idle period has no defined end date. In that case, termValue and temporalUnit are empty.",
            "example": true
          },
          "reasonId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of an idle period reason",
            "example": 1
          }
        },
        "required": [
          "reasonId",
          "startDate"
        ]
      },
      "IdlePeriodValidationRequest": {
        "type": "object",
        "description": "Represents an idle period validation request",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the idle period"
          },
          "temporalUnit": {
            "type": "string",
            "description": "Represents the temporal unit of an idle period ",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents a monthly temporal unit of the idle period. Can be used for month pickers only. Supports only full months.",
              "WEEK": "Represents a weekly temporal unit of the idle period. Can be used for week pickers only. Supports only full weeks.",
              "DAY": "Represents a daily temporal unit of the idle period. Can be used for day pickers only."
            }
          },
          "termValue": {
            "type": "integer",
            "format": "int32",
            "description": "Duration term of the idle period. The field is related to the temporal unit",
            "example": 1
          },
          "unlimited": {
            "type": "boolean",
            "description": "If true, the idle period has no defined end date. In that case, termValue and temporalUnit are empty.",
            "example": true
          }
        },
        "required": [
          "startDate"
        ]
      },
      "IdlePeriodValidationStatusResult": {
        "type": "object",
        "description": "Idle period validation status",
        "properties": {
          "validationStatus": {
            "type": "string",
            "description": "Status of the idle period validation",
            "enum": [
              "IDLEPERIOD_DEACTIVATED_FOR_CONTRACT",
              "IDLEPERIOD_PENDING_VERIFICATION",
              "IDLEPERIOD_DATE_NOT_FIRSTDAY_OF_TEMPORALUNIT",
              "IDLEPERIOD_DEADLINE_VIOLATED",
              "IDLEPERIOD_EXPECTED_STARTDATE_MISMATCH",
              "IDLEPERIOD_MAXIMUM_YEARS_VIOLATED",
              "IDLEPERIOD_OVERLAPPING",
              "IDLEPERIOD_TEMPORALUNIT_INVALID",
              "IDLEPERIOD_MAXIMUM_TERMS_VIOLATED",
              "IDLEPERIOD_CREATABLE",
              "IDLEPERIOD_TERMVALUE_MISSING",
              "IDLEPERIOD_UNLIMITED_PARAMETER_IS_MISSING",
              "IDLEPERIOD_ENDDATE_AND_TERM_PROVIDED",
              "IDLEPERIOD_ENDDATE_BEFORE_STARTDATE",
              "IDLEPERIOD_ENDDATE_ONLY_FOR_SHORTENING",
              "IDLEPERIOD_UPDATABLE"
            ],
            "example": "IDLEPERIOD_DEACTIVATED_FOR_CONTRACT",
            "x-enumDescriptions": {
              "IDLEPERIOD_DEACTIVATED_FOR_CONTRACT": "Idle periods are deactivated for the contract.",
              "IDLEPERIOD_ENDDATE_ONLY_FOR_SHORTENING": "The endDate field is restricted to shortening existing idle periods.",
              "IDLEPERIOD_MAXIMUM_YEARS_VIOLATED": "5 years is a hard limit for the length of the idle period.",
              "IDLEPERIOD_EXPECTED_STARTDATE_MISMATCH": "The idle period start date does not match the expected start date.",
              "IDLEPERIOD_DEADLINE_VIOLATED": "The start date violates the submission deadline.",
              "IDLEPERIOD_ENDDATE_AND_TERM_PROVIDED": "End date and term (temporal unit and term value) cannot be provided at the same time.",
              "IDLEPERIOD_CREATABLE": "The idle period can be created.",
              "IDLEPERIOD_TERMVALUE_MISSING": "The value for the term is missing.",
              "IDLEPERIOD_PENDING_VERIFICATION": "Idle periods cannot be created if a pending verification for an amendment exists.",
              "IDLEPERIOD_MAXIMUM_TERMS_VIOLATED": "The idle period violates the maximum terms value.",
              "IDLEPERIOD_UNLIMITED_PARAMETER_IS_MISSING": "The unlimited parameter is required for unlimited idle period updates.",
              "IDLEPERIOD_UPDATABLE": "The idle period can be updated.",
              "IDLEPERIOD_DATE_NOT_FIRSTDAY_OF_TEMPORALUNIT": "[DEPRECATED] This validation status is no longer used. The validation is now handled by IDLEPERIOD_DEADLINE_VIOLATED.",
              "IDLEPERIOD_TEMPORALUNIT_INVALID": "The temporal unit must match the temporal unit of the config.",
              "IDLEPERIOD_OVERLAPPING": "The idle period is overlapping existing idle periods.",
              "IDLEPERIOD_ENDDATE_BEFORE_STARTDATE": "The end date cannot be set before the start date."
            }
          }
        },
        "required": [
          "validationStatus"
        ]
      },
      "AdditionalModuleContractRequest": {
        "type": "object",
        "description": "Represents an additional module contract request",
        "properties": {
          "additionalModuleId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the additional module",
            "example": 203
          },
          "paymentFrequencyId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the payment frequency of the additional module",
            "example": 203
          },
          "bookTrialPeriod": {
            "type": "boolean",
            "description": "Describes whether a trial period should be booked. The additional module must contain a valid trial period configuration, if set to true",
            "example": true
          }
        },
        "required": [
          "additionalModuleId",
          "bookTrialPeriod",
          "paymentFrequencyId"
        ]
      },
      "AdditionalModuleContractValidationStatus": {
        "type": "object",
        "description": "Represents the validation status of an additional module contract request",
        "properties": {
          "validationStatus": {
            "type": "string",
            "description": "Status of the addtional module validation",
            "enum": [
              "ADDITIONAL_MODULE_CONTRACT_ALREADY_PURCHASED",
              "ADDITIONAL_MODULE_CONTRACT_INVALID_STATUS",
              "ADDITIONAL_MODULE_NOT_FOUND",
              "ADDITIONAL_MODULE_NOT_ONLINE_PURCHASABLE",
              "ADDITIONAL_MODULE_TRIAL_PERIOD_NOT_BOOKABLE",
              "ADDITIONAL_MODULE_PURCHASABLE"
            ],
            "example": "ADDITIONAL_MODULE_CONTRACT_ALREADY_PURCHASED",
            "x-enumDescriptions": {
              "ADDITIONAL_MODULE_NOT_FOUND": "The additional module could not be found.",
              "ADDITIONAL_MODULE_CONTRACT_INVALID_STATUS,": "The additional module contract is in an invalid status.",
              "ADDITIONAL_MODULE_NOT_ONLINE_PURCHASABLE": "The additional module is not purchasable online.",
              "ADDITIONAL_MODULE_CONTRACT_ALREADY_PURCHASED": "The additional module contract has already been purchased.",
              "ADDITIONAL_MODULE_PURCHASABLE": "The additional module is purchasable.",
              "ADDITIONAL_MODULE_TRIAL_PERIOD_NOT_BOOKABLE": "The additional module trial period cannot be booked."
            }
          }
        },
        "required": [
          "validationStatus"
        ]
      },
      "AdditionalModuleContract": {
        "type": "object",
        "description": "Represents an additional module contract",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the additional module contract",
            "example": 1001
          }
        }
      },
      "AdditionalModuleContractCancelation": {
        "type": "object",
        "description": "Request to cancel an additional module contract",
        "properties": {
          "cancelationDate": {
            "type": "string",
            "format": "date",
            "description": "Date the contract should be canceled to",
            "example": "2023-01-25"
          },
          "cancelationReasonId": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the reason why the contract is canceled",
            "example": 1234
          }
        },
        "required": [
          "cancelationDate",
          "cancelationReasonId"
        ]
      },
      "DocumentIdentification": {
        "type": "object",
        "description": "Information from an official document that identifies the customer",
        "properties": {
          "documentNumber": {
            "type": "string",
            "description": "Document number",
            "example": "CX5432112345DS"
          },
          "documentType": {
            "type": "string",
            "description": "Type of the document",
            "enum": [
              "ID_CARD",
              "PASSPORT",
              "DRIVERS_LICENCE",
              "RESIDENCE_PERMIT",
              "NATIONAL_ID_NUMBER",
              "OTHERS"
            ],
            "example": "ID_CARD",
            "x-enumDescriptions": {
              "RESIDENCE_PERMIT": "Residence or visa permit",
              "OTHERS": "Other types of identification documents",
              "ID_CARD": "National identification card",
              "PASSPORT": "International passport",
              "DRIVERS_LICENCE": "Driver's license",
              "NATIONAL_ID_NUMBER": "National identification number"
            }
          }
        },
        "required": [
          "documentNumber",
          "documentType"
        ]
      },
      "LegalRepresentative": {
        "type": "object",
        "description": "Legal representative information for underage customers",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of the legal representative",
            "enum": [
              "EXTERNAL_PERSON",
              "EXISTING_CUSTOMER"
            ],
            "example": "EXTERNAL_PERSON",
            "x-enumDescriptions": {
              "EXISTING_CUSTOMER": "Links an existing customer as legal representative",
              "EXTERNAL_PERSON": "Creates or updates an external person as legal representative"
            }
          },
          "person": {
            "$ref": "#/components/schemas/LegalRepresentativePerson",
            "description": "External person data used when type is EXTERNAL_PERSON"
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Customer id used when type is EXISTING_CUSTOMER",
            "example": 98765
          },
          "singleParent": {
            "type": "boolean",
            "description": "Whether the provided legal representative is the only legal guardian",
            "example": true
          },
          "addressToLiablePerson": {
            "type": "boolean",
            "description": "Whether communication and billing should be sent to the legal representative",
            "example": false
          },
          "legalRepresentativeSignature": {
            "$ref": "#/components/schemas/Signature",
            "description": "The first legal representative signature SVG for the contract document",
            "example": {
              "base64SvgSignature": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4="
            }
          },
          "legalRepresentativeSignatureSecondPerson": {
            "$ref": "#/components/schemas/Signature",
            "description": "The second legal representative signature SVG for the contract document",
            "example": {
              "base64SvgSignature": "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLz4="
            }
          }
        },
        "required": [
          "type"
        ]
      },
      "LegalRepresentativePerson": {
        "type": "object",
        "description": "External person data for the legal representative",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name of the legal representative",
            "example": "Erika"
          },
          "secondFirstName": {
            "type": "string",
            "description": "Second first name of the legal representative",
            "example": "Maria"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the legal representative",
            "example": "Mustermann"
          },
          "secondLastName": {
            "type": "string",
            "description": "Second last name of the legal representative",
            "example": "Meyer"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Date of birth of the legal representative",
            "example": "1985-08-24"
          },
          "placeOfBirth": {
            "type": "string",
            "description": "Place of birth of the legal representative",
            "example": "Hamburg"
          },
          "countryOfBirth": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country of birth of the legal representative",
            "example": "DE"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the legal representative",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "email": {
            "type": "string",
            "description": "Email address of the legal representative",
            "example": "legal.rep@example.com"
          },
          "phoneNumberPrivate": {
            "type": "string",
            "description": "Private phone number of the legal representative",
            "example": "+44123456789"
          },
          "phoneNumberMobile": {
            "type": "string",
            "description": "Mobile phone number of the legal representative",
            "example": "+44987654321"
          },
          "street": {
            "type": "string",
            "description": "Street of the legal representative address",
            "example": "Raboisen Street"
          },
          "houseNumber": {
            "type": "string",
            "description": "House number of the legal representative address",
            "example": "3-4"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the legal representative",
            "example": "2nd floor"
          },
          "city": {
            "type": "string",
            "description": "City of the legal representative address",
            "example": "Hamburg"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the legal representative address",
            "example": "220-99"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country code of the legal representative address",
            "example": "DE"
          }
        },
        "required": [
          "city",
          "countryCode",
          "firstName",
          "lastName",
          "street",
          "zipCode"
        ]
      },
      "MembershipSignupContract": {
        "type": "object",
        "description": "The contract information used for the membership signup",
        "properties": {
          "contractOfferTermId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the contract offer term",
            "example": 1000
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "The start date of the contract",
            "example": "2026-02-01"
          },
          "preuseDate": {
            "type": "string",
            "format": "date",
            "description": "The pre use date of the contract. If not provided, it will be evaluated based on contract offer configuration.",
            "example": "2026-01-01"
          },
          "notes": {
            "type": "string",
            "description": "The notes related to the contract",
            "example": "Some notes"
          },
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party contract in the third party system",
            "example": "1000a"
          },
          "employeeId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the employee who created the membership",
            "example": 1239812733
          },
          "referralCode": {
            "type": "string",
            "description": "Referral code to link with recruiter",
            "example": "A500D"
          },
          "selectedSelectableModuleIds": {
            "type": "array",
            "description": "The selected modules from the available selectable modules",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "selectedOptionalModuleIds": {
            "type": "array",
            "description": "The selected modules from the available optional modules",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "initialPaymentRequestToken": {
            "type": "string",
            "description": "This token identifies a pre-authorized payment request. It acts as a reference to the payment session initiated by the user. It's not needed for preview endpoints.",
            "example": "3JtyH5sakfn2V22vB0napNC2zWMlpFwS9gPQawuk7Jw1F00atOD0BA"
          },
          "contractSignature": {
            "$ref": "#/components/schemas/Signature",
            "description": "The signature SVG for the contract document"
          },
          "textBlockSignatures": {
            "type": "array",
            "description": "Signatures for text blocks",
            "items": {
              "$ref": "#/components/schemas/TextBlockSignature"
            }
          },
          "voucherCode": {
            "type": "string",
            "description": "An optional code for a voucher. Only credit and discount vouchers are supported.",
            "example": 123
          }
        },
        "required": [
          "contractOfferTermId",
          "startDate"
        ]
      },
      "MembershipSignupCustomer": {
        "type": "object",
        "description": "The customer information used for the membership signup",
        "properties": {
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party customer in the third party system",
            "example": "A1000"
          },
          "firstName": {
            "type": "string",
            "description": "First name of the customer",
            "example": "Peter"
          },
          "secondFirstName": {
            "type": "string",
            "description": "Second first name of the customer",
            "example": "Thomas"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the customer",
            "example": "Muller"
          },
          "secondLastName": {
            "type": "string",
            "description": "Second last name of the customer",
            "example": "Meyer"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Date of birth of the customer",
            "example": "2019-08-24"
          },
          "placeOfBirth": {
            "type": "string",
            "description": "Place of birth of the customer. Required for Italian studios and nationals."
          },
          "countryOfBirth": {
            "type": "string",
            "description": "Country of birth of the customer. Required for Italian studios and non-Italian nationals"
          },
          "email": {
            "type": "string",
            "description": "Email address of the customer",
            "example": "example@example.com"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "phoneNumberPrivate": {
            "type": "string",
            "description": "Private phone number of the customer",
            "example": "+44123456789"
          },
          "phoneNumberMobile": {
            "type": "string",
            "description": "Mobile phone number of the customer",
            "example": "+44987654321"
          },
          "street": {
            "type": "string",
            "description": "Street of the customer's address",
            "example": "Raboisen Street"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the customer's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the customer's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the customer's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the customer's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the customer's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the customer's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the customer's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the customer's address",
            "example": "Door 1"
          },
          "province": {
            "type": "string",
            "description": "Province of the customer's address",
            "example": "Champagne"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the customer's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the customer's address",
            "example": "2nd floor"
          },
          "language": {
            "$ref": "#/components/schemas/Language",
            "description": "Language of the customer"
          },
          "houseNumber": {
            "type": "string",
            "description": "House number of the customer's address",
            "example": "3-4"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name",
            "example": "Empire State Building"
          },
          "city": {
            "type": "string",
            "description": "City of the customer's address",
            "example": "Hamburg"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the customer's address",
            "example": "220-99"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country code of the customer's address",
            "example": "DE"
          },
          "taxId": {
            "type": "string",
            "description": "Required if the studio is located in Spain or Italy. Alternatively, a valid document identification can be provided.",
            "example": "12345678A"
          },
          "communicationPreferences": {
            "type": "array",
            "description": "List of communication preferences for the customer",
            "items": {
              "$ref": "#/components/schemas/CommunicationPreference"
            }
          },
          "documentIdentification": {
            "$ref": "#/components/schemas/DocumentIdentification"
          },
          "paymentRequestToken": {
            "type": "string",
            "description": "By assigning the `paymentRequestToken` to the customer, the payment method associated with the token will be used as payment method setting of the customer. Additionally, if the `paymentRequestToken` is associated with a payment instrument, i.e. a SEPA Mandate, BACS Mandate, Credit Card, or other, the payment instrument will be made available in the member account for future collection via payment runs. By leaving this field empty the payment method of the customer will be set to `CASH`. For reference check 'Create a user payment session'."
          },
          "additionalInformationFieldAssignments": {
            "type": "array",
            "description": "List of additional information field assignments of the customer",
            "items": {
              "$ref": "#/components/schemas/AdditionalInformationFieldAssignment"
            }
          }
        },
        "required": [
          "city",
          "countryCode",
          "dateOfBirth",
          "email",
          "firstName",
          "language",
          "lastName",
          "street",
          "zipCode"
        ]
      },
      "MembershipSignupRequest": {
        "type": "object",
        "description": "The information used for the membership signup",
        "properties": {
          "contract": {
            "$ref": "#/components/schemas/MembershipSignupContract"
          },
          "customer": {
            "$ref": "#/components/schemas/MembershipSignupCustomer"
          },
          "legalRepresentative": {
            "$ref": "#/components/schemas/LegalRepresentative"
          }
        },
        "required": [
          "contract",
          "customer"
        ]
      },
      "Signature": {
        "type": "object",
        "description": "Representing customer signature",
        "properties": {
          "base64SvgSignature": {
            "type": "string",
            "description": "Customer confirmation signature SVG value as base 64 string"
          }
        },
        "required": [
          "base64SvgSignature"
        ]
      },
      "TextBlockSignature": {
        "type": "object",
        "description": "Representing a signature for a text block",
        "properties": {
          "base64SvgSignature": {
            "type": "string",
            "description": "Text block's signature SVG value as base 64 string"
          },
          "textBlockId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the referenced text block of the signature"
          }
        },
        "required": [
          "base64SvgSignature",
          "textBlockId"
        ]
      },
      "MembershipSignupResult": {
        "type": "object",
        "description": "The result of the membership signup",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 1000
          }
        },
        "required": [
          "customerId"
        ]
      },
      "AbsoluteAppliedDiscount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AppliedDiscount"
          },
          {
            "type": "object",
            "properties": {
              "discountValue": {
                "$ref": "#/components/schemas/Money",
                "description": "The fixed monetary amount subtracted from the base price"
              }
            }
          }
        ],
        "description": "A discount where a fixed monetary amount is subtracted from the base price",
        "required": [
          "basePrice",
          "discountValue",
          "discountedPrice",
          "effectivePeriod",
          "id",
          "origin"
        ],
        "title": "AbsoluteAppliedDiscount"
      },
      "AgeRange": {
        "type": "object",
        "description": "Represents an age range.",
        "properties": {
          "startAge": {
            "type": "integer",
            "format": "int32",
            "description": "Start age of the range, inclusive.",
            "example": 18
          },
          "endAge": {
            "type": "integer",
            "format": "int32",
            "description": "End age of the range, inclusive.",
            "example": 65
          }
        },
        "required": [
          "endAge",
          "startAge"
        ]
      },
      "AppliedDiscount": {
        "type": "object",
        "description": "A discount applied to a payment frequency",
        "discriminator": {
          "propertyName": "type"
        },
        "properties": {
          "origin": {
            "type": "string",
            "description": "The origin of the applied discount",
            "enum": [
              "DISCOUNT_CAMPAIGN"
            ],
            "example": "DISCOUNT_CAMPAIGN",
            "x-enumDescriptions": {
              "DISCOUNT_CAMPAIGN": "The discount originates from a discount campaign"
            }
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique identifier of the applied discount"
          },
          "basePrice": {
            "$ref": "#/components/schemas/PriceWithDetails"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/PriceWithDetails"
          },
          "effectivePeriod": {
            "$ref": "#/components/schemas/AppliedDiscountEffectivePeriod"
          },
          "type": {
            "type": "string",
            "description": "The type of the applied discount",
            "enum": [
              "ABSOLUTE_DISCOUNT",
              "PERCENTAGE_DISCOUNT",
              "SUBSTITUTE_PRICE"
            ],
            "example": "ABSOLUTE_DISCOUNT",
            "x-enumDescriptions": {
              "ABSOLUTE_DISCOUNT": "A fixed monetary amount is subtracted from the base price",
              "PERCENTAGE_DISCOUNT": "A percentage of the base price is subtracted",
              "SUBSTITUTE_PRICE": "The base price is entirely replaced by a substitute price"
            }
          }
        },
        "required": [
          "basePrice",
          "discountedPrice",
          "effectivePeriod",
          "id",
          "origin"
        ]
      },
      "AppliedDiscountEffectivePeriod": {
        "type": "object",
        "description": "The effective period during which the discount applies",
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of effective period",
            "enum": [
              "UNLIMITED",
              "INITIAL_TERM",
              "TIME_BASED"
            ],
            "example": "UNLIMITED",
            "x-enumDescriptions": {
              "TIME_BASED": "Represents a voucher with a time based effective period",
              "UNLIMITED": "Represents a voucher with unlimited effective period",
              "INITIAL_TERM": "Represents a voucher effective during the initial term of the membership"
            }
          },
          "term": {
            "$ref": "#/components/schemas/Term",
            "description": "The term for time-based effective periods. Only present when type is `TIME_BASED`"
          }
        },
        "required": [
          "type"
        ]
      },
      "FlatFeePreview": {
        "type": "object",
        "description": "The preview of a flat fee",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the sub contract",
            "example": "Sauna"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/Money",
            "deprecated": true,
            "description": "Discounted price of the sub contract, if a valid discount voucher code has been provided. Deprecated: Use discountPeriods[].discountedBasePrice instead to see prices per discount period."
          },
          "discountPeriods": {
            "type": "array",
            "description": "List of discount periods for the sub contract, if a valid discount voucher code has been provided",
            "items": {
              "$ref": "#/components/schemas/VoucherDiscountPeriod"
            }
          },
          "companyAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the company has to pay for the sub contract, if a valid company discount voucher code has been provided. This field is populated when there are 0 or 1 discount periods. For multiple discount periods, use discountPeriods[].companyAmount instead to see amounts per discount period."
          },
          "memberAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the member has to pay for the sub contract, if a valid company discount voucher code has been provided. This field is populated when there are 0 or 1 discount periods. For multiple discount periods, use discountPeriods[].memberAmount instead to see amounts per discount period."
          },
          "paidTimePeriodCalculationType": {
            "type": "string",
            "description": "The method that is being used to determine the period for the first payment",
            "enum": [
              "REFERENCE_DATE",
              "NORMALIZATION_ON_CALENDAR_UNIT"
            ],
            "example": "REFERENCE_DATE"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency",
            "description": "Payment frequency information of the sub contract"
          },
          "voucherBonusPeriod": {
            "$ref": "#/components/schemas/MembershipOfferRateBonusPeriod",
            "description": "Bonus period applied with the discount voucher, if valid a discount voucher code has been provided"
          },
          "creditValue": {
            "type": "number",
            "description": "Voucher credit value, if a valid credit voucher code has been provided",
            "example": 20
          },
          "identifier": {
            "type": "string",
            "description": "Unique identifier of the flat fee",
            "example": "FLATFEE0-0F7691D0E09A4477A5CC69C8BD3F223B"
          }
        },
        "required": [
          "identifier",
          "name",
          "paymentFrequency"
        ]
      },
      "MembershipOfferModuleAgeBasedAdjustment": {
        "type": "object",
        "description": "Represents an age-based adjustment.",
        "properties": {
          "ageRange": {
            "$ref": "#/components/schemas/AgeRange"
          },
          "value": {
            "type": "number",
            "description": "The value of the adjustment, based on `type`.",
            "example": 10
          },
          "type": {
            "type": "string",
            "description": "Age based adjustment type",
            "enum": [
              "ABSOLUTE",
              "PERCENTAGE"
            ],
            "example": "ABSOLUTE",
            "x-enumDescriptions": {
              "ABSOLUTE": "Absolute adjustment of the price",
              "PERCENTAGE": "Percentage adjustment of the price"
            }
          }
        },
        "required": [
          "ageRange",
          "type",
          "value"
        ]
      },
      "MembershipOfferMonthDayToPrice": {
        "type": "object",
        "description": "Represents a mapping from a month day to a price for a membership offer (that month day).",
        "properties": {
          "monthDay": {
            "type": "object",
            "description": "The month day of the month day to price mapping",
            "properties": {
              "month": {
                "type": "string",
                "enum": [
                  "JANUARY",
                  "FEBRUARY",
                  "MARCH",
                  "APRIL",
                  "MAY",
                  "JUNE",
                  "JULY",
                  "AUGUST",
                  "SEPTEMBER",
                  "OCTOBER",
                  "NOVEMBER",
                  "DECEMBER"
                ]
              },
              "monthValue": {
                "type": "integer",
                "format": "int32"
              },
              "dayOfMonth": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "monthDay",
          "price"
        ]
      },
      "MembershipOfferPaymentFrequency": {
        "type": "object",
        "description": "Represents the payment frequency",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique identifier of the payment frequency. (`null` possible for starter package)",
            "example": 1234567890
          },
          "type": {
            "type": "string",
            "description": "Payment frequency type of a contract",
            "enum": [
              "FREE",
              "NON_RECURRING",
              "RECURRING",
              "MONTH_DAY",
              "TERM_BASED"
            ],
            "example": "FREE",
            "x-enumDescriptions": {
              "TERM_BASED": "Represents that the contract payment frequency is based on terms, with a possibly individual price per term.",
              "NON_RECURRING": "Represents that the contract payment frequency is non recurring, meaning only one payment is necessary here.",
              "FREE": "Represents that the contract payment frequency is free of charge.",
              "RECURRING": "Represents that the contract payment frequency is recurring, meaning that the payment will take place every term.",
              "MONTH_DAY": "Represents that the contract payment frequency is based on month days, with a possibly individual price per month day."
            }
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "Price for payment frequencies of type `RECURRING` or `NON_RECURRING`. When discounts are applied, this reflects the discounted amount. The original base price can be found in the `basePrice` field of each entry in `appliedDiscounts`."
          },
          "monthDaysToPrices": {
            "type": "array",
            "description": "Month day to prices list, used for contract payment frequency type `MONTH_DAY`",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferMonthDayToPrice"
            }
          },
          "termsToPrices": {
            "type": "array",
            "description": "Terms to prices list, used for contract payment frequency type `TERM_BASED`. Note that the price will become active `AFTER` the respective term has passed",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTermToPrice"
            }
          },
          "recurring": {
            "type": "boolean",
            "description": "Whether the cycle of payments repeats indefinitely. Only relevant if type is `TERM_BASED` or `MONTH_DAY`."
          },
          "ageBasedAdjustments": {
            "type": "array",
            "description": "List of age-based adjustments for the membership offer module.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferModuleAgeBasedAdjustment"
            }
          },
          "formattedPaymentFrequency": {
            "type": "string",
            "description": "The formatted payment frequency",
            "example": "Every 6 months"
          },
          "appliedDiscounts": {
            "type": "array",
            "description": "List of discounts applied to this payment frequency. When present, the price field reflects the discounted amount of the first applied discount.",
            "items": {
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "SUBSTITUTE_PRICE": "#/components/schemas/SubstitutePriceAppliedDiscount",
                  "ABSOLUTE_DISCOUNT": "#/components/schemas/AbsoluteAppliedDiscount",
                  "PERCENTAGE_DISCOUNT": "#/components/schemas/PercentageAppliedDiscount"
                }
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/AbsoluteAppliedDiscount"
                },
                {
                  "$ref": "#/components/schemas/PercentageAppliedDiscount"
                },
                {
                  "$ref": "#/components/schemas/SubstitutePriceAppliedDiscount"
                }
              ]
            }
          }
        },
        "required": [
          "formattedPaymentFrequency",
          "type"
        ]
      },
      "MembershipOfferRateBonusPeriod": {
        "type": "object",
        "description": "Represents a membership offer rate bonus period.",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term",
            "description": "The term of the bonus period"
          },
          "termStrategy": {
            "type": "string",
            "description": "Membership offer rate bonus period term strategy.",
            "enum": [
              "CONTRACT_START",
              "FIXED",
              "END_OF_CURRENT_TERM",
              "START_OF_NEXT_TERM"
            ],
            "example": "CONTRACT_START",
            "x-enumDescriptions": {
              "FIXED": "Fixed date",
              "START_OF_NEXT_TERM": "Start of next term",
              "CONTRACT_START": "Contract start date",
              "END_OF_CURRENT_TERM": "End of current term"
            }
          },
          "displaySeparately": {
            "type": "boolean",
            "description": "Indicates whether the bonus period should be displayed separately in the offer details",
            "example": true
          },
          "runtimeExtensionType": {
            "type": "string",
            "description": "Membership offer bonus period type.",
            "enum": [
              "WITH_EXTENSION",
              "WITHOUT_EXTENSION"
            ],
            "example": "WITH_EXTENSION",
            "x-enumDescriptions": {
              "WITHOUT_EXTENSION": "Period without extension",
              "WITH_EXTENSION": "Period with extension"
            }
          },
          "extendsCancellationPeriod": {
            "type": "boolean",
            "description": "Indicates whether the bonus period extends the cancellation period",
            "example": false
          }
        },
        "required": [
          "runtimeExtensionType",
          "term",
          "termStrategy"
        ]
      },
      "MembershipOfferTermToPrice": {
        "type": "object",
        "description": "Represents a mapping from a term to a price for a membership offer.",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "price",
          "term"
        ]
      },
      "MembershipOfferTrialPeriod": {
        "type": "object",
        "description": "Represents the trial period of a membership offer.",
        "properties": {
          "trialPeriod": {
            "$ref": "#/components/schemas/Term",
            "description": "The trial period of the membership offer"
          },
          "description": {
            "type": "string",
            "description": "Description of the trial period",
            "example": "Free trial for 30 days"
          }
        },
        "required": [
          "description",
          "trialPeriod"
        ]
      },
      "ModuleContractPreview": {
        "type": "object",
        "description": "The preview of a module contract",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the sub contract",
            "example": "Sauna"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/Money",
            "deprecated": true,
            "description": "Discounted price of the sub contract, if a valid discount voucher code has been provided. Deprecated: Use discountPeriods[].discountedBasePrice instead to see prices per discount period."
          },
          "discountPeriods": {
            "type": "array",
            "description": "List of discount periods for the sub contract, if a valid discount voucher code has been provided",
            "items": {
              "$ref": "#/components/schemas/VoucherDiscountPeriod"
            }
          },
          "companyAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the company has to pay for the sub contract, if a valid company discount voucher code has been provided. This field is populated when there are 0 or 1 discount periods. For multiple discount periods, use discountPeriods[].companyAmount instead to see amounts per discount period."
          },
          "memberAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the member has to pay for the sub contract, if a valid company discount voucher code has been provided. This field is populated when there are 0 or 1 discount periods. For multiple discount periods, use discountPeriods[].memberAmount instead to see amounts per discount period."
          },
          "paidTimePeriodCalculationType": {
            "type": "string",
            "description": "The method that is being used to determine the period for the first payment",
            "enum": [
              "REFERENCE_DATE",
              "NORMALIZATION_ON_CALENDAR_UNIT"
            ],
            "example": "REFERENCE_DATE"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency",
            "description": "Payment frequency information of the sub contract"
          },
          "voucherBonusPeriod": {
            "$ref": "#/components/schemas/MembershipOfferRateBonusPeriod",
            "description": "Bonus period applied with the discount voucher, if valid a discount voucher code has been provided"
          },
          "creditValue": {
            "type": "number",
            "description": "Voucher credit value, if a valid credit voucher code has been provided",
            "example": 20
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the module",
            "example": 12345
          },
          "trialPeriod": {
            "$ref": "#/components/schemas/MembershipOfferTrialPeriod",
            "description": "Trial period information for the module, if applicable"
          }
        },
        "required": [
          "id",
          "name",
          "paymentFrequency"
        ]
      },
      "OpenApiV1SignupPreviewDto": {
        "type": "object",
        "properties": {
          "basePrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Base price of contract"
          },
          "preUseCharge": {
            "$ref": "#/components/schemas/Money",
            "description": "Charge for the time between the start date of use and start date"
          },
          "voucherType": {
            "type": "string",
            "description": "Type of a voucher, if a valid voucher code has been provided",
            "enum": [
              "CONTRACT",
              "CREDIT",
              "DISCOUNT",
              "COMPANY_FEE_SPLIT",
              "CHECKIN"
            ],
            "example": "DISCOUNT",
            "x-enumDescriptions": {
              "CREDIT": "Represents a credit voucher",
              "CHECKIN": "Represents a check-in voucher",
              "COMPANY_FEE_SPLIT": "Represents a company fee split voucher",
              "CONTRACT": "Represents a contract voucher",
              "DISCOUNT": "Represents a discount voucher"
            }
          },
          "voucherRemarks": {
            "type": "string",
            "description": "Voucher remarks, if a valid voucher code has been provided",
            "example": "Yoga class not included"
          },
          "voucherEffectivePeriod": {
            "type": "string",
            "deprecated": true,
            "description": "The type of period for which the voucher is applied, if a valid voucher code has been provided. Deprecated: Use voucherDiscountPeriods[].effectivePeriod instead to see periods per discount period.",
            "enum": [
              "UNLIMITED",
              "INITIAL_TERM",
              "TIME_BASED"
            ],
            "example": "UNLIMITED",
            "x-enumDescriptions": {
              "TIME_BASED": "Represents a voucher with a time based effective period",
              "UNLIMITED": "Represents a voucher with unlimited effective period",
              "INITIAL_TERM": "Represents a voucher effective during the initial term of the membership"
            }
          },
          "effectivePeriodTimeBasedTerm": {
            "$ref": "#/components/schemas/Term",
            "deprecated": true,
            "description": "Effective period: term for which a discount is applied, if type is time based and a valid voucher code has been provided. Deprecated: Use voucherDiscountPeriods[].effectivePeriodTimeBasedTerm instead to see terms per discount period."
          },
          "discountedBasePrice": {
            "$ref": "#/components/schemas/Money",
            "deprecated": true,
            "description": "Discounted base price, if a valid discount voucher code has been provided. Deprecated: Use voucherDiscountPeriods[].discountedBasePrice instead to see prices per discount period. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          },
          "discountType": {
            "type": "string",
            "deprecated": true,
            "description": "Type of discount (percentage or absolute), if a valid discount voucher code has been provided. Deprecated: Use voucherDiscountPeriods[].discountType instead to see discount types per discount period.",
            "enum": [
              "ABSOLUTE",
              "PERCENTAGE"
            ],
            "example": "PERCENTAGE",
            "x-enumDescriptions": {
              "ABSOLUTE": "Represents an absolute discount",
              "PERCENTAGE": "Represents a percentage based discount"
            }
          },
          "discountValue": {
            "$ref": "#/components/schemas/Money",
            "deprecated": true,
            "description": "Discount value, if a valid discount voucher code has been provided. Deprecated: Use voucherDiscountPeriods[].discountValue instead to see discount values per discount period."
          },
          "voucherDiscountPeriods": {
            "type": "array",
            "description": "List of discount periods for the voucher, if a valid discount voucher code has been provided. Each period has its own discount and effective period.",
            "items": {
              "$ref": "#/components/schemas/VoucherDiscountPeriod"
            }
          },
          "discountedPreUseCharge": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted pre-use charge, if a valid discount voucher code has been provided. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          },
          "creditValue": {
            "$ref": "#/components/schemas/Money",
            "description": "Voucher credit value, if a valid credit voucher code has been provided"
          },
          "companyFeeSplitType": {
            "type": "string",
            "description": "Type of company fee split (percentage or absolute), if a valid company discount voucher code has been provided",
            "enum": [
              "ABSOLUTE",
              "PERCENTAGE"
            ],
            "example": "ABSOLUTE",
            "x-enumDescriptions": {
              "ABSOLUTE": "Represents an absolute discount",
              "PERCENTAGE": "Represents a percentage based discount"
            }
          },
          "companyFeeSplitValue": {
            "$ref": "#/components/schemas/Money",
            "description": "Company fee split value, if a valid company discount voucher code has been provided"
          },
          "companyName": {
            "type": "string",
            "description": "Name of the company that will pay the company amount, if a valid company discount voucher code has been provided",
            "example": "Some company"
          },
          "companyAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the company has to pay, if a valid company discount voucher code has been provided. This field is populated when there are 0 or 1 discount periods. For multiple discount periods, use voucherDiscountPeriods[].companyAmount instead to see amounts per discount period. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          },
          "memberAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the member has to pay, if a valid company discount voucher code has been provided. This field is populated when there are 0 or 1 discount periods. For multiple discount periods, use voucherDiscountPeriods[].memberAmount instead to see amounts per discount period. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          },
          "companyAmountWithoutDiscount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the company has to pay without discount, if a valid company discount voucher code has been provided"
          },
          "memberAmountWithoutDiscount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the member has to pay without discount, if a valid company discount voucher code has been provided"
          },
          "voucherBonusPeriod": {
            "$ref": "#/components/schemas/MembershipOfferRateBonusPeriod",
            "description": "Bonus period applied with the discount voucher, if valid a discount voucher has been provided"
          },
          "voucherTextBlocks": {
            "type": "array",
            "description": "Voucher related text blocks, if a valid voucher code has been provided",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTextBlock"
            }
          },
          "flatFeePreviews": {
            "type": "array",
            "description": "Flat fee previews, including discount if a valid discount voucher code has been provided",
            "items": {
              "$ref": "#/components/schemas/FlatFeePreview"
            }
          },
          "voucherSuccessMessage": {
            "type": "string",
            "description": "Textual representation of the voucher conditions, if a valid voucher code has been provided",
            "example": "Voucher code \"123\" successfully applied: 5% discount on the membership fee"
          },
          "voucherErrorCode": {
            "type": "string",
            "description": "An error code, if the voucher code is invalid",
            "enum": [
              "INVALID_CODE",
              "ALREADY_REDEEMED"
            ],
            "example": "INVALID_CODE",
            "x-enumDescriptions": {
              "INVALID_CODE": "Represents an invalid voucher code",
              "ALREADY_REDEEMED": "Represents that the voucher has already been redeemed"
            }
          },
          "ageAdjustedPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "The adjusted price, if age-based discounts are configured and the customer is eligible, null otherwise"
          },
          "contractVolumeInformation": {
            "$ref": "#/components/schemas/ContractVolume",
            "description": "Contains the total amount to be paid during the initial runtime of the contract and the average amounts per month and per the rate's payment frequency (e.g. 1 week)"
          },
          "moduleConsentTextBlocks": {
            "type": "array",
            "description": "Consent texts for modules that are part of the contract",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTextBlock"
            }
          },
          "selectedOptionalModulesPreviews": {
            "type": "array",
            "description": "Optional module contract preview including discount, company split or credit, if a valid voucher code has been provided",
            "items": {
              "$ref": "#/components/schemas/ModuleContractPreview"
            }
          },
          "paymentPreview": {
            "$ref": "#/components/schemas/SignupPaymentPreview",
            "description": "Detailed payment preview including schedule and due-on-signing amount"
          }
        },
        "required": [
          "basePrice"
        ]
      },
      "PercentageAppliedDiscount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AppliedDiscount"
          },
          {
            "type": "object",
            "properties": {
              "discountValue": {
                "type": "number",
                "description": "The percentage value of the discount (e.g. 20 means 20%)"
              }
            }
          }
        ],
        "description": "A discount where a percentage of the base price is subtracted",
        "required": [
          "basePrice",
          "discountValue",
          "discountedPrice",
          "effectivePeriod",
          "id",
          "origin"
        ],
        "title": "PercentageAppliedDiscount"
      },
      "PriceWithDetails": {
        "type": "object",
        "description": "Represents a financial data with tax information",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of the finance data tuple",
            "example": 43.19
          },
          "currency": {
            "type": "string",
            "format": "ISO 4217",
            "description": "Currency of the finance data tuple",
            "example": "EUR"
          },
          "details": {
            "$ref": "#/components/schemas/PriceComponent"
          }
        },
        "required": [
          "amount",
          "currency",
          "details"
        ]
      },
      "SubstitutePriceAppliedDiscount": {
        "allOf": [
          {
            "$ref": "#/components/schemas/AppliedDiscount"
          }
        ],
        "description": "A discount where the base price is entirely replaced by a substitute price",
        "required": [
          "basePrice",
          "discountedPrice",
          "effectivePeriod",
          "id",
          "origin"
        ],
        "title": "SubstitutePriceAppliedDiscount"
      },
      "VoucherDiscountPeriod": {
        "type": "object",
        "description": "Represents a single discount period within a voucher",
        "properties": {
          "discountType": {
            "type": "string",
            "description": "Type of discount (percentage or absolute)",
            "enum": [
              "ABSOLUTE",
              "PERCENTAGE"
            ],
            "example": "PERCENTAGE",
            "x-enumDescriptions": {
              "ABSOLUTE": "Represents an absolute discount",
              "PERCENTAGE": "Represents a percentage based discount"
            }
          },
          "discountValue": {
            "$ref": "#/components/schemas/Money",
            "description": "Discount value"
          },
          "effectivePeriod": {
            "type": "string",
            "description": "The type of period for which this discount is applied",
            "enum": [
              "UNLIMITED",
              "INITIAL_TERM",
              "TIME_BASED"
            ],
            "example": "TIME_BASED",
            "x-enumDescriptions": {
              "TIME_BASED": "Represents a voucher with a time based effective period",
              "UNLIMITED": "Represents a voucher with unlimited effective period",
              "INITIAL_TERM": "Represents a voucher effective during the initial term of the membership"
            }
          },
          "effectivePeriodTimeBasedTerm": {
            "$ref": "#/components/schemas/Term",
            "description": "The term for which this discount is applied (only present when effectivePeriod is TIME_BASED)"
          },
          "discountedBasePrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted base price after applying this discount period. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          },
          "companyAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the company has to pay during this discount period, if a valid company discount voucher code has been provided. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          },
          "memberAmount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount the member has to pay during this discount period, if a valid company discount voucher code has been provided. This will not be calculated if a Discount Campaign with voucher interoperability type ALLOW_DISCOUNT_VOUCHERS is applied."
          }
        },
        "required": [
          "discountType",
          "discountValue",
          "effectivePeriod"
        ]
      },
      "LeadAdditionalInformation": {
        "type": "object",
        "description": "The lead additional information",
        "properties": {
          "additionalFieldId": {
            "type": "integer",
            "format": "int64",
            "description": "The additional information field unique ID",
            "example": 1246357240
          },
          "value": {
            "type": "string",
            "description": "The additional field value, which can semantically be a boolean, date, text or numeric. For text fields this is the text value, for numeric fields must be positive or negative integers, for date fields this is the date in ISO-8601 format, and for boolean fields this is 'true' or 'false'.",
            "example": "Friends"
          },
          "values": {
            "type": "array",
            "description": "The additional field values if allowMultiSelection is set to true",
            "example": [
              "Radio",
              "Webinar"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "additionalFieldId"
        ]
      },
      "LeadCreationRequest": {
        "type": "object",
        "description": "Lead creation request",
        "properties": {
          "leadCustomer": {
            "$ref": "#/components/schemas/LeadCustomerData"
          },
          "address": {
            "$ref": "#/components/schemas/LeadCustomerAddress"
          },
          "communicationPreferences": {
            "type": "array",
            "description": "List of the communication preferences of the lead",
            "items": {
              "$ref": "#/components/schemas/CommunicationPreference"
            }
          },
          "additionalInformation": {
            "type": "array",
            "description": "List of the the additional information about the lead",
            "items": {
              "$ref": "#/components/schemas/LeadAdditionalInformation"
            }
          },
          "notes": {
            "type": "string",
            "description": "Any notes about the lead",
            "example": "Free trials and classes"
          },
          "externalIdentifier": {
            "type": "string",
            "description": "The external ID of the Campaign associated with the lead",
            "example": "CMPGN-123"
          }
        },
        "required": [
          "leadCustomer"
        ]
      },
      "LeadCustomerAddress": {
        "type": "object",
        "description": "Representing lead customer address data with mandatory fields",
        "properties": {
          "street": {
            "type": "string",
            "description": "Street of the customer",
            "example": "Am Bahnhof"
          },
          "houseNumber": {
            "type": "string",
            "description": "Number of the customer's house",
            "example": "90"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the customer",
            "example": "12133"
          },
          "city": {
            "type": "string",
            "description": "City of the customer",
            "example": "Munich"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country of the customer",
            "example": "DE"
          },
          "province": {
            "type": "string",
            "description": "Province for southern Europe/US countries",
            "example": "Madrid/California"
          },
          "provinceCode": {
            "type": "string",
            "description": "Province code for southern Europe/US countries",
            "example": "MD/CA"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the customer's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the customer's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the customer's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the customer's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the customer's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the customer's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the customer's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the customer's address",
            "example": "Door 1"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the customer's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the customer's address",
            "example": "2nd floor"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name",
            "example": "Empire State Building"
          }
        },
        "required": [
          "city",
          "countryCode",
          "houseNumber",
          "street",
          "zipCode"
        ]
      },
      "LeadCustomerData": {
        "type": "object",
        "description": "Lead customer information",
        "properties": {
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party customer in the third party system",
            "example": "A1000"
          },
          "firstname": {
            "type": "string",
            "description": "First name of the lead customer",
            "example": "Max"
          },
          "secondFirstname": {
            "type": "string",
            "description": "Second first name of the lead customer",
            "example": "Peter"
          },
          "lastname": {
            "type": "string",
            "description": "Last name of the lead customer",
            "example": "Mustermann"
          },
          "secondLastname": {
            "type": "string",
            "description": "Second last name of the lead customer",
            "example": "Meier"
          },
          "email": {
            "type": "string",
            "description": "Email of the lead customer",
            "example": "example@email.com"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Date of birth of the lead customer",
            "example": "2000-10-10"
          },
          "telephone": {
            "type": "string",
            "description": "Telephone number of the lead customer",
            "example": "5006001112"
          },
          "language": {
            "$ref": "#/components/schemas/Language",
            "description": "Language of the lead customer"
          }
        },
        "required": [
          "email",
          "firstname",
          "lastname"
        ]
      },
      "LeadCreationValidationResult": {
        "type": "object",
        "description": "Result of lead creation validation",
        "properties": {
          "status": {
            "type": "string",
            "description": "Validation status for lead creation",
            "enum": [
              "POSSIBLE",
              "INVALID_LEAD_DATA",
              "DUPLICATE_CUSTOMER"
            ],
            "example": "POSSIBLE",
            "x-enumDescriptions": {
              "POSSIBLE": "Lead creation is possible",
              "INVALID_LEAD_DATA": "Lead data is invalid",
              "DUPLICATE_CUSTOMER": "Customer already exists"
            }
          }
        },
        "required": [
          "status"
        ]
      },
      "LeadCreationResponse": {
        "type": "object",
        "description": "Response of Lead creation",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique ID of the lead",
            "example": 1246358530
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "The unique ID of the customer",
            "example": 9876543210
          },
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "The unique UUID of the created lead",
            "example": "2340b1cc-3fe7-4f81-8eca-f92181dd2bb4"
          },
          "customerNumber": {
            "type": "string",
            "description": "The customer number of the created lead",
            "example": "1-4139"
          }
        },
        "required": [
          "customerId",
          "customerNumber",
          "id",
          "uuid"
        ]
      },
      "AgencyCollectionCaseUpdate": {
        "type": "object",
        "description": "Debt collection case",
        "properties": {
          "agencyCollectionCaseId": {
            "type": "string",
            "description": "ID the agency has assigned to this case",
            "example": "agency-id-123"
          },
          "publicCollectionCaseId": {
            "type": "string",
            "description": "Optional customer facing identifier for this case, if there is one that differs from agencyCollectionCaseId and is used in human correspondence.",
            "example": "case-john-wayne-1"
          },
          "collectionCaseIds": {
            "type": "array",
            "description": "List of collection case ids which we have created, aggregated for that collection case",
            "example": [
              "123e4567-e89b-42d3-a456-556642440000"
            ],
            "items": {
              "type": "string"
            }
          },
          "closure": {
            "$ref": "#/components/schemas/ClosureUpdate",
            "description": "Must be set in case the case has been closed, omit this entirely if the case isn't closed."
          },
          "debts": {
            "type": "array",
            "description": "Debts which were transferred to the agency. At least all changed debts must be included, also unchanged debts can be included.",
            "items": {
              "$ref": "#/components/schemas/DebtUpdate"
            }
          }
        },
        "required": [
          "agencyCollectionCaseId",
          "collectionCaseIds",
          "debts"
        ]
      },
      "ClosureOption": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Additional option key",
            "enum": [
              "WRITE_OFF_REMAINING_DEBTS"
            ],
            "example": "WRITE_OFF_REMAINING_DEBTS",
            "x-enumDescriptions": {
              "WRITE_OFF_REMAINING_DEBTS": "Indicates to the studio that all remaining, unpaid debts should be written off. E.g. if a case is closed due to bankruptcy of the debtor the collection agency can use this to indicate that the remaining debts are uncollectible. Allowed option values: 'true', 'false' (defaults to 'false' if this option isn't set)"
            }
          },
          "value": {
            "type": "string",
            "description": "The option value, see the option key description for allowed values.",
            "example": "value"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ClosureUpdate": {
        "type": "object",
        "description": "Must be set in case the case has been closed",
        "properties": {
          "type": {
            "type": "string",
            "description": "Closure type",
            "enum": [
              "POSITIVE",
              "NEGATIVE",
              "REVERSAL",
              "REJECTION"
            ],
            "example": "POSITIVE",
            "x-enumDescriptions": {
              "POSITIVE": "This should be used, if mostly all or all open debts are paid. A positive closure reverses the dunning level of a customer, if all other debt collection cases are also closed. Closure parameters i.e. write off remaining claims will result into writing of all open claims of this debt collection case.",
              "REJECTION": "This should be used, if the agency does not accept the case. The rejectionReason must be set in this case. It ignores all other closure parameters and will reopen the claims.",
              "NEGATIVE": "This should be used, if none debt is paid or no chance of further collection. A negative closure reverses the dunning level of a customer, if all other debt collection cases are also closed and no claim is open anymore. It will not reverse the dunning level in all other cases. Closure parameters i.e. write off remaining claims will result into writing of all open claims of this debt collection case.",
              "REVERSAL": "This should be used, if there was already progress on the case and no rejection reason can be taken. It ignores all other closure parameters and will reopen the claims."
            }
          },
          "options": {
            "type": "array",
            "description": "Additional settings for case closures",
            "items": {
              "$ref": "#/components/schemas/ClosureOption"
            }
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "Closure date",
            "example": "2022-09-20"
          },
          "rejectionReason": {
            "type": "string",
            "description": "Mandatory if type is REJECTION. This defines why the case was rejected by the agency.",
            "enum": [
              "CLAIMS_ALREADY_IN_COURT",
              "MISSING_COMPENSATION_BLOCKING_DUNNING_PROCESS",
              "NO_INFORMATION_ABOUT_LEGAL_REPRESENTATIVE",
              "NO_COLLECTION_ABROAD_POSSIBLE",
              "COLLECTING_FROM_INHERIT_NOT_POSSIBLE",
              "CLAIMS_TIME_BARRED_OR_RESIDUAL_DEBT_DISCHARGE_GRANTED",
              "REMAINING_CLAIM_BELOW_LIMIT",
              "NOTIFICATION_OBLIGATIONS_NOT_POSSIBLE",
              "FRAUD",
              "CONFLICT_OF_INTEREST",
              "WITHDRAWN_BY_STUDIO",
              "NO_PROCESSING_AT_ALL",
              "HARD_NEGATIVES_IN_DEBTOR_REGISTER",
              "POSTAL_DELIVERY_NOT_POSSIBLE",
              "CLAIM_INCREASE_IMPORTED_SYSTEM"
            ],
            "example": "CLAIMS_ALREADY_IN_COURT",
            "x-enumDescriptions": {
              "CLAIMS_TIME_BARRED_OR_RESIDUAL_DEBT_DISCHARGE_GRANTED": "The claim is no longer enforceable (plea of limitation raised or discharge of residual debt granted).",
              "NO_INFORMATION_ABOUT_LEGAL_REPRESENTATIVE": "The claims in the file are directed against minors, unless another personally liable person (e.g. the parents) is known to Magicline Studio and can be claimed against.",
              "FRAUD": "The obligation was unlawfully entered into by an unknown third party on behalf of the alleged debtor (in particular, deception by a third party as to the identity of the debtor). Evidence within the meaning of this Agreement shall be deemed to have been provided if: (1) real data of third party users have been used to obtain services or (2) the invoice recipient has not become a contractual partner or (3) criminal charges have been filed by Magicline Studio.",
              "MISSING_COMPENSATION_BLOCKING_DUNNING_PROCESS": "The claim depends on a consideration and prevents the execution of the judicial dunning procedure (BGB 688 para. 2 ZPO).",
              "NO_PROCESSING_AT_ALL": "If the file is withdrawn or cancelled from the collection stage within 14 days after handover without being processed by the contractual partner. The contractual partner shall be released from any obligation to pay remuneration. After 14 days, the file can be withdrawn only for one of the other reasons.",
              "NOTIFICATION_OBLIGATIONS_NOT_POSSIBLE": "The statutory information and notification obligations, in particular from Section 13a RDG, cannot be fulfilled.",
              "WITHDRAWN_BY_STUDIO": "There are other comprehensible reasons on the part of the Contractual Partner and/or Magicline Studio.",
              "CLAIM_INCREASE_IMPORTED_CASE": "Claim increase on file from old system (ES; ugly; etc).",
              "HARD_NEGATIVES_IN_DEBTOR_REGISTER": "There are already hard negatives in the debtor register and a court order would be unsuccessful.",
              "NO_COLLECTION_ABROAD_POSSIBLE": "The claim concerns a debtor living abroad, unless the collection of the claim can be made from Germany.",
              "COLLECTING_FROM_INHERIT_NOT_POSSIBLE": "The claim is directed against an unknown heir who cannot be readily identified by inquiry at the probate court and civil status register.",
              "REMAINING_CLAIM_BELOW_LIMIT": "The (residual) principal claim does not exceed EUR 10.",
              "CONFLICT_OF_INTEREST": "There is a conflict of interest that cannot be resolved with the contractual partner or the lawyers to be commissioned by the contractual partner.",
              "CLAIMS_ALREADY_IN_COURT": "A legal dispute is already pending regarding the claim, in which Magicline Studio is not represented by the contract partner's joint attorneys.",
              "POSTAL_DELIVERY_NOT_POSSIBLE": "No postal delivery can be made on the basis of the membership data provided, and an address search is also unsuccessful."
            }
          },
          "closureReason": {
            "type": "string",
            "description": "Optional closure reason.",
            "example": "Not successful due to mail not successfully delivered"
          }
        },
        "required": [
          "date",
          "type"
        ]
      },
      "DebtCollectionUpdate": {
        "type": "object",
        "description": "Debt collection update details",
        "properties": {
          "debtors": {
            "type": "array",
            "description": "List of debtors with their payments",
            "items": {
              "$ref": "#/components/schemas/DebtorUpdate"
            }
          },
          "requestId": {
            "type": "string",
            "description": "Request unique UUID id",
            "example": "fc336b0b-409c-4c66-a26d-ab25b87dcb8f"
          }
        },
        "required": [
          "debtors",
          "requestId"
        ]
      },
      "DebtUpdate": {
        "type": "object",
        "description": "Debts which were transferred to the agency. At least all changed debts must be included, also unchanged debts can be included.",
        "properties": {
          "debtId": {
            "type": "string",
            "description": "Debt id from the Transfer, identifying a debt, in UUID format",
            "example": "123e4567-e89b-42d3-a456-556642440000"
          },
          "originalAmount": {
            "type": "number",
            "description": "Transferred amount to debt collection agency. Cancelled amount + paid amount should not be higher than original amount.",
            "example": 100
          },
          "canceledAmount": {
            "type": "number",
            "deprecated": true,
            "description": "Not accepted amount. If the case is closed and writeOffRemainingDebts is set, they will be written off and not opened again.",
            "example": 0
          },
          "paidAmount": {
            "type": "number",
            "description": "Paid amount, the status should always contain the amount which was paid to the debt collection agency. If paidAmount is higher than original amount, the loose rest will still be booked to the debtor.",
            "example": 100
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency of the debt code",
            "example": "EUR"
          },
          "block": {
            "$ref": "#/components/schemas/OpenApiV1BlockDto",
            "description": "Option to block the debt for future collection cases. If no block is sent an existing block will be removed."
          }
        },
        "required": [
          "currency",
          "debtId",
          "originalAmount",
          "paidAmount"
        ]
      },
      "DebtorUpdate": {
        "type": "object",
        "description": "Debtor with his payments",
        "properties": {
          "debtorId": {
            "type": "string",
            "description": "Debtor unique id",
            "example": "2334545"
          },
          "agencyCollectionCases": {
            "type": "array",
            "description": "List of debt collection cases",
            "items": {
              "$ref": "#/components/schemas/AgencyCollectionCaseUpdate"
            }
          },
          "block": {
            "$ref": "#/components/schemas/OpenApiV1BlockDto",
            "description": "Option to block the debtor for future collection cases. If no block is sent an existing block will be removed."
          }
        },
        "required": [
          "agencyCollectionCases",
          "debtorId"
        ]
      },
      "OpenApiV1BlockDto": {
        "type": "object",
        "properties": {
          "limitType": {
            "type": "string",
            "description": "Option to set customer or debt to blocklist",
            "enum": [
              "DISABLED",
              "LIMITED",
              "UNLIMITED"
            ],
            "example": "LIMITED",
            "x-enumDescriptions": {
              "DISABLED": "Customer or Debt will be removed from block list",
              "LIMITED": "Customer or Debt will added to block list until given date",
              "UNLIMITED": "Customer or Debt will added to block list indefinitely"
            }
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "Block customer or debt until",
            "example": "2022-09-20"
          }
        },
        "required": [
          "endDate",
          "limitType"
        ]
      },
      "CustomerWeighings": {
        "type": "object",
        "description": "Customer weighing details",
        "properties": {
          "databaseId": {
            "type": "integer",
            "format": "int64",
            "description": "Database id of the weighing"
          },
          "basalMetabolicRate": {
            "type": "number",
            "description": "Basal metabolic rate"
          },
          "bodyFatMass": {
            "type": "number",
            "description": "Body fat mass in kg"
          },
          "bodyMassIndex": {
            "type": "number",
            "description": "Body mass index in kg/m^2"
          },
          "fatFreeMass": {
            "type": "number",
            "description": "Total fat free mass (aka Lean Body Mass) in kg"
          },
          "percentBodyFat": {
            "type": "number",
            "description": "Body fat in percent"
          },
          "percentSkeletalMuscleMass": {
            "type": "number",
            "description": "Skeletal muscle mass in percent"
          },
          "skeletalMuscleMass": {
            "type": "number",
            "description": "Skeletal muscle mass in kg"
          },
          "totalBodyWater": {
            "type": "number",
            "description": "Total body water in liters"
          },
          "visceralFatLevel": {
            "type": "integer",
            "format": "int32",
            "description": "Visceral fat level (1-9)"
          },
          "weight": {
            "type": "number",
            "description": "Body weight in kg"
          },
          "height": {
            "type": "number",
            "description": "Body height in cm"
          },
          "bfmLeftArm": {
            "type": "number",
            "description": "Body Fat Mass of the left arm in kg"
          },
          "bfmLeftLeg": {
            "type": "number",
            "description": "Body Fat Mass of the left leg in kg"
          },
          "bfmPercentLeftArm": {
            "type": "number",
            "description": "Body Fat Mass of the left arm in percent"
          },
          "bfmPercentLeftLeg": {
            "type": "number",
            "description": "Body Fat Mass of the left leg in percent"
          },
          "bfmPercentRightArm": {
            "type": "number",
            "description": "Body Fat Mass of the right arm in percent"
          },
          "bfmPercentRightLeg": {
            "type": "number",
            "description": "Body Fat Mass of the right leg in percent"
          },
          "bfmPercentTrunk": {
            "type": "number",
            "description": "Body Fat Mass of the trunk in percent"
          },
          "bfmRightArm": {
            "type": "number",
            "description": "Body Fat Mass of the right arm in kg"
          },
          "bfmRightLeg": {
            "type": "number",
            "description": "Body Fat Mass of the right leg in kg"
          },
          "bfmTrunk": {
            "type": "number",
            "description": "Body Fat Mass of the trunk in kg"
          },
          "ffmLeftArm": {
            "type": "number",
            "description": "Fat Free Mass of the left arm in kg"
          },
          "ffmLeftLeg": {
            "type": "number",
            "description": "Fat Free Mass of the left leg in kg"
          },
          "ffmPercentLeftArm": {
            "type": "number",
            "description": "Fat Free Mass of the left arm in percent"
          },
          "ffmPercentLeftLeg": {
            "type": "number",
            "description": "Fat Free Mass of the left leg in percent"
          },
          "ffmPercentRightArm": {
            "type": "number",
            "description": "Fat Free Mass of the right arm in percent"
          },
          "ffmPercentRightLeg": {
            "type": "number",
            "description": "Fat Free Mass of the right leg in percent"
          },
          "ffmPercentTrunk": {
            "type": "number",
            "description": "Fat Free Mass of the trunk in percent"
          },
          "ffmRightArm": {
            "type": "number",
            "description": "Fat Free Mass of the right arm in kg"
          },
          "ffmRightLeg": {
            "type": "number",
            "description": "Fat Free Mass of the right leg in kg"
          },
          "ffmTrunk": {
            "type": "number",
            "description": "Fat Free Mass of the trunk in kg"
          },
          "rawResults": {
            "type": "string",
            "description": "The raw results. Might be passed back to partner-provided widgets"
          }
        },
        "required": [
          "rawResults"
        ]
      },
      "OpenApiV1CustomerStudioSwitchRequestDto": {
        "type": "object",
        "properties": {
          "targetStudioId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the studio to be switched to",
            "example": 123456789
          },
          "switchDate": {
            "type": "string",
            "format": "date",
            "description": "Date of the switch. The date must be the current date or in the past",
            "example": "2024-01-01"
          },
          "description": {
            "type": "string",
            "description": "A description of the studio switch that will be stored in the customer history"
          }
        },
        "required": [
          "switchDate",
          "targetStudioId"
        ]
      },
      "OpenApiV1CustomerPaymentAmendment": {
        "type": "object",
        "properties": {
          "accountHolder": {
            "type": "string",
            "description": "The account holder of the bank account",
            "example": "Sven Hannawald"
          },
          "bankName": {
            "type": "string",
            "description": "Name of the bank",
            "example": "Deutsche Bank"
          },
          "iban": {
            "type": "string",
            "description": "Iban of the clients account",
            "example": "DE91 1000 0000 0123 4567 89"
          },
          "bic": {
            "type": "string",
            "description": "Bic of the clients account",
            "example": "DEUTDEFFXXX"
          },
          "signature": {
            "$ref": "#/components/schemas/Signature"
          }
        },
        "required": [
          "accountHolder",
          "bankName",
          "bic",
          "iban"
        ]
      },
      "OpenApiV1CustomerDataPendingAmendmentDtoCustomerPaymentData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Amendment proposal id"
          },
          "accountHolder": {
            "type": "string",
            "description": "The account holder of the bank account",
            "example": "Sven Hannawald"
          },
          "bankName": {
            "type": "string",
            "description": "Name of the bank",
            "example": "Deutsche Bank"
          },
          "iban": {
            "type": "string",
            "description": "Iban of the clients account",
            "example": "DE91 1000 0000 0123 4567 89"
          },
          "bic": {
            "type": "string",
            "description": "Bic of the clients account",
            "example": "DEUTDEFFXXX"
          },
          "requireSignature": {
            "type": "boolean",
            "description": "Is customer signature required to make amendment",
            "example": true
          }
        }
      },
      "CustomerMasterData": {
        "type": "object",
        "description": "Representing customer master data",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name of the customer",
            "example": "Edgar"
          },
          "lastName": {
            "type": "string",
            "description": "Surname of the customer",
            "example": "Bullock"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Birthday of the customer",
            "example": "1952-05-04"
          },
          "countryOfBirth": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Birth country of the customer",
            "example": "DE"
          },
          "customerTitle": {
            "type": "string",
            "description": "Title of the customer",
            "enum": [
              "NONE",
              "DR",
              "PROF"
            ],
            "example": "DR",
            "x-enumDescriptions": {
              "NONE": "No title",
              "PROF": "Professor title",
              "DR": "Ph.D. title"
            }
          }
        },
        "required": [
          "customerTitle",
          "dateOfBirth",
          "firstName",
          "gender",
          "lastName"
        ]
      },
      "OpenApiV1CustomerDataPendingAmendmentDtoCustomerMasterData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Amendment proposal id"
          },
          "firstName": {
            "type": "string",
            "description": "First name of the customer",
            "example": "Edgar"
          },
          "lastName": {
            "type": "string",
            "description": "Surname of the customer",
            "example": "Bullock"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Birthday of the customer",
            "example": "1952-05-04"
          },
          "countryOfBirth": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Birth country of the customer",
            "example": "DE"
          },
          "customerTitle": {
            "type": "string",
            "description": "Title of the customer",
            "enum": [
              "NONE",
              "DR",
              "PROF"
            ],
            "example": "DR",
            "x-enumDescriptions": {
              "NONE": "No title",
              "PROF": "Professor title",
              "DR": "Ph.D. title"
            }
          }
        },
        "required": [
          "customerTitle",
          "dateOfBirth",
          "firstName",
          "gender",
          "lastName"
        ]
      },
      "CustomerContactData": {
        "type": "object",
        "description": "Representing customer contact data",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the customer",
            "example": "email@example.com"
          },
          "phonePrivate": {
            "type": "string",
            "description": "Private phone number of the customer",
            "example": "+49 00000000"
          },
          "phonePrivateMobile": {
            "type": "string",
            "description": "Private mobile phone number of the customer",
            "example": "+49 00000000000"
          },
          "phoneBusiness": {
            "type": "string",
            "description": "Business phone number of the customer",
            "example": "+49 00000000"
          },
          "phoneBusinessMobile": {
            "type": "string",
            "description": "Business mobile phone number of the customer",
            "example": "+49 00000000000"
          }
        }
      },
      "OpenApiV1CustomerDataPendingAmendmentDtoCustomerContactData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Amendment proposal id"
          },
          "email": {
            "type": "string",
            "description": "Email address of the customer",
            "example": "email@example.com"
          },
          "phonePrivate": {
            "type": "string",
            "description": "Private phone number of the customer",
            "example": "+49 00000000"
          },
          "phonePrivateMobile": {
            "type": "string",
            "description": "Private mobile phone number of the customer",
            "example": "+49 00000000000"
          },
          "phoneBusiness": {
            "type": "string",
            "description": "Business phone number of the customer",
            "example": "+49 00000000"
          },
          "phoneBusinessMobile": {
            "type": "string",
            "description": "Business mobile phone number of the customer",
            "example": "+49 00000000000"
          }
        }
      },
      "CustomerAddressData": {
        "type": "object",
        "description": "Representing customer address data",
        "properties": {
          "street": {
            "type": "string",
            "description": "Street of the customer",
            "example": "Am Bahnhof"
          },
          "houseNumber": {
            "type": "string",
            "description": "Number of the customer's house",
            "example": "90"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the customer",
            "example": "12133"
          },
          "city": {
            "type": "string",
            "description": "City of the customer",
            "example": "Munich"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country of the customer",
            "example": "DE"
          },
          "province": {
            "type": "string",
            "description": "Province for southern Europe/US countries",
            "example": "Madrid/California"
          },
          "provinceCode": {
            "type": "string",
            "description": "Province code for southern Europe/US countries",
            "example": "MD/CA"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the customer's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the customer's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the customer's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the customer's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the customer's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the customer's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the customer's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the customer's address",
            "example": "Door 1"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the customer's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the customer's address",
            "example": "2nd floor"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name",
            "example": "Empire State Building"
          }
        },
        "required": [
          "city",
          "countryCode",
          "street",
          "zipCode"
        ]
      },
      "OpenApiV1CustomerDataPendingAmendmentDtoCustomerAddressData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Amendment proposal id"
          },
          "street": {
            "type": "string",
            "description": "Street of the customer",
            "example": "Am Bahnhof"
          },
          "houseNumber": {
            "type": "string",
            "description": "Number of the customer's house",
            "example": "90"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the customer",
            "example": "12133"
          },
          "city": {
            "type": "string",
            "description": "City of the customer",
            "example": "Munich"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country of the customer",
            "example": "DE"
          },
          "province": {
            "type": "string",
            "description": "Province for southern Europe/US countries",
            "example": "Madrid/California"
          },
          "provinceCode": {
            "type": "string",
            "description": "Province code for southern Europe/US countries",
            "example": "MD/CA"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the customer's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the customer's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the customer's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the customer's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the customer's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the customer's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the customer's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the customer's address",
            "example": "Door 1"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the customer's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the customer's address",
            "example": "2nd floor"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name",
            "example": "Empire State Building"
          }
        },
        "required": [
          "city",
          "countryCode",
          "street",
          "zipCode"
        ]
      },
      "CustomerDocumentUploadResult": {
        "type": "object",
        "description": "Customer's document upload result",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the document",
            "example": 1241246660
          }
        }
      },
      "BookCustomerPaymentRequest": {
        "type": "object",
        "description": "Request to book a payment for a specific customer.",
        "properties": {
          "paymentRequestToken": {
            "type": "string",
            "description": "Payment Request Token obtained by initializing the Universal Payment Component with a User Payment Session created via the OpenAPI. The token must belong to the same customer for whom the OpenAPI user is posting the payment. If the customer does not match the customer scope of the User Payment Session, an error is returned."
          },
          "amount": {
            "$ref": "#/components/schemas/Money",
            "description": "Total monetary amount to be paid, including currency information."
          },
          "debtClaimIds": {
            "type": "array",
            "description": "List of debt claim IDs that will be settled as part of this payment.",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "required": [
          "amount",
          "paymentRequestToken"
        ]
      },
      "BookCustomerPaymentResponse": {
        "type": "object",
        "description": "Response to book a payment for a specific customer."
      },
      "PaymentsUpdateCustomerPaymentInstrumentRequest": {
        "type": "object",
        "description": "Update customer payment instrument request.",
        "properties": {
          "paymentRequestToken": {
            "type": "string",
            "description": "Payment Request Token obtained by initializing the Universal Payment Component with a User Payment Session created via the OpenAPI. The token must belong to the same customer for whom the OpenAPI user is posting the payment. If the customer does not match the customer scope of the User Payment Session, an error is returned."
          }
        },
        "required": [
          "paymentRequestToken"
        ]
      },
      "UpdateCustomerPaymentInstrumentResponseDto": {
        "type": "object",
        "description": "Update customer payment instrument response."
      },
      "CardNumberFormat": {
        "type": "string",
        "default": "DECIMAL",
        "description": "Defines how card numbers are interpreted",
        "enum": [
          "DECIMAL",
          "HEX_MSB",
          "HEX_LSB"
        ]
      },
      "CustomerSearchRequest": {
        "type": "object",
        "description": "Customer search request",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "Substring of customer first name starts from beginning",
            "example": "Edga"
          },
          "lastName": {
            "type": "string",
            "description": "Substring of customer last name starts from beginning",
            "example": "Bull"
          },
          "email": {
            "type": "string",
            "description": "Customer email",
            "example": "example@email.com"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Customer date of birth",
            "example": "1952-05-04"
          },
          "cardNumberFormat": {
            "$ref": "#/components/schemas/CardNumberFormat",
            "default": "DECIMAL"
          }
        }
      },
      "BankAccount": {
        "type": "object",
        "description": "Customer's bank account information",
        "properties": {
          "accountHolder": {
            "type": "string",
            "description": "The account holder of the bank account",
            "example": "Sven Hannawald"
          },
          "bankName": {
            "type": "string",
            "description": "Bank name of the customers",
            "example": "Deutsche Bank"
          },
          "bic": {
            "type": "string",
            "description": "Bic of the customers account",
            "example": "DEUTDEFFXXX"
          },
          "iban": {
            "type": "string",
            "description": "Iban of the customers account",
            "example": "DE91 1000 0000 0123 4567 89"
          }
        }
      },
      "Customer": {
        "type": "object",
        "description": "Customer information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 1001
          },
          "customerNumber": {
            "type": "string",
            "description": "Customer number",
            "example": "1-12345"
          },
          "firstName": {
            "type": "string",
            "description": "First name of the customer",
            "example": "Edgar"
          },
          "secondFirstName": {
            "type": "string",
            "description": "Second first name of the customer",
            "example": "Thomas"
          },
          "lastName": {
            "type": "string",
            "description": "Surname of the customer",
            "example": "Bullock"
          },
          "secondLastName": {
            "type": "string",
            "description": "Second last name of the customer",
            "example": "Meyer"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Birthday of the customer",
            "example": "1952-05-04"
          },
          "email": {
            "type": "string",
            "description": "Email address of the customer",
            "example": "example@email.com"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "street": {
            "type": "string",
            "description": "Street of the customer",
            "example": "Am Bahnhof"
          },
          "houseNumber": {
            "type": "string",
            "description": "Number of the customer's house",
            "example": 89
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the customer",
            "example": "12133"
          },
          "city": {
            "type": "string",
            "description": "City of the customer",
            "example": "Munich"
          },
          "country": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country of the customer",
            "example": "DE"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the customer's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the customer's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the customer's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the customer's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the customer's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the customer's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the customer's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the customer's address",
            "example": "Door 1"
          },
          "province": {
            "type": "string",
            "description": "Province of the customer's address",
            "example": "Champagne"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the customer's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the customer's address",
            "example": "2nd floor"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name",
            "example": "Empire State Building"
          },
          "status": {
            "type": "string",
            "description": "Status of customer",
            "enum": [
              "MEMBER",
              "PROSPECT",
              "FORMER_MEMBER"
            ],
            "example": "MEMBER",
            "x-enumDescriptions": {
              "FORMER_MEMBER": "Customer is a former member",
              "PROSPECT": "Customer without contracts",
              "MEMBER": "Customer with contracts attached"
            }
          },
          "cardNumbers": {
            "type": "array",
            "deprecated": true,
            "description": "UID list of the customer card numbers in expected format. (The new property to use is accessMediums)",
            "example": [
              "1290158199"
            ],
            "items": {
              "type": "string"
            }
          },
          "imageUrl": {
            "type": "string",
            "description": "Url with an image to download. It will expire after 15 minutes",
            "example": "https://example.com"
          },
          "phonePrivate": {
            "type": "string",
            "description": "Private phone number of the customer",
            "example": "+49 30901820"
          },
          "phonePrivateMobile": {
            "type": "string",
            "description": "Private mobile phone number of the customer",
            "example": "+49 15223433333"
          },
          "phoneBusiness": {
            "type": "string",
            "description": "Business phone number of the customer",
            "example": "+49 30901820"
          },
          "phoneBusinessMobile": {
            "type": "string",
            "description": "Business mobile phone number of the customer",
            "example": "+49 15223433333"
          },
          "idlePeriods": {
            "type": "array",
            "description": "List of customer's idle periods",
            "items": {
              "$ref": "#/components/schemas/CustomerIdlePeriod"
            }
          },
          "bankAccount": {
            "$ref": "#/components/schemas/BankAccount",
            "deprecated": true,
            "description": "Customer's bank account information. Deprecated: For fetching bank accounts use the Search customers by payment details endpoint."
          },
          "accessRefusal": {
            "type": "boolean",
            "description": "Indicates whether the customer has an access block currently"
          },
          "accessRestrictions": {
            "type": "array",
            "description": "List of access restrictions of the customer",
            "items": {
              "$ref": "#/components/schemas/AccessRestriction"
            }
          },
          "uuid": {
            "type": "string",
            "description": "Customer's UUID",
            "example": "7be3932c-825b-4401-abff-29e9f9410bc7"
          },
          "referralCode": {
            "type": "string",
            "description": "Customer's referral code",
            "example": "20J6N"
          },
          "studioId": {
            "type": "integer",
            "format": "int64",
            "description": "Studio ID of the customer",
            "example": 1238735970
          },
          "preferredLanguage": {
            "$ref": "#/components/schemas/Language"
          },
          "additionalInformationFieldAssignments": {
            "type": "array",
            "description": "List of additional information field assignments of the customer",
            "items": {
              "$ref": "#/components/schemas/AdditionalInformationFieldAssignment"
            }
          },
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party customer in the third party system",
            "example": "A1000"
          },
          "createdDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Customer's creation date time in ISO-8601 format",
            "example": "2022-06-15T23:59:59.999+02:00[Europe/Berlin]"
          },
          "accessMediums": {
            "type": "array",
            "description": "List of access mediums of the customer",
            "items": {
              "$ref": "#/components/schemas/AccessMediumDto"
            }
          }
        },
        "required": [
          "accessRefusal",
          "id",
          "status"
        ]
      },
      "CustomerIdlePeriod": {
        "type": "object",
        "description": "Idle period information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the idle period",
            "example": 1000
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the idle period",
            "example": "2022-01-01"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the idle period",
            "example": "2022-10-01"
          },
          "reason": {
            "type": "string",
            "description": "Reason of the idle period",
            "example": "Illness"
          },
          "contract": {
            "$ref": "#/components/schemas/SimpleContract"
          },
          "unlimited": {
            "type": "boolean",
            "description": "Indicates whether the idle period is unlimited",
            "example": false
          }
        },
        "required": [
          "endDate",
          "id",
          "startDate",
          "unlimited"
        ]
      },
      "SimpleContract": {
        "type": "object",
        "description": "Contract information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the contract",
            "example": 1000
          },
          "rateName": {
            "type": "string",
            "description": "Rate name for the contract",
            "example": "Premium"
          }
        },
        "required": [
          "id",
          "rateName"
        ]
      },
      "OpenApiV1CustomerCreateResult": {
        "type": "object",
        "description": "The result of the membership signup",
        "properties": {
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 1000
          }
        },
        "required": [
          "customerId"
        ]
      },
      "AchPaymentMethodSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OpenApiV1CustomerPaymentMethodSearchCriteria"
          },
          {
            "type": "object",
            "properties": {
              "bankAccountNumber": {
                "type": "string",
                "description": "Bank account number (masked: first 4 and last 4 digits)",
                "example": "12345678",
                "maxLength": 8,
                "minLength": 8
              },
              "bankLocationId": {
                "type": "string",
                "description": "Bank location ID (Routing Number)",
                "example": "123456789"
              }
            }
          }
        ],
        "description": "Search criteria for ACH payment method",
        "required": [
          "bankAccountNumber",
          "bankLocationId",
          "type"
        ]
      },
      "BacsPaymentMethodSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OpenApiV1CustomerPaymentMethodSearchCriteria"
          },
          {
            "type": "object",
            "properties": {
              "bankAccountNumber": {
                "type": "string",
                "description": "Bank account number (masked: first 4 and last 4 digits)",
                "example": "12345678",
                "maxLength": 8,
                "minLength": 8
              },
              "bankLocationId": {
                "type": "string",
                "description": "Bank location ID (Sort Code)",
                "example": "123456"
              }
            }
          }
        ],
        "description": "Search criteria for BACS payment method",
        "required": [
          "bankAccountNumber",
          "bankLocationId",
          "type"
        ]
      },
      "CreditCardPaymentMethodSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OpenApiV1CustomerPaymentMethodSearchCriteria"
          },
          {
            "type": "object",
            "properties": {
              "creditCardNumber": {
                "type": "string",
                "description": "Credit card number (masked: last 4 digits)",
                "example": "5678",
                "maxLength": 4,
                "minLength": 4
              },
              "expiryDate": {
                "type": "string",
                "description": "Card expiry date (YYYY-MM format)",
                "example": "2025-12"
              },
              "cardHolder": {
                "type": "string",
                "description": "Cardholder name",
                "example": "John Doe"
              }
            }
          }
        ],
        "description": "Search criteria for Credit Card payment method",
        "required": [
          "cardHolder",
          "creditCardNumber",
          "expiryDate",
          "type"
        ]
      },
      "OpenApiV1CustomerPaymentMethodSearchCriteria": {
        "type": "object",
        "discriminator": {
          "propertyName": "type"
        },
        "properties": {
          "cardNumberFormat": {
            "$ref": "#/components/schemas/CardNumberFormat",
            "default": "DECIMAL"
          },
          "type": {
            "type": "string",
            "description": "Payment instrument type supported for search",
            "enum": [
              "ACH",
              "BACS",
              "CREDIT_CARD",
              "SEPA"
            ],
            "example": "ACH",
            "x-enumDescriptions": {
              "BACS": "BACS payment instrument type",
              "SEPA": "SEPA payment instrument type",
              "ACH": "ACH payment instrument type",
              "CREDIT_CARD": "Credit card payment instrument type"
            }
          }
        }
      },
      "SepaPaymentMethodSearchCriteria": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OpenApiV1CustomerPaymentMethodSearchCriteria"
          },
          {
            "type": "object",
            "properties": {
              "bankAccountNumber": {
                "type": "string",
                "description": "Bank account number (IBAN)",
                "example": "DE89370400440532013000"
              }
            }
          }
        ],
        "description": "Search criteria for SEPA payment method",
        "required": [
          "bankAccountNumber",
          "type"
        ]
      },
      "AchPaymentInstrumentDetails": {
        "type": "object",
        "description": "ACH Payment instrument details",
        "properties": {
          "bankAccountNumber": {
            "type": "string",
            "description": "Bank account number (only 4 last digits)",
            "example": "1234"
          },
          "accountHolder": {
            "type": "string",
            "description": "Account holder",
            "example": "Donald Duck"
          },
          "bankLocationId": {
            "type": "string",
            "description": "Bank location id",
            "example": "10000"
          },
          "mandateId": {
            "type": "string",
            "description": "Mandate id",
            "example": "ABC123"
          }
        },
        "title": "ACH"
      },
      "BacsPaymentInstrumentDetails": {
        "type": "object",
        "description": "BACS payment instrument details",
        "properties": {
          "shopperEmail": {
            "type": "string",
            "description": "Shopper email",
            "example": "john.doe@example.com"
          },
          "bankAccountNumber": {
            "type": "string",
            "description": "Bank account number (only 4 last digits)",
            "example": "1234"
          },
          "accountHolder": {
            "type": "string",
            "description": "Account holder",
            "example": "Donald Duck"
          },
          "bankLocationId": {
            "type": "string",
            "description": "Bank location id",
            "example": "10000"
          },
          "mandateId": {
            "type": "string",
            "description": "Mandate id",
            "example": "ABC123"
          }
        },
        "title": "BACS"
      },
      "CreditCardPaymentInstrumentDetails": {
        "type": "object",
        "description": "Credit card payment instrument details",
        "properties": {
          "expiry": {
            "type": "string",
            "description": "Credit card expiry date",
            "example": "2030-03"
          },
          "cardHolder": {
            "type": "string",
            "description": "Card holder",
            "example": "Donald Duck"
          },
          "brand": {
            "type": "string",
            "description": "Brand",
            "example": "VISA"
          },
          "creditCardNumber": {
            "type": "string",
            "description": "Credit card number (only 4 last digits)",
            "example": "1234"
          },
          "issuerCountry": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country code",
            "example": "DE"
          }
        },
        "title": "CREDIT_CARD"
      },
      "CustomerPaymentDetails": {
        "type": "object",
        "description": "Payment details for a customer",
        "properties": {
          "defaultPaymentMethod": {
            "type": "string",
            "description": "Customer's default payment method",
            "enum": [
              "UNDEFINED",
              "CASH",
              "DIRECT_DEBIT",
              "BANK_TRANSFER",
              "CREDIT_CARD",
              "TWINT"
            ],
            "example": "DIRECT_DEBIT",
            "x-enumDescriptions": {
              "DIRECT_DEBIT": "Direct debit payment method",
              "TWINT": "Twint payment method",
              "UNDEFINED": "Payment method is undefined",
              "BANK_TRANSFER": "Bank transfer payment method",
              "CASH": "Cash payment method",
              "CREDIT_CARD": "Credit card payment method"
            }
          },
          "paymentInstruments": {
            "type": "array",
            "description": "Payment instruments assigned to customer",
            "items": {
              "$ref": "#/components/schemas/PaymentInstrument"
            }
          }
        },
        "required": [
          "defaultPaymentMethod"
        ]
      },
      "CustomerWithPaymentDetails": {
        "type": "object",
        "description": "Customer with payment details",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/Customer"
          },
          "paymentDetails": {
            "$ref": "#/components/schemas/CustomerPaymentDetails"
          }
        },
        "required": [
          "customer"
        ]
      },
      "PaymentInstrument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id of payment instrument",
            "example": 1001
          },
          "paymentMethod": {
            "type": "string",
            "description": "Payment method of payment instrument",
            "enum": [
              "UNDEFINED",
              "CASH",
              "DIRECT_DEBIT",
              "BANK_TRANSFER",
              "CREDIT_CARD",
              "TWINT"
            ],
            "example": "DIRECT_DEBIT",
            "x-enumDescriptions": {
              "DIRECT_DEBIT": "Direct debit payment method",
              "TWINT": "Twint payment method",
              "UNDEFINED": "Payment method is undefined",
              "BANK_TRANSFER": "Bank transfer payment method",
              "CASH": "Cash payment method",
              "CREDIT_CARD": "Credit card payment method"
            }
          },
          "type": {
            "type": "string",
            "description": "Payment instrument type",
            "enum": [
              "ACH",
              "BACS",
              "CREDIT_CARD",
              "TWINT",
              "SEPA"
            ],
            "example": "ACH",
            "x-enumDescriptions": {
              "BACS": "BACS payment instrument type",
              "TWINT": "Twint payment instrument type",
              "SEPA": "SEPA payment instrument type",
              "ACH": "ACH payment instrument type",
              "CREDIT_CARD": "Credit card payment instrument type"
            }
          },
          "status": {
            "type": "string",
            "description": "Payment instrument status",
            "enum": [
              "WAITING_FOR_CONFIRMATION",
              "ACTIVE"
            ],
            "example": "ACTIVE",
            "x-enumDescriptions": {
              "ACTIVE": "Payment instrument is active",
              "WAITING_FOR_CONFIRMATION": "Payment instrument is waiting for confirmation"
            }
          },
          "alias": {
            "type": "string",
            "description": "Alias",
            "example": "A01"
          },
          "paymentProvider": {
            "type": "string",
            "description": "Payment provider",
            "example": "ADYEN"
          },
          "details": {
            "$ref": "#/components/schemas/PaymentInstrumentDetails"
          }
        },
        "required": [
          "id",
          "paymentMethod"
        ]
      },
      "PaymentInstrumentDetails": {
        "type": "object",
        "description": "Payment instrument details",
        "oneOf": [
          {
            "$ref": "#/components/schemas/AchPaymentInstrumentDetails"
          },
          {
            "$ref": "#/components/schemas/BacsPaymentInstrumentDetails"
          },
          {
            "$ref": "#/components/schemas/CreditCardPaymentInstrumentDetails"
          },
          {
            "$ref": "#/components/schemas/SepaPaymentInstrumentDetails"
          }
        ]
      },
      "SepaPaymentInstrumentDetails": {
        "type": "object",
        "description": "SEPA payment instrument details",
        "properties": {
          "iban": {
            "type": "string",
            "description": "Iban number",
            "example": "DE89370400440532013000"
          },
          "bic": {
            "type": "string",
            "description": "BIC number",
            "example": "COBADEFFXXX"
          },
          "bankName": {
            "type": "string",
            "description": "Bank name",
            "example": "Deutsche Bank"
          },
          "bankCity": {
            "type": "string",
            "description": "Bank city",
            "example": "Hamburg"
          },
          "bankZip": {
            "type": "string",
            "description": "Bank zip code",
            "example": "12-345"
          },
          "lastValidation": {
            "type": "string",
            "format": "date-time",
            "description": "Last validation date time in ISO-8601 format",
            "example": "2023-12-03T10:15:30+01:00"
          },
          "accountHolder": {
            "type": "string",
            "description": "Account holder",
            "example": "Donald Duck"
          }
        },
        "title": "SEPA"
      },
      "CheckinVoucherRedeem": {
        "type": "object",
        "properties": {
          "voucherCode": {
            "type": "string",
            "description": "Voucher code to redeem",
            "example": "CHVB1-YL29-MYVA"
          },
          "firstname": {
            "type": "string",
            "description": "First name of the lead customer",
            "example": "Max"
          },
          "lastname": {
            "type": "string",
            "description": "Last name of the lead customer",
            "example": "Mustermann"
          },
          "email": {
            "type": "string",
            "description": "Email of the lead customer",
            "example": "example@email.com"
          },
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer",
            "example": 1234567890
          }
        },
        "required": [
          "email",
          "firstname",
          "lastname",
          "onlineOfferId",
          "voucherCode"
        ]
      },
      "OpenApiV1CheckinVoucherRedeemResultDto": {
        "type": "object",
        "description": "The result when redeeming a check-in voucher",
        "properties": {
          "studioAccessCode": {
            "type": "string",
            "description": "Code to checkin to a studio",
            "example": "PTKXPMUO"
          }
        },
        "required": [
          "studioAccessCode"
        ]
      },
      "TermWithMinutes": {
        "type": "object",
        "description": "Represents a term with minutes",
        "properties": {
          "value": {
            "type": "integer",
            "format": "int32",
            "description": "The value of the term with minutes",
            "example": 2
          },
          "unit": {
            "type": "string",
            "description": "Represents a temporal unit with minutes",
            "enum": [
              "MINUTES",
              "HOURS",
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents month unit",
              "HOURS": "Represents a hours unit",
              "YEAR": "Represents year unit",
              "MINUTES": "Represents a minutes unit",
              "WEEK": "Represents week unit",
              "DAY": "Represents day unit"
            }
          }
        },
        "required": [
          "unit",
          "value"
        ]
      },
      "TrialOfferConfig": {
        "type": "object",
        "description": "The trial offer configuration",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The id of the trial offer config",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the trial offer config",
            "example": "Probeangebot"
          },
          "preventMultipleBookingsTerm": {
            "$ref": "#/components/schemas/Term"
          },
          "contingent": {
            "type": "integer",
            "format": "int32",
            "description": "How often a lead can book the trial offer",
            "example": 2
          },
          "confirmationOfBookingTerm": {
            "$ref": "#/components/schemas/TermWithMinutes"
          },
          "allowBookingForLeads": {
            "type": "boolean",
            "description": "Whether booking is allowed for leads",
            "example": true
          },
          "leadDataConfig": {
            "$ref": "#/components/schemas/TrialOfferLeadDataConfig"
          }
        },
        "required": [
          "allowBookingForLeads",
          "contingent",
          "id",
          "leadDataConfig",
          "name",
          "preventMultipleBookingsTerm"
        ]
      },
      "TrialOfferLeadDataConfig": {
        "type": "object",
        "description": "The trial offer lead data configuration",
        "properties": {
          "trialOfferLeadDataConfigId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the trial offer lead data config",
            "example": 1
          },
          "genderMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "dateOfBirthMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "telephoneMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "addressMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          }
        },
        "required": [
          "addressMode",
          "dateOfBirthMode",
          "genderMode",
          "telephoneMode",
          "trialOfferLeadDataConfigId"
        ]
      },
      "Class": {
        "type": "object",
        "description": "Representation of a class",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the class",
            "example": 1001
          },
          "title": {
            "type": "string",
            "description": "Title of the class",
            "example": "Mission Beach body"
          },
          "type": {
            "type": "string",
            "description": "Defines whether a class is held in the studio or virtually",
            "enum": [
              "STUDIO",
              "STREAM"
            ],
            "example": "STUDIO"
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration of the class in minutes",
            "example": 45
          },
          "category": {
            "type": "string",
            "description": "Category of the class",
            "example": "Fitness"
          },
          "description": {
            "type": "string",
            "description": "Description of the class",
            "example": "Get your body ready for beaches"
          },
          "imgUrl": {
            "type": "string",
            "description": "Image URL assigned to display this class"
          },
          "bookable": {
            "type": "boolean",
            "description": "Whether this class can be booked"
          },
          "cancelCondition": {
            "$ref": "#/components/schemas/ClassCancelationCondition"
          }
        },
        "required": [
          "bookable",
          "id"
        ]
      },
      "ClassCancelationCondition": {
        "type": "object",
        "description": "Cancelation condition of a class",
        "properties": {
          "cancelationAfterLatestPossible": {
            "type": "boolean",
            "description": "Whether cancelation after latest term is possible",
            "example": true
          },
          "latestCancelTerm": {
            "$ref": "#/components/schemas/TermWithMinutes",
            "description": "The latest term before which the class can be canceled"
          }
        }
      },
      "TrialOfferClass": {
        "type": "object",
        "properties": {
          "trialOfferConfigId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the trial offer class",
            "example": 1
          },
          "trialOfferClass": {
            "$ref": "#/components/schemas/Class",
            "description": "Trial offer class"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "trialOfferClass",
          "trialOfferConfigId"
        ]
      },
      "TrialOfferClassesSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of trial offer classes",
            "items": {
              "$ref": "#/components/schemas/TrialOfferClass"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query (last ID of the class)",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "BasicClass": {
        "type": "object",
        "description": "Basic information of a class",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the class",
            "example": 1001
          },
          "title": {
            "type": "string",
            "description": "Title of the class",
            "example": "Mission Beach body"
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration of the class in minutes",
            "example": 45
          },
          "category": {
            "type": "string",
            "description": "Category of the class",
            "example": "Fitness"
          },
          "description": {
            "type": "string",
            "description": "Description of the class",
            "example": "Get your body ready for beaches"
          }
        },
        "required": [
          "id"
        ]
      },
      "ClassSlot": {
        "type": "object",
        "description": "Basic class slot information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of a class slot",
            "example": 1001
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Class slot start date and time with zone",
            "example": "2022-06-22T08:00:00.000+02:00[Europe/Berlin]"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Class slot end date and time with zone",
            "example": "2022-06-22T09:00:00.000+02:00[Europe/Berlin]"
          },
          "classInformation": {
            "$ref": "#/components/schemas/BasicClass"
          },
          "instructors": {
            "type": "array",
            "description": "List of instructors",
            "items": {
              "$ref": "#/components/schemas/Instructor"
            }
          },
          "location": {
            "$ref": "#/components/schemas/Location"
          },
          "earliestBookingDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Class slot earliest booking date and time with zone",
            "example": "2022-06-15T00:00:00.000+02:00[Europe/Berlin]"
          },
          "latestBookingDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Class slot latest booking date and time with zone",
            "example": "2022-06-15T23:59:59.999+02:00[Europe/Berlin]"
          },
          "maxParticipants": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum participants allowed for a class slot",
            "example": 25
          },
          "maxWaitingListParticipants": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of waiting list participants allowed for a class slot",
            "example": 5
          },
          "bookedParticipants": {
            "type": "integer",
            "format": "int32",
            "description": "Current number of booked participants of a class slot",
            "example": 25
          },
          "additionalParticipants": {
            "type": "integer",
            "format": "int32",
            "description": "Additional participants added by the operator",
            "example": 5
          },
          "waitingListParticipants": {
            "type": "integer",
            "format": "int32",
            "description": "Current number of waiting list participants of a class slot",
            "example": 2
          },
          "bookable": {
            "type": "boolean",
            "description": "Whether this class slot can be booked"
          }
        },
        "required": [
          "additionalParticipants",
          "id"
        ]
      },
      "ClassSlotSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of class slots",
            "items": {
              "$ref": "#/components/schemas/ClassSlot"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "Location": {
        "type": "object",
        "description": "Represents location data",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the location",
            "example": 203
          },
          "name": {
            "type": "string",
            "description": "Name of the location",
            "example": "Room 1"
          },
          "description": {
            "type": "string",
            "description": "Description of the location",
            "example": "Room located behind reception"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "BookableAppointment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the bookable appointment",
            "example": 1001
          },
          "title": {
            "type": "string",
            "description": "Title of the bookable appointment",
            "example": "Mission Beach body"
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration of the bookable appointment in minutes",
            "example": 45
          },
          "category": {
            "type": "string",
            "description": "Category of the bookable appointment",
            "example": "Fitness"
          },
          "description": {
            "type": "string",
            "description": "Description of the bookable appointment",
            "example": "Get your body ready for beaches"
          },
          "imgUrl": {
            "type": "string",
            "description": "Image URL assigned to display this bookable appointment"
          }
        },
        "required": [
          "id"
        ]
      },
      "BookableTrialOfferAppointment": {
        "type": "object",
        "properties": {
          "trialOfferConfigId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the trial offer configuration containing the bookable trial offer appointment",
            "example": 1
          },
          "trialOfferBookableAppointment": {
            "$ref": "#/components/schemas/BookableAppointment",
            "description": "Trial offer bookable appointment"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          }
        },
        "required": [
          "trialOfferBookableAppointment",
          "trialOfferConfigId"
        ]
      },
      "BookableTrialOfferAppointmentsSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of bookable trial offer appointments",
            "items": {
              "$ref": "#/components/schemas/BookableTrialOfferAppointment"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query (last ID of the bookable appointment)",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "BookableAppointmentSlot": {
        "type": "object",
        "properties": {
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Start date time of the bookable appointment slot",
            "example": "2022-06-22T08:00:00.000+02:00[Europe/Berlin]"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "End date time of the bookable appointment slot",
            "example": "2022-06-22T10:00:00.000+02:00[Europe/Berlin]"
          },
          "instructors": {
            "type": "array",
            "description": "List of instructors",
            "items": {
              "$ref": "#/components/schemas/Instructor"
            }
          }
        }
      },
      "TaxAdvisorExportDownload": {
        "type": "object",
        "description": "Meta data about the tax advisor export like the download URL",
        "properties": {
          "fromDate": {
            "type": "string",
            "format": "date",
            "description": "Bookings accounting date range start",
            "example": "2020-12-15"
          },
          "toDate": {
            "type": "string",
            "format": "date",
            "description": "Bookings accounting date range end",
            "example": "2020-12-30"
          },
          "exportFileFormat": {
            "type": "string",
            "description": "The file format of the export",
            "enum": [
              "JSON",
              "CSV",
              "XLSX"
            ],
            "example": "JSON",
            "x-enumDescriptions": {
              "XLSX": "Microsoft Excel",
              "CSV": "Comma Separated Values",
              "JSON": "JavaScript Object Notation"
            }
          },
          "exportFormat": {
            "type": "string",
            "description": "The export format of bookings",
            "enum": [
              "SINGLE",
              "AGGREGATED"
            ],
            "example": "AGGREGATED",
            "x-enumDescriptions": {
              "SINGLE": "Contains all bookings as a single unit",
              "AGGREGATED": "Bookings are aggregated by account numbers"
            }
          },
          "exportLocale": {
            "type": "string",
            "description": "The locale of the export.",
            "enum": [
              "ENGLISH",
              "GERMAN"
            ],
            "example": "ENGLISH",
            "x-enumDescriptions": {
              "ENGLISH": "English",
              "GERMAN": "German"
            }
          },
          "downloadUrl": {
            "type": "string",
            "description": "The download file URL of the export. It will expire after 15 minutes."
          }
        },
        "required": [
          "downloadUrl",
          "exportFileFormat",
          "exportFormat",
          "fromDate",
          "toDate"
        ]
      },
      "StudioUtilization": {
        "type": "object",
        "description": "Studio utilization details",
        "properties": {
          "capacity": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum customers allowed into a facility, if set to null there is no capacity restriction",
            "example": 100
          },
          "count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of currently checked in customers of a facility, count can be higher than capacity",
            "example": 10
          }
        },
        "required": [
          "count"
        ]
      },
      "Availability": {
        "type": "object",
        "description": "Time availability for a specific day of the week",
        "properties": {
          "dayOfWeek": {
            "type": "string",
            "description": "Day of the week",
            "enum": [
              "MONDAY",
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY",
              "FRIDAY",
              "SATURDAY",
              "SUNDAY"
            ],
            "example": "MONDAY"
          },
          "timeFrom": {
            "type": "string",
            "format": "time",
            "description": "Start time in ISO-8601 format",
            "example": "06:00:00"
          },
          "timeTo": {
            "type": "string",
            "format": "time",
            "description": "End time in ISO-8601 format",
            "example": "23:00:00"
          }
        },
        "required": [
          "dayOfWeek",
          "timeFrom",
          "timeTo"
        ]
      },
      "StudioAccessCodeConfiguration": {
        "type": "object",
        "description": "Studio access code configurations",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether or not the access code is enabled"
          }
        }
      },
      "StudioClosingHours": {
        "type": "object",
        "description": "Interval within the studio is closed",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Reason of closure",
            "example": "Public holiday"
          },
          "dateTimeFrom": {
            "type": "string",
            "format": "date-time",
            "description": "Start of the range closing hours",
            "example": "2025-09-21T00:00:00"
          },
          "dateTimeTo": {
            "type": "string",
            "format": "date-time",
            "description": "End of the range closing hours",
            "example": "2025-09-22T00:00:00"
          }
        }
      },
      "StudioInformation": {
        "type": "object",
        "description": "General studio information visible for user",
        "properties": {
          "name": {
            "type": "string",
            "description": "Studio name",
            "example": "Example studio"
          },
          "description": {
            "type": "string",
            "description": "Studio description",
            "example": "Example studio description"
          },
          "country": {
            "type": "string",
            "description": "Studio address' country",
            "example": "Germany"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Studio address' country code",
            "example": "DE"
          },
          "studioId": {
            "type": "integer",
            "format": "int64",
            "description": "Studio Id",
            "example": 123
          },
          "openingDate": {
            "type": "string",
            "format": "date",
            "description": "Studio opening date",
            "example": "2025-06-11"
          },
          "closingDate": {
            "type": "string",
            "format": "date",
            "description": "Studio closing date",
            "example": "2029-01-01"
          },
          "email": {
            "type": "string",
            "description": "Studio email address",
            "example": "operator@example.com"
          },
          "logoUrl": {
            "type": "string",
            "description": "Url to studio logo",
            "example": "https://example.com"
          },
          "telephone": {
            "type": "string",
            "description": "Studio telephone",
            "example": "0831/6901234-10"
          },
          "website": {
            "type": "string",
            "description": "Studio website url",
            "example": "https://example.com"
          },
          "openingHours": {
            "type": "array",
            "description": "Studio internal opening hours",
            "items": {
              "$ref": "#/components/schemas/StudioOpeningHours"
            }
          },
          "publicOpeningHours": {
            "type": "array",
            "description": "Studio public opening hours",
            "items": {
              "$ref": "#/components/schemas/StudioOpeningHours"
            }
          },
          "closingHours": {
            "type": "array",
            "description": "Studio closing hours",
            "items": {
              "$ref": "#/components/schemas/StudioClosingHours"
            }
          },
          "openingHoursCategories": {
            "type": "array",
            "description": "Studio opening hours categories with time restrictions",
            "items": {
              "$ref": "#/components/schemas/StudioOpeningHoursCategory"
            }
          },
          "street": {
            "type": "string",
            "description": "Studio address' street",
            "example": "Kastanienallee"
          },
          "houseNumber": {
            "type": "string",
            "description": "Studio address' house number",
            "example": "83"
          },
          "zip": {
            "type": "string",
            "description": "Studio address' zip code",
            "example": "84439"
          },
          "city": {
            "type": "string",
            "description": "Studio address' city",
            "example": "Berlin"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the studio's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the studio's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the studio's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the studio's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the studio's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the studio's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the studio's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the studio's address",
            "example": "Door 1"
          },
          "province": {
            "type": "string",
            "description": "Province of the studio's address",
            "example": "Champagne"
          },
          "provinceCode": {
            "type": "string",
            "description": "Province code of the studio's address",
            "example": "PC"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the studio's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the studio's address",
            "example": "2nd floor"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name of the studio's address",
            "example": "Empire State Building"
          },
          "accessCodeConfiguration": {
            "$ref": "#/components/schemas/StudioAccessCodeConfiguration"
          },
          "location": {
            "$ref": "#/components/schemas/StudioLocation",
            "description": "Studio location"
          },
          "studioTags": {
            "type": "array",
            "description": "Tags associated with the studio",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          }
        },
        "required": [
          "accessCodeConfiguration",
          "studioId"
        ]
      },
      "StudioLocation": {
        "type": "object",
        "description": "Location of a Studio",
        "properties": {
          "longitude": {
            "type": "number",
            "format": "double",
            "description": "The longitude of the coordination of the location ",
            "example": 9.993682
          },
          "latitude": {
            "type": "number",
            "format": "double",
            "description": "The latitude of the coordination of the location ",
            "example": 53.551086
          }
        }
      },
      "StudioOpeningHours": {
        "type": "object",
        "properties": {
          "dayOfWeekFrom": {
            "type": "string",
            "description": "Start day of given range opening hours",
            "enum": [
              "MONDAY",
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY",
              "FRIDAY",
              "SATURDAY",
              "SUNDAY"
            ]
          },
          "dayOfWeekTo": {
            "type": "string",
            "description": "End day of given range opening hours",
            "enum": [
              "MONDAY",
              "TUESDAY",
              "WEDNESDAY",
              "THURSDAY",
              "FRIDAY",
              "SATURDAY",
              "SUNDAY"
            ]
          },
          "timeFrom": {
            "type": "string",
            "format": "time",
            "description": "Start hour of the range opening hours in ISO-8601 format",
            "example": "06:00:00"
          },
          "timeTo": {
            "type": "string",
            "format": "time",
            "description": "End hour of the range opening hours in ISO-8601 format",
            "example": "23:00:00"
          }
        }
      },
      "StudioOpeningHoursCategory": {
        "type": "object",
        "description": "Opening hours category with specific time restrictions",
        "properties": {
          "categoryId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the opening hours category",
            "example": 1234567890
          },
          "name": {
            "type": "string",
            "description": "Name of the opening hours category",
            "example": "Off-Peak"
          },
          "openingHours": {
            "type": "array",
            "description": "List of opening hours for this category",
            "items": {
              "$ref": "#/components/schemas/Availability"
            }
          }
        },
        "required": [
          "categoryId",
          "name",
          "openingHours"
        ]
      },
      "OnlineOfferCategory": {
        "type": "object",
        "description": "The category of the online offer.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique identifier of the online offer category.",
            "example": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the online offer category.",
            "example": "Memberships"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "OnlineOfferCustomerPurchase": {
        "type": "object",
        "description": "Online offer customer purchase information.",
        "properties": {
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer.",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "Name of the online offer.",
            "example": "Day Ticket Adult"
          },
          "scopeOfUsage": {
            "type": "integer",
            "format": "int32",
            "description": "The number of times the online offer can be used.",
            "example": 1
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "The price amount and currency for the online offer."
          },
          "periodOfUse": {
            "$ref": "#/components/schemas/OnlineOfferPeriodOfUse"
          },
          "type": {
            "type": "string",
            "description": "Describes the type of the online offer.",
            "enum": [
              "CHECK_IN_BASED"
            ],
            "example": "CHECK_IN_BASED",
            "x-enumDescriptions": {
              "CHECK_IN_BASED": "The offer is based on check-ins."
            }
          },
          "category": {
            "$ref": "#/components/schemas/OnlineOfferCategory"
          },
          "onlineOfferPurchaseId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer purchase.",
            "example": 123456
          },
          "purchaseDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date when the online offer was purchased in the timezone of the studio it was purchased in.",
            "example": "2026-01-15T00:00:00+01:00[Europe/Berlin]"
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time",
            "description": "The expiry date of the online offer in the timezone of the studio it was purchased in.",
            "example": "2026-01-15T00:00:00+01:00[Europe/Berlin]"
          },
          "studioAccessCode": {
            "type": "string",
            "description": "Studio access code for the purchased online offer.",
            "example": "ABC123XYZ"
          },
          "studioId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the studio the purchase was made for.",
            "example": 67890
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "description": "The date from which the purchased online offer becomes valid",
            "example": "2026-01-15T00:00:00+01:00[Europe/Berlin]"
          },
          "voucherCode": {
            "type": "string",
            "description": "The voucher code used for the purchase, if any.",
            "example": "VOUCHER-ABC123"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted price of the online offer after applying the voucher."
          },
          "discountValue": {
            "$ref": "#/components/schemas/Money",
            "description": "Discount value of the voucher."
          }
        },
        "required": [
          "name",
          "onlineOfferId",
          "onlineOfferPurchaseId",
          "periodOfUse",
          "price",
          "purchaseDate",
          "scopeOfUsage",
          "studioAccessCode",
          "studioId",
          "type",
          "validFrom"
        ]
      },
      "OnlineOfferPeriodOfUse": {
        "type": "object",
        "description": "Online offer period of use information.",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/TermWithMinutes"
          },
          "type": {
            "type": "string",
            "description": "Describes the period of use type for a online offer.",
            "enum": [
              "ONE_TIME",
              "PERIOD",
              "WHOLE_DAY"
            ],
            "example": "ONE_TIME",
            "x-enumDescriptions": {
              "ONE_TIME": "The offer can be used only once.",
              "PERIOD": "The offer can be used within a specific period.",
              "WHOLE_DAY": "The offer can be used for a whole day."
            }
          }
        },
        "required": [
          "term",
          "type"
        ]
      },
      "OnlineOfferCustomerPurchaseExtended": {
        "type": "object",
        "description": "Additional online offer purchase information.",
        "properties": {
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer.",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "Name of the online offer.",
            "example": "Day Ticket Adult"
          },
          "scopeOfUsage": {
            "type": "integer",
            "format": "int32",
            "description": "The number of times the online offer can be used.",
            "example": 1
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "The price amount and currency for the online offer."
          },
          "periodOfUse": {
            "$ref": "#/components/schemas/OnlineOfferPeriodOfUse"
          },
          "type": {
            "type": "string",
            "description": "Describes the type of the online offer.",
            "enum": [
              "CHECK_IN_BASED"
            ],
            "example": "CHECK_IN_BASED",
            "x-enumDescriptions": {
              "CHECK_IN_BASED": "The offer is based on check-ins."
            }
          },
          "category": {
            "$ref": "#/components/schemas/OnlineOfferCategory"
          },
          "validity": {
            "$ref": "#/components/schemas/Term",
            "description": "Validity term of the online offer."
          },
          "restrictions": {
            "$ref": "#/components/schemas/OnlineOfferRestriction",
            "description": "Restrictions (facility, age and time) applicable to the online offer."
          },
          "onlineOfferPurchaseId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer purchase.",
            "example": 123456
          },
          "purchaseDate": {
            "type": "string",
            "format": "date-time",
            "description": "The date when the online offer was purchased in the timezone of the studio it was purchased in.",
            "example": "2026-01-15T00:00:00+01:00[Europe/Berlin]"
          },
          "expiryDate": {
            "type": "string",
            "format": "date-time",
            "description": "The expiry date of the online offer in the timezone of the studio it was purchased in.",
            "example": "2026-01-15T00:00:00+01:00[Europe/Berlin]"
          },
          "studioAccessCode": {
            "type": "string",
            "description": "Studio access code for the purchased online offer.",
            "example": "ABC123XYZ"
          },
          "studioId": {
            "type": "integer",
            "format": "int64",
            "description": "The ID of the studio the purchase was made for.",
            "example": 67890
          },
          "validFrom": {
            "type": "string",
            "format": "date-time",
            "description": "The date from which the purchased online offer becomes valid",
            "example": "2026-01-15T00:00:00+01:00[Europe/Berlin]"
          },
          "voucherCode": {
            "type": "string",
            "description": "The voucher code used for the purchase, if any.",
            "example": "VOUCHER-ABC123"
          },
          "discountedPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Discounted price of the online offer after applying the voucher."
          },
          "discountValue": {
            "$ref": "#/components/schemas/Money",
            "description": "Discount value of the voucher."
          }
        },
        "required": [
          "name",
          "onlineOfferId",
          "onlineOfferPurchaseId",
          "periodOfUse",
          "price",
          "purchaseDate",
          "restrictions",
          "scopeOfUsage",
          "studioAccessCode",
          "studioId",
          "type",
          "validFrom"
        ]
      },
      "OnlineOfferRestriction": {
        "type": "object",
        "description": "Restrictions for an online offer",
        "properties": {
          "minAge": {
            "type": "integer",
            "format": "int32",
            "description": "Minimum age for the online offer",
            "example": 18
          },
          "studioAccessType": {
            "type": "string",
            "description": "Describes the studio access type for an online offer.",
            "enum": [
              "MAIN_STUDIO",
              "ALL_STUDIOS",
              "RESTRICTED_STUDIOS"
            ],
            "example": "ALL_STUDIOS",
            "x-enumDescriptions": {
              "MAIN_STUDIO": "Access is restricted to the main studio.",
              "ALL_STUDIOS": "Access is granted to all studios.",
              "RESTRICTED_STUDIOS": "Access is restricted to a specific list of studios."
            }
          },
          "restrictedStudioIds": {
            "type": "array",
            "description": "List of studio IDs where the offer is available",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "uniqueItems": true
          },
          "timeRestrictions": {
            "$ref": "#/components/schemas/TimeRestrictions"
          }
        },
        "required": [
          "minAge",
          "restrictedStudioIds",
          "studioAccessType",
          "timeRestrictions"
        ]
      },
      "OpeningHoursCategory": {
        "type": "object",
        "description": "Opening hours category information",
        "properties": {
          "categoryId": {
            "type": "integer",
            "format": "int64",
            "description": "ID of the opening hours category",
            "example": 1234567890
          },
          "name": {
            "type": "string",
            "description": "Name of the opening hours category",
            "example": "Off-Peak"
          }
        },
        "required": [
          "categoryId",
          "name"
        ]
      },
      "TimeRestrictions": {
        "type": "object",
        "description": "Time restrictions for offer based on opening hours category",
        "properties": {
          "openingHoursCategory": {
            "$ref": "#/components/schemas/OpeningHoursCategory",
            "description": "Opening hours category that defines these restrictions"
          },
          "availabilities": {
            "type": "array",
            "description": "List of availabilities for this offer",
            "items": {
              "$ref": "#/components/schemas/Availability"
            }
          }
        }
      },
      "OnlineOffer": {
        "type": "object",
        "description": "Online offer information.",
        "properties": {
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer.",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "Name of the online offer.",
            "example": "Day Ticket Adult"
          },
          "scopeOfUsage": {
            "type": "integer",
            "format": "int32",
            "description": "The number of times the online offer can be used.",
            "example": 1
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "The price amount and currency for the online offer."
          },
          "periodOfUse": {
            "$ref": "#/components/schemas/OnlineOfferPeriodOfUse"
          },
          "type": {
            "type": "string",
            "description": "Describes the type of the online offer.",
            "enum": [
              "CHECK_IN_BASED"
            ],
            "example": "CHECK_IN_BASED",
            "x-enumDescriptions": {
              "CHECK_IN_BASED": "The offer is based on check-ins."
            }
          },
          "category": {
            "$ref": "#/components/schemas/OnlineOfferCategory"
          }
        },
        "required": [
          "name",
          "onlineOfferId",
          "periodOfUse",
          "price",
          "scopeOfUsage",
          "type"
        ]
      },
      "OnlineOfferSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of online offers",
            "items": {
              "$ref": "#/components/schemas/OnlineOffer"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query (last ID of the online offers)",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "OnlineOfferExtended": {
        "type": "object",
        "description": "Additional online offer information.",
        "properties": {
          "onlineOfferId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the online offer.",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "Name of the online offer.",
            "example": "Day Ticket Adult"
          },
          "scopeOfUsage": {
            "type": "integer",
            "format": "int32",
            "description": "The number of times the online offer can be used.",
            "example": 1
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "The price amount and currency for the online offer."
          },
          "periodOfUse": {
            "$ref": "#/components/schemas/OnlineOfferPeriodOfUse"
          },
          "type": {
            "type": "string",
            "description": "Describes the type of the online offer.",
            "enum": [
              "CHECK_IN_BASED"
            ],
            "example": "CHECK_IN_BASED",
            "x-enumDescriptions": {
              "CHECK_IN_BASED": "The offer is based on check-ins."
            }
          },
          "category": {
            "$ref": "#/components/schemas/OnlineOfferCategory"
          },
          "validity": {
            "$ref": "#/components/schemas/Term",
            "description": "Validity term of the online offer."
          },
          "restrictions": {
            "$ref": "#/components/schemas/OnlineOfferRestriction",
            "description": "Restrictions (facility, age and time) applicable to the online offer."
          },
          "paymentMethods": {
            "type": "array",
            "description": "Payment methods available for the online offer.",
            "items": {
              "type": "string",
              "description": "Describes the payment method for the online offer.",
              "enum": [
                "ONLINE_PAYMENT",
                "PAY_LATER"
              ],
              "example": "ONLINE_PAYMENT",
              "x-enumDescriptions": {
                "ONLINE_PAYMENT": "The offer requires immediate online payment.",
                "PAY_LATER": "The offer allows for payment at a later time."
              }
            }
          }
        },
        "required": [
          "name",
          "onlineOfferId",
          "paymentMethods",
          "periodOfUse",
          "price",
          "restrictions",
          "scopeOfUsage",
          "type"
        ]
      },
      "ContractMonthDayToPrice": {
        "type": "object",
        "description": "Represents a mapping from a month day to a price for a contract (that month day).",
        "properties": {
          "monthDay": {
            "type": "object",
            "description": "The month day of the month day to price mapping",
            "properties": {
              "month": {
                "type": "string",
                "enum": [
                  "JANUARY",
                  "FEBRUARY",
                  "MARCH",
                  "APRIL",
                  "MAY",
                  "JUNE",
                  "JULY",
                  "AUGUST",
                  "SEPTEMBER",
                  "OCTOBER",
                  "NOVEMBER",
                  "DECEMBER"
                ]
              },
              "monthValue": {
                "type": "integer",
                "format": "int32"
              },
              "dayOfMonth": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "monthDay",
          "price"
        ]
      },
      "ContractPaymentFrequency": {
        "type": "object",
        "description": "Represents the payment frequency of a contract",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the payment frequency of a contract",
            "example": 203
          },
          "type": {
            "type": "string",
            "description": "Payment frequency type of a contract",
            "enum": [
              "FREE",
              "NON_RECURRING",
              "RECURRING",
              "MONTH_DAY",
              "TERM_BASED"
            ],
            "example": "FREE",
            "x-enumDescriptions": {
              "TERM_BASED": "Represents that the contract payment frequency is based on terms, with a possibly individual price per term.",
              "NON_RECURRING": "Represents that the contract payment frequency is non recurring, meaning only one payment is necessary here.",
              "FREE": "Represents that the contract payment frequency is free of charge.",
              "RECURRING": "Represents that the contract payment frequency is recurring, meaning that the payment will take place every term.",
              "MONTH_DAY": "Represents that the contract payment frequency is based on month days, with a possibly individual price per month day."
            }
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "Base price, used only for payment frequencies of type `RECURRING`"
          },
          "monthDaysToPrices": {
            "type": "array",
            "description": "Month day to prices list, used for contract payment frequency type `MONTH_DAY`",
            "items": {
              "$ref": "#/components/schemas/ContractMonthDayToPrice"
            }
          },
          "termsToPrices": {
            "type": "array",
            "description": "Terms to prices list, used for contract payment frequency type `TERM_BASED`. Note that the price will become active AFTER the respective term has passed",
            "items": {
              "$ref": "#/components/schemas/ContractTermToPrice"
            }
          }
        },
        "required": [
          "type"
        ]
      },
      "ContractStatus": {
        "type": "string",
        "description": "The contracts desired or current status",
        "enum": [
          "ACTIVE",
          "INACTIVE"
        ],
        "example": "ACTIVE",
        "x-enumDescriptions": {
          "ACTIVE": "Identifies active contracts",
          "INACTIVE": "Identifies inactive contracts"
        }
      },
      "ContractTermToPrice": {
        "type": "object",
        "description": "Represents a mapping from a term to a price for a contract.",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "price",
          "term"
        ]
      },
      "MembershipSelfServiceContractData": {
        "type": "object",
        "description": "Contract information for customers main contracts",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the contract",
            "example": 1000
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the contract",
            "example": "2022-01-15"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the contract",
            "example": "2025-10-15"
          },
          "rateName": {
            "type": "string",
            "description": "Name of the contract rate",
            "example": "Premium"
          },
          "contractStatus": {
            "$ref": "#/components/schemas/ContractStatus"
          },
          "cancelationPeriod": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "cancelationStatus": {
            "type": "string",
            "description": "Cancelation status of the contract cancelation",
            "enum": [
              "CANCELED",
              "PENDING_VERIFICATION",
              "PENDING_WITHDRAWAL_VERIFICATION"
            ],
            "example": "PENDING_VERIFICATION",
            "x-enumDescriptions": {
              "PENDING_WITHDRAWAL_VERIFICATION": "The cancelation withdrawal is pending verification.",
              "CANCELED": "The contract was canceled by the customer.",
              "PENDING_VERIFICATION": "The cancelation is pending verification."
            }
          },
          "cancelationDate": {
            "type": "string",
            "format": "date",
            "description": "Date the cancelation of the contract was or will be canceled",
            "example": "2023-01-25"
          },
          "cancelationReason": {
            "type": "string",
            "description": "Name of the reason why the contract was canceled",
            "example": "Officially ordered studio closure"
          },
          "price": {
            "type": "number",
            "deprecated": true,
            "description": "Base price of the contract",
            "example": 19.9
          },
          "priceDetails": {
            "$ref": "#/components/schemas/PriceDetails",
            "description": "Price details of the contract"
          },
          "lastPossibleCancelationDate": {
            "type": "string",
            "format": "date",
            "description": "Latest date the contract can be canceled",
            "example": "2023-01-25"
          },
          "availableCancelationDates": {
            "type": "array",
            "description": "dates the contract can be canceled to",
            "example": [
              "2023-01-25",
              "2023-02-25"
            ],
            "items": {
              "type": "string",
              "format": "date"
            }
          },
          "cancelationOrigin": {
            "type": "string",
            "description": "Cancelation origin of the contract cancelation",
            "enum": [
              "STUDIO",
              "CUSTOMER"
            ],
            "example": "CUSTOMER",
            "x-enumDescriptions": {
              "CUSTOMER": "The contract was canceled by the customer.",
              "STUDIO": "The contract was canceled by the studio. This includes also dunning, contract switch, import, contract voucher withdraw and member cash purchase limit rejection origins."
            }
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of this contract",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          }
        },
        "required": [
          "cancelationStatus",
          "contractStatus",
          "endDate",
          "id",
          "price",
          "priceDetails",
          "rateName",
          "startDate"
        ]
      },
      "PriceDetails": {
        "type": "object",
        "description": "Price details of the contract",
        "properties": {
          "basePrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Base price of the contract"
          },
          "currentPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Current price of the contract. This price takes into account any adjustments that have been made to the base price"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/ContractPaymentFrequency",
            "description": "Payment frequency of the contract"
          }
        },
        "required": [
          "basePrice",
          "currentPrice",
          "paymentFrequency"
        ]
      },
      "RateCode": {
        "type": "object",
        "description": "Represents a rate code.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the rate code",
            "example": "Standard Rate"
          },
          "identifier": {
            "type": "string",
            "description": "Unique identifier for the rate code.",
            "example": "RC12345"
          }
        }
      },
      "TimePeriod": {
        "type": "object",
        "description": "Represents a time period",
        "properties": {
          "periodValue": {
            "type": "integer",
            "format": "int32",
            "description": "Defines how many units a given period lasts",
            "example": 10
          },
          "periodUnit": {
            "type": "string",
            "description": "Unit of the period",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR"
            ],
            "example": "DAY",
            "x-enumDescriptions": {
              "MONTH": "Represents month unit",
              "YEAR": "Represents year unit",
              "WEEK": "Represents a week unit",
              "DAY": "Represents a day unit"
            }
          }
        },
        "required": [
          "periodUnit",
          "periodValue"
        ]
      },
      "MembershipSwitchConfig": {
        "type": "object",
        "description": "Information about the membership switch configuration",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the configuration",
            "example": 1000
          },
          "name": {
            "type": "string",
            "description": "Name of the configuration",
            "example": "Premium Membership Upgrade"
          },
          "presentation": {
            "$ref": "#/components/schemas/MembershipSwitchConfigPresentationDto",
            "description": "Presentation details for the membership switch configuration"
          },
          "sourceContracts": {
            "type": "array",
            "description": "List of source contracts for the membership switch",
            "items": {
              "$ref": "#/components/schemas/MembershipSwitchConfigSourceContractDto"
            }
          }
        },
        "required": [
          "id",
          "name",
          "presentation",
          "sourceContracts"
        ]
      },
      "MembershipSwitchConfigPresentationDto": {
        "type": "object",
        "description": "Membership switch configuration presentation details",
        "properties": {
          "bannerText": {
            "type": "string",
            "description": "Text associated to the configured presentation banner"
          },
          "imageUrl": {
            "type": "string",
            "description": "Image URL of the presentation banner. It will expire after 15 minutes."
          }
        }
      },
      "MembershipSwitchConfigSourceContractDto": {
        "type": "object",
        "description": "Membership switch configuration source contract details",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the source contract rate",
            "example": 1000
          },
          "rateName": {
            "type": "string",
            "description": "Name of the source contract rate",
            "example": "Basic Membership"
          }
        },
        "required": [
          "id",
          "rateName"
        ]
      },
      "ContractPreUseType": {
        "type": "string",
        "description": "Contract pre-use type information.",
        "enum": [
          "NOT_AVAILABLE",
          "CHARGEABLE",
          "FREE"
        ],
        "example": "NOT_AVAILABLE",
        "x-enumDescriptions": {
          "CHARGEABLE": "Contract pre-use is chargeable",
          "FREE": "Contract pre-use is free",
          "NOT_AVAILABLE": "Contract is not available for pre-use"
        }
      },
      "DatePeriod": {
        "type": "object",
        "description": "Represents a date period.",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start of the interval",
            "example": "2025-01-01"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End of the interval",
            "example": "2026-01-01"
          }
        },
        "required": [
          "endDate",
          "startDate"
        ]
      },
      "MembershipOfferExtended": {
        "type": "object",
        "description": "Extended membership offer information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the membership offer."
          },
          "description": {
            "type": "string",
            "description": "Description of the membership offer.",
            "example": "This offer includes access to all gym facilities and group classes."
          },
          "name": {
            "type": "string",
            "description": "Name of the membership offer.",
            "example": "Standard Membership"
          },
          "subDescription": {
            "type": "string",
            "description": "Sub description for the membership offer.",
            "example": "Best value for regular gym-goers."
          },
          "imageUrl": {
            "type": "string",
            "description": "Temporary valid download link for rate bundle image. Expires after 2 hours.",
            "example": "https://example.com"
          },
          "footnote": {
            "type": "string",
            "description": "Contractual or legal comments to be displayed below the offer.",
            "example": "This offer is valid for new members only. Terms and conditions apply."
          },
          "preUseType": {
            "$ref": "#/components/schemas/ContractPreUseType"
          },
          "limitedOfferingPeriod": {
            "$ref": "#/components/schemas/DatePeriod",
            "description": "Period in which the membership offer is valid."
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of the membership offer.",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          },
          "includedModules": {
            "type": "array",
            "description": "List of included modules of this membership offer.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferIncludedModule"
            }
          },
          "contractSignaturesRequired": {
            "type": "boolean",
            "description": "Indicates if contract signatures are required for this membership offer."
          },
          "allowedPaymentChoices": {
            "type": "array",
            "description": "Allowed payment choices for this membership offer.",
            "items": {
              "type": "string",
              "description": "The payment choice",
              "enum": [
                "CASH",
                "BANK_TRANSFER",
                "BACS",
                "SEPA",
                "CH_DD",
                "LSV",
                "CREDIT_CARD",
                "TWINT",
                "PAYPAL",
                "BANCONTACT",
                "IDEAL"
              ],
              "example": "CASH",
              "x-enumDescriptions": {
                "BACS": "Payment by BACS direct debit",
                "IDEAL": "Payment by ideal",
                "PAYPAL": "Payment by paypal",
                "TWINT": "Payment by Twint",
                "SEPA": "Payment by SEPA direct debit",
                "BANK_TRANSFER": "Payment by bank transfer",
                "CH_DD": "Payment by CH_DD direct debit",
                "CASH": "Payment by cash",
                "BANCONTACT": "Payment by bancontact",
                "CREDIT_CARD": "Payment by credit card",
                "LSV": "Payment by LSV direct debit"
              }
            },
            "uniqueItems": true
          },
          "maximumNumberOfSelectableModules": {
            "type": "integer",
            "format": "int32",
            "description": "Maximum number of `selectableModules` for this membership offer. If 0, no modules can be selected."
          },
          "contractTextBlocks": {
            "type": "array",
            "description": "List of contract text blocks that are part of this membership offer.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTextBlock"
            }
          },
          "selectableModules": {
            "type": "array",
            "description": "List of selectable modules for this membership offer. Limited by `maximumNumberOfSelectableModules`.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferModule"
            }
          },
          "terms": {
            "type": "array",
            "description": "List of terms that are part of this membership offer.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTermExtended"
            }
          },
          "timeRestrictions": {
            "$ref": "#/components/schemas/TimeRestrictions",
            "description": "Time restrictions for this membership offer based on opening hours categories. Null if no restrictions apply."
          }
        },
        "required": [
          "allowedPaymentChoices",
          "contractTextBlocks",
          "description",
          "id",
          "includedModules",
          "limitedOfferingPeriod",
          "name",
          "preUseType",
          "rateCodes"
        ]
      },
      "MembershipOfferFlatFee": {
        "type": "object",
        "description": "Represents a flat fee information.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the flat fee",
            "example": "Starter Package"
          },
          "identifier": {
            "type": "string",
            "description": "The identifier of the flat fee",
            "example": "ID12345"
          },
          "formattedPaymentFrequency": {
            "type": "string",
            "description": "The formatted payment frequency of the flat fee",
            "example": "12M"
          },
          "firstBookingDelay": {
            "$ref": "#/components/schemas/Term",
            "description": "The delay before the first booking can be made"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency"
          },
          "starterPackage": {
            "type": "boolean"
          }
        },
        "required": [
          "formattedPaymentFrequency",
          "name"
        ]
      },
      "MembershipOfferIncludedModule": {
        "type": "object",
        "description": "Represents membership offer included module information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the membership offer module.",
            "example": 1234567890
          },
          "name": {
            "type": "string",
            "description": "Name of the membership offer module.",
            "example": "Premium Fitness Package"
          },
          "description": {
            "type": "string",
            "description": "Description of the membership offer module.",
            "example": "Includes access to all gym facilities and group classes."
          },
          "imageUrl": {
            "type": "string",
            "description": "Image url of membership offer module. Expires after 5hours.",
            "example": "https://some-module.com"
          },
          "term": {
            "$ref": "#/components/schemas/MembershipOfferModuleTerm"
          },
          "trialPeriod": {
            "$ref": "#/components/schemas/MembershipOfferTrialPeriod"
          },
          "consentTextBlock": {
            "$ref": "#/components/schemas/MembershipOfferTextBlock"
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of the membership offer module.",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          }
        },
        "required": [
          "description",
          "id",
          "name",
          "term"
        ]
      },
      "MembershipOfferModule": {
        "type": "object",
        "description": "Represents membership offer module information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the membership offer module.",
            "example": 1234567890
          },
          "name": {
            "type": "string",
            "description": "Name of the membership offer module.",
            "example": "Premium Fitness Package"
          },
          "description": {
            "type": "string",
            "description": "Description of the membership offer module.",
            "example": "Includes access to all gym facilities and group classes."
          },
          "imageUrl": {
            "type": "string",
            "description": "Image url of membership offer module. Expires after 5hours.",
            "example": "https://some-module.com"
          },
          "term": {
            "$ref": "#/components/schemas/MembershipOfferModuleTerm"
          },
          "trialPeriod": {
            "$ref": "#/components/schemas/MembershipOfferTrialPeriod"
          },
          "consentTextBlock": {
            "$ref": "#/components/schemas/MembershipOfferTextBlock"
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of the membership offer module.",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency"
          }
        },
        "required": [
          "description",
          "id",
          "name",
          "paymentFrequency",
          "term"
        ]
      },
      "MembershipOfferModuleTerm": {
        "type": "object",
        "description": "Represents the terms of a membership offer.",
        "properties": {
          "extensionType": {
            "type": "string",
            "description": "Module term extension type",
            "enum": [
              "NONE",
              "TERM_EXTENSION",
              "SUBSEQUENT_RATE_DETAIL"
            ],
            "example": "TERM_EXTENSION",
            "x-enumDescriptions": {
              "SUBSEQUENT_RATE_DETAIL": "Subsequent rate detail",
              "TERM_EXTENSION": "Term extension",
              "NONE": "No extension"
            }
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "termExtension": {
            "$ref": "#/components/schemas/Term"
          },
          "cancelationPeriod": {
            "$ref": "#/components/schemas/Term"
          },
          "extensionCancelationPeriod": {
            "$ref": "#/components/schemas/Term"
          }
        },
        "required": [
          "extensionType"
        ]
      },
      "MembershipOfferSubsequentRate": {
        "type": "object",
        "description": "Represents a subsequent rate for a membership offer.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the subsequent rate",
            "example": "Combined fitness and wellness"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency"
          }
        },
        "required": [
          "name",
          "paymentFrequency"
        ]
      },
      "MembershipOfferTermAdjustmentRule": {
        "type": "object",
        "description": "Represents membership offer term adjustment rule.",
        "properties": {
          "defaultDescription": {
            "type": "string",
            "description": "A complete formatted sentence which contains all details about this price adjustment rule. If the presentation should differ use the separate attributes.",
            "example": "Formatted description of price adjustment rule"
          },
          "value": {
            "type": "string",
            "description": "Value of price adjustment rule, might be percentage or amount, depends on `chargeAdjustmentType`",
            "example": "5%"
          },
          "recurrenceFrequency": {
            "type": "string",
            "description": "Recurrence of price adjustment rule, how often and when applies this rule",
            "example": "monthly"
          },
          "type": {
            "type": "string",
            "description": "States how the rule adjusts the price",
            "enum": [
              "RAISE",
              "REDUCTION",
              "NEW_BASIC_AMOUNT"
            ],
            "example": "RAISE",
            "x-enumDescriptions": {
              "REDUCTION": "Reduce price",
              "NEW_BASIC_AMOUNT": "New price is the basic amount",
              "RAISE": "Raise price"
            }
          },
          "chargeAdjustmentType": {
            "type": "string",
            "description": "How the rule changes the price",
            "enum": [
              "RELATIVE",
              "ABSOLUTE",
              "BASIC_AMOUNT"
            ],
            "example": "RELATIVE",
            "x-enumDescriptions": {
              "ABSOLUTE": "Absolute adjustment of the price",
              "BASIC_AMOUNT": "Fix the price to the basic amount",
              "RELATIVE": "Relative adjustment of the price"
            }
          }
        },
        "required": [
          "chargeAdjustmentType",
          "defaultDescription",
          "recurrenceFrequency",
          "type",
          "value"
        ]
      },
      "MembershipOfferTermExtended": {
        "type": "object",
        "description": "Represents a membership offer term",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier of the membership offer term",
            "example": 1234567890
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "contractVolumeInformation": {
            "$ref": "#/components/schemas/ContractVolume"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency"
          },
          "extensionTerm": {
            "$ref": "#/components/schemas/Term"
          },
          "optionalModulesCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of optional modules additionally payable for this term.",
            "example": 3
          },
          "defaultContractStartDate": {
            "type": "string",
            "format": "date",
            "description": "The default contract start date",
            "example": "2025-08-24"
          },
          "defaultContractStartDateOfUse": {
            "type": "string",
            "format": "date",
            "description": "The default contract start date of use",
            "example": "2025-09-01"
          },
          "priceAdjustmentRules": {
            "type": "array",
            "description": "Price adjustment rules that are part of this membership offer term.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTermAdjustmentRule"
            }
          },
          "flatFees": {
            "type": "array",
            "description": "Flat fees that are part of this membership offer.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferFlatFee"
            }
          },
          "extensionFixedTerm": {
            "$ref": "#/components/schemas/Term",
            "description": "The fixed term for the extension of the contract."
          },
          "extensionType": {
            "type": "string",
            "description": "Membership offer extension type",
            "enum": [
              "NONE",
              "TERM_EXTENSION",
              "SUBSEQUENT_RATE_DETAIL"
            ],
            "example": "NONE",
            "x-enumDescriptions": {
              "SUBSEQUENT_RATE_DETAIL": "Subsequent rate detail",
              "TERM_EXTENSION": "Term extension",
              "NONE": "No extension"
            }
          },
          "subsequentRate": {
            "$ref": "#/components/schemas/MembershipOfferSubsequentRate"
          },
          "cancelationStrategy": {
            "type": "string",
            "description": "Membership offer cancelation strategy",
            "enum": [
              "TERM",
              "RECEIPT_DATE"
            ],
            "example": "TERM",
            "x-enumDescriptions": {
              "RECEIPT_DATE": "Receipt date cancelation",
              "TERM": "Term cancelation"
            }
          },
          "cancelationPeriod": {
            "$ref": "#/components/schemas/Term",
            "description": "The cancelation period for the contract."
          },
          "extensionCancelationPeriod": {
            "$ref": "#/components/schemas/Term",
            "description": "The cancelation period for the extension of the contract."
          },
          "rateBonusPeriods": {
            "type": "array",
            "description": "Rate bonus periods that are part of this membership offer term.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferRateBonusPeriod"
            }
          },
          "rateStartPrice": {
            "$ref": "#/components/schemas/Money",
            "description": "Price for the first period of the contract, if the term has bonus period at the beginning of the contract then it is equal to 0, otherwise is equal to term price."
          },
          "optionalModules": {
            "type": "array",
            "description": "Optional modules additionally payable.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferModule"
            }
          },
          "termAfterExtension": {
            "$ref": "#/components/schemas/Term",
            "description": "The new term after minimum contract duration. Null if not configured."
          },
          "priceAfterExtension": {
            "$ref": "#/components/schemas/Money",
            "description": "The new price after minimum contract duration. Null if not configured."
          }
        },
        "required": [
          "cancelationStrategy",
          "extensionType",
          "flatFees",
          "id",
          "paymentFrequency"
        ]
      },
      "OpenApiV1MembershipSwitchConfigExtended": {
        "type": "object",
        "description": "Detailed information about the membership switch configuration",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the configuration",
            "example": 1000
          },
          "name": {
            "type": "string",
            "description": "Name of the configuration",
            "example": "Premium Membership Upgrade"
          },
          "presentation": {
            "$ref": "#/components/schemas/MembershipSwitchConfigPresentationDto",
            "description": "Presentation details for the membership switch configuration"
          },
          "sourceContracts": {
            "type": "array",
            "description": "List of source contracts for the membership switch",
            "items": {
              "$ref": "#/components/schemas/MembershipSwitchConfigSourceContractDto"
            }
          },
          "destinationMembershipOffers": {
            "type": "array",
            "description": "List of destination membership offers",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferExtended"
            }
          }
        },
        "required": [
          "destinationMembershipOffers",
          "id",
          "name",
          "presentation",
          "sourceContracts"
        ]
      },
      "IdlePeriodLists": {
        "type": "object",
        "description": "Past idle period list or current and upcoming idle period list",
        "properties": {
          "pastIdlePeriods": {
            "type": "array",
            "description": "Past idle period list",
            "items": {
              "$ref": "#/components/schemas/IdlePeriod"
            }
          },
          "currentAndUpcomingIdlePeriods": {
            "type": "array",
            "description": "Current and upcoming idle period list",
            "items": {
              "$ref": "#/components/schemas/IdlePeriod"
            }
          }
        },
        "required": [
          "currentAndUpcomingIdlePeriods",
          "pastIdlePeriods"
        ]
      },
      "RemainingIdlePeriods": {
        "type": "object",
        "description": "Represents contract's remaining idle periods",
        "properties": {
          "remainingMaxTerms": {
            "$ref": "#/components/schemas/Term",
            "description": "Represents remaining max amount of idle period terms"
          },
          "remainingFreeTerms": {
            "$ref": "#/components/schemas/Term",
            "description": "Represents remaining free idle periods"
          }
        },
        "required": [
          "remainingFreeTerms"
        ]
      },
      "IdlePeriodConfiguration": {
        "type": "object",
        "description": "Represents the configuration of an idle period",
        "properties": {
          "temporalUnit": {
            "type": "string",
            "description": "Represents the temporal unit of an idle period ",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH"
            ],
            "example": "WEEK",
            "x-enumDescriptions": {
              "MONTH": "Represents a monthly temporal unit of the idle period. Can be used for month pickers only. Supports only full months.",
              "WEEK": "Represents a weekly temporal unit of the idle period. Can be used for week pickers only. Supports only full weeks.",
              "DAY": "Represents a daily temporal unit of the idle period. Can be used for day pickers only."
            }
          },
          "maxTerms": {
            "type": "integer",
            "format": "int32",
            "description": "The maximum number of terms allowed when creating or updating a single idle period.",
            "example": 6
          },
          "maxTermPerReferencePeriod": {
            "type": "integer",
            "format": "int32",
            "description": "The maximum number of terms allowed in a reference period",
            "example": 4
          },
          "referencePeriod": {
            "type": "string",
            "description": "Represents the reference period for idle period term limits",
            "enum": [
              "CALENDAR_YEAR",
              "CONTRACT_YEAR"
            ],
            "example": "CALENDAR_YEAR",
            "x-enumDescriptions": {
              "CONTRACT_YEAR": "The reference period is a full year from contract's start date or its last anniversary",
              "CALENDAR_YEAR": "The reference period is a calendar year (January to December)"
            }
          },
          "firstPossibleStartDate": {
            "type": "string",
            "format": "date",
            "description": "The first possible start date of the idle period",
            "example": "2023-08-01"
          },
          "nextPossibleStartDateOnly": {
            "type": "boolean",
            "description": "Whether the given first possible start date of the idle period is the only allowed start date"
          },
          "idlePeriodFee": {
            "$ref": "#/components/schemas/Money"
          },
          "accessRefusal": {
            "type": "boolean",
            "description": "Whether the studio access is refused for the customer during the idle period"
          },
          "idlePeriodReasons": {
            "type": "array",
            "description": "List of idle period reasons",
            "items": {
              "$ref": "#/components/schemas/IdlePeriodReason"
            }
          },
          "idlePeriodCreationStatus": {
            "type": "string",
            "description": "Status of the amendment configuration.",
            "enum": [
              "READ",
              "CHANGES_REQUIRE_VERIFICATION",
              "CHANGES_WITHOUT_VERIFICATION"
            ],
            "example": "CHANGES_REQUIRE_VERIFICATION",
            "x-enumDescriptions": {
              "READ": "No changes to data are possible.",
              "CHANGES_REQUIRE_VERIFICATION": "Data can be changed, but needs verification to be applied to the customer.",
              "CHANGES_WITHOUT_VERIFICATION": "Data can be changed, will be applied to the customer with immediate effect."
            }
          },
          "contractHasExtension": {
            "type": "boolean",
            "description": "Whether the idle period extends the original contract end date"
          },
          "unlimitedAllowed": {
            "type": "boolean",
            "description": "Whether the unlimited idle period can be created. For unlimited idle periods, the limitations imposed by maxTerm and maxTermPerReferencePeriod do not apply.",
            "example": true
          },
          "freeTerms": {
            "$ref": "#/components/schemas/Term",
            "description": "Count of free idle period terms"
          },
          "dayBasedTermShorteningAllowed": {
            "type": "boolean",
            "description": "Whether day-based term shortening via end date field is allowed during idle period update, independent of the idle period configuration temporal unit restriction.",
            "example": false
          },
          "idlePeriodFeeCalculationConfig": {
            "$ref": "#/components/schemas/IdlePeriodFeeCalculationConfig",
            "description": "Configuration for idle period fee calculation"
          }
        },
        "required": [
          "accessRefusal",
          "contractHasExtension",
          "dayBasedTermShorteningAllowed",
          "firstPossibleStartDate",
          "freeTerms",
          "idlePeriodCreationStatus",
          "idlePeriodFee",
          "idlePeriodFeeCalculationConfig",
          "idlePeriodReasons",
          "maxTerms",
          "nextPossibleStartDateOnly",
          "referencePeriod",
          "temporalUnit",
          "unlimitedAllowed"
        ]
      },
      "AdditionalModule": {
        "type": "object",
        "description": "Represents an additional module",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the additional module",
            "example": 203
          },
          "name": {
            "type": "string",
            "description": "Name of the additional module rate",
            "example": "drink flat"
          },
          "description": {
            "type": "string",
            "description": "Description of the additional module rate",
            "example": "drink flat"
          },
          "imageUrl": {
            "type": "string",
            "description": "Image url of the additional module",
            "example": "https://www.image.com"
          },
          "paymentFrequencies": {
            "type": "array",
            "description": "Payment frequencies of the additional module",
            "items": {
              "$ref": "#/components/schemas/AdditionalModulePaymentFrequency"
            }
          },
          "termInformation": {
            "$ref": "#/components/schemas/TermInformation"
          },
          "trialPeriodConfig": {
            "$ref": "#/components/schemas/AdditionalModuleTrialPeriodConfig"
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of the additional module rate",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          }
        },
        "required": [
          "id",
          "imageUrl",
          "name",
          "paymentFrequencies",
          "termInformation"
        ]
      },
      "AdditionalModuleExtension": {
        "type": "object",
        "description": "Represents an additional module extension",
        "properties": {
          "extensionType": {
            "type": "string",
            "description": "Extension type of an additional module",
            "enum": [
              "TERM_EXTENSION",
              "NEW"
            ],
            "example": "NEW",
            "x-enumDescriptions": {
              "TERM_EXTENSION": "Represents that the additional module will be extended automatically as soon as cancelation period is over",
              "NEW": "Represents that a new additional module will be created automatically as soon as cancelation period is over"
            }
          },
          "termExtension": {
            "$ref": "#/components/schemas/Term"
          },
          "extensionCancelationPeriod": {
            "$ref": "#/components/schemas/Term"
          }
        },
        "required": [
          "extensionType"
        ]
      },
      "AdditionalModuleMonthDayToPrice": {
        "type": "object",
        "description": "Represents a mapping from a month day to a price for an additional module (that month day).",
        "properties": {
          "monthDay": {
            "type": "object",
            "description": "The month day of the month day to price mapping",
            "properties": {
              "month": {
                "type": "string",
                "enum": [
                  "JANUARY",
                  "FEBRUARY",
                  "MARCH",
                  "APRIL",
                  "MAY",
                  "JUNE",
                  "JULY",
                  "AUGUST",
                  "SEPTEMBER",
                  "OCTOBER",
                  "NOVEMBER",
                  "DECEMBER"
                ]
              },
              "monthValue": {
                "type": "integer",
                "format": "int32"
              },
              "dayOfMonth": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "monthDay",
          "price"
        ]
      },
      "AdditionalModulePaymentFrequency": {
        "type": "object",
        "description": "Represents the payment frequency of an additional module",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the payment frequency of an additional module",
            "example": 203
          },
          "type": {
            "type": "string",
            "description": "Payment frequency type of an additional module",
            "enum": [
              "FREE",
              "NON_RECURRING",
              "RECURRING",
              "MONTH_DAY",
              "TERM_BASED"
            ],
            "example": "FREE",
            "x-enumDescriptions": {
              "TERM_BASED": "Represents that the additional module payment frequency is based on terms, with a possibly individual price per term.",
              "NON_RECURRING": "Represents that the additional module payment frequency is non recurring, meaning only one payment is necessary here.",
              "FREE": "Represents that the additional module payment frequency is free of charge.",
              "RECURRING": "Represents that the additional module payment frequency is recurring, meaning that the payment will take place every term.",
              "MONTH_DAY": "Represents that the additional module payment frequency is based on month days, with a possibly individual price per month day."
            }
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "price": {
            "$ref": "#/components/schemas/Money",
            "description": "Base price, used only for payment frequencies of type RECURRING"
          },
          "monthDaysToPrices": {
            "type": "array",
            "description": "Month day to prices list, used for additional module payment frequency type MONTH_DAY",
            "items": {
              "$ref": "#/components/schemas/AdditionalModuleMonthDayToPrice"
            }
          },
          "termsToPrices": {
            "type": "array",
            "description": "Terms to prices list, used for additional module payment frequency type TERM_BASED. Note that the price will become active AFTER the respective term has passed",
            "items": {
              "$ref": "#/components/schemas/AdditionalModuleTermToPrice"
            }
          }
        },
        "required": [
          "type"
        ]
      },
      "AdditionalModuleTermToPrice": {
        "type": "object",
        "description": "Represents a mapping from a term to a price mapping for an additional module",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          }
        },
        "required": [
          "price",
          "term"
        ]
      },
      "AdditionalModuleTrialPeriodConfig": {
        "type": "object",
        "description": "Represents the trial period config of an additional module",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "description": {
            "type": "string",
            "description": "Description of the trial period config",
            "example": "Test period for the drink flat"
          }
        },
        "required": [
          "term"
        ]
      },
      "TermInformation": {
        "type": "object",
        "description": "Term information of the additional module",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "extension": {
            "$ref": "#/components/schemas/AdditionalModuleExtension"
          },
          "cancelationPeriod": {
            "$ref": "#/components/schemas/Term"
          }
        },
        "required": [
          "term"
        ]
      },
      "AdditionalModuleContractExtended": {
        "type": "object",
        "description": "Represents an additional module contract with extended data fields",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the additional module contract",
            "example": "drink flat"
          },
          "price": {
            "$ref": "#/components/schemas/Money"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the additional module contract",
            "example": "2022-01-15"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the additional module contract",
            "example": "2022-01-15"
          },
          "cancelationDate": {
            "type": "string",
            "format": "date",
            "description": "Cancelation date of the additional module contract",
            "example": "2022-01-15"
          },
          "lastPossibleCancelationDate": {
            "type": "string",
            "format": "date",
            "description": "Last possible cancelation date of the additional module contract",
            "example": "2022-01-15"
          },
          "cancelationReason": {
            "type": "string",
            "description": "Represents the reason of a contract cancelation",
            "example": "Illness"
          },
          "contractCancelationStatus": {
            "type": "string",
            "description": "Cancelation status of the contract cancelation",
            "enum": [
              "CANCELED",
              "PENDING_VERIFICATION",
              "PENDING_WITHDRAWAL_VERIFICATION"
            ],
            "example": "PENDING_VERIFICATION",
            "x-enumDescriptions": {
              "PENDING_WITHDRAWAL_VERIFICATION": "The cancelation withdrawal is pending verification.",
              "CANCELED": "The contract was canceled by the customer.",
              "PENDING_VERIFICATION": "The cancelation is pending verification."
            }
          },
          "contractCancelationCanBeWithdrawn": {
            "type": "boolean",
            "description": "Whether a contract cancelation for the additional module contract can be withdrawn",
            "example": true
          },
          "trialPeriod": {
            "$ref": "#/components/schemas/AdditionalModuleContractTrialPeriod",
            "description": "Represents the trial period of an additional module"
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of this contract",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          },
          "availableCancelationDates": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "date"
            }
          }
        },
        "required": [
          "contractCancelationCanBeWithdrawn",
          "name",
          "price",
          "startDate"
        ]
      },
      "AdditionalModuleContractTrialPeriod": {
        "type": "object",
        "description": "Represents the trial period of an additional module contract",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Trial period start date of an additional module contract",
            "example": "2022-01-15"
          }
        }
      },
      "ContractCancelationReason": {
        "type": "object",
        "description": "contract cancelation reason information for studio",
        "properties": {
          "cancelationReasonId": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the contract cancelation reason",
            "example": 1000
          },
          "cancelationReasonName": {
            "type": "string",
            "description": "Name of the contract cancelation reason",
            "example": "Officially ordered studio closure"
          }
        },
        "required": [
          "cancelationReasonId",
          "cancelationReasonName"
        ]
      },
      "MembershipOffer": {
        "type": "object",
        "description": "Membership offer information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier for the membership offer."
          },
          "description": {
            "type": "string",
            "description": "Description of the membership offer.",
            "example": "This offer includes access to all gym facilities and group classes."
          },
          "name": {
            "type": "string",
            "description": "Name of the membership offer.",
            "example": "Standard Membership"
          },
          "subDescription": {
            "type": "string",
            "description": "Sub description for the membership offer.",
            "example": "Best value for regular gym-goers."
          },
          "imageUrl": {
            "type": "string",
            "description": "Temporary valid download link for rate bundle image. Expires after 2 hours.",
            "example": "https://example.com"
          },
          "footnote": {
            "type": "string",
            "description": "Contractual or legal comments to be displayed below the offer.",
            "example": "This offer is valid for new members only. Terms and conditions apply."
          },
          "preUseType": {
            "$ref": "#/components/schemas/ContractPreUseType"
          },
          "limitedOfferingPeriod": {
            "$ref": "#/components/schemas/DatePeriod",
            "description": "Period in which the membership offer is valid."
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of the membership offer.",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          },
          "terms": {
            "type": "array",
            "description": "List of terms that are part of this membership offer.",
            "items": {
              "$ref": "#/components/schemas/MembershipOfferTerm"
            }
          }
        },
        "required": [
          "description",
          "id",
          "limitedOfferingPeriod",
          "name",
          "preUseType",
          "rateCodes",
          "terms"
        ]
      },
      "MembershipOfferTerm": {
        "type": "object",
        "description": "Membership term information.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique identifier of the membership offer term",
            "example": 1234567890
          },
          "term": {
            "$ref": "#/components/schemas/Term"
          },
          "contractVolumeInformation": {
            "$ref": "#/components/schemas/ContractVolume"
          },
          "paymentFrequency": {
            "$ref": "#/components/schemas/MembershipOfferPaymentFrequency"
          },
          "extensionTerm": {
            "$ref": "#/components/schemas/Term"
          },
          "optionalModulesCount": {
            "type": "integer",
            "format": "int32",
            "description": "Number of optional modules additionally payable for this term.",
            "example": 3
          }
        },
        "required": [
          "id",
          "paymentFrequency"
        ]
      },
      "DiscountCampaignDetail": {
        "type": "object",
        "description": "Basic information about a discount campaign",
        "properties": {
          "name": {
            "type": "string",
            "description": "Public name of the discount campaign",
            "example": "Summer Discount"
          },
          "description": {
            "type": "string",
            "description": "Public description of the discount campaign",
            "example": "Special summer promotion"
          },
          "validFrom": {
            "type": "string",
            "format": "date",
            "description": "Start date of the campaign validity period",
            "example": "2025-06-01"
          },
          "validTo": {
            "type": "string",
            "format": "date",
            "description": "End date of the campaign validity period. Null if the campaign has no end date.",
            "example": "2025-08-31"
          },
          "voucherInteroperabilityMode": {
            "type": "string",
            "description": "Defines how the discount campaign interacts with discount vouchers",
            "enum": [
              "ALLOW_DISCOUNT_VOUCHERS",
              "ALLOW_DISCOUNT_VOUCHERS_VOUCHER_FIRST",
              "VOUCHER_REPLACES_DISCOUNT",
              "DISALLOW_DISCOUNT_VOUCHERS"
            ],
            "example": "ALLOW_DISCOUNT_VOUCHERS",
            "x-enumDescriptions": {
              "ALLOW_DISCOUNT_VOUCHERS": "Discount vouchers can be applied alongside this campaign discount. Campaign discount is calculated first.",
              "DISALLOW_DISCOUNT_VOUCHERS": "Discount vouchers cannot be used with this campaign",
              "VOUCHER_REPLACES_DISCOUNT": "If a voucher is applied, it replaces the campaign discount",
              "ALLOW_DISCOUNT_VOUCHERS_VOUCHER_FIRST": "Discount vouchers can be applied alongside this campaign discount. Voucher is calculated first."
            }
          }
        },
        "required": [
          "validFrom",
          "voucherInteroperabilityMode"
        ]
      },
      "LeadAdditionalFieldConfiguration": {
        "type": "object",
        "description": "The lead additional field configuration",
        "properties": {
          "additionalFieldId": {
            "type": "integer",
            "format": "int64",
            "description": "The unique ID of the additional information field",
            "example": 1234567890
          },
          "name": {
            "type": "string",
            "description": "The name of the additional information field",
            "example": "Do you have health issues?"
          },
          "type": {
            "type": "string",
            "description": "The type of an additional information field. This defines how the field is used and what kind of data it can hold.",
            "enum": [
              "BOOLEAN",
              "DATE",
              "LIST",
              "NUMERIC",
              "TEXT"
            ],
            "example": "BOOLEAN",
            "x-enumDescriptions": {
              "DATE": "This field holds a date value, used for storing dates.",
              "NUMERIC": "This field holds a numeric value, used for storing numbers.",
              "TEXT": "This field holds a text value, used for storing free-form text input.",
              "LIST": "This field holds a list of items, allowing selection from predefined options.",
              "BOOLEAN": "This field holds a boolean value, typically used for yes/no questions."
            }
          },
          "allowMultiSelection": {
            "type": "boolean",
            "description": "If the type is LIST this defines if only one or more items can be selected as answer"
          },
          "selectionValues": {
            "type": "array",
            "description": "A list of options to pick from. This is only used if the field type is a list.",
            "example": [
              "Spinning",
              "Yoga",
              "Pilates"
            ],
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          }
        },
        "required": [
          "additionalFieldId",
          "allowMultiSelection",
          "mode",
          "name",
          "type"
        ]
      },
      "LeadConfig": {
        "type": "object",
        "description": "The lead configuration",
        "properties": {
          "addressMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "dateOfBirthMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "genderMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "telephoneMode": {
            "type": "string",
            "description": "Represents the mode of an input field",
            "enum": [
              "INACTIVE",
              "OPTIONAL",
              "MANDATORY"
            ],
            "example": "INACTIVE",
            "x-enumDescriptions": {
              "OPTIONAL": "The input is optional",
              "INACTIVE": "The input is disabled",
              "MANDATORY": "The input is mandatory"
            }
          },
          "additionalInformation": {
            "type": "array",
            "description": "List of the additional information fields configured for leads",
            "items": {
              "$ref": "#/components/schemas/LeadAdditionalFieldConfiguration"
            }
          },
          "communicationPreferences": {
            "type": "array",
            "description": "List of the message categories with communication channels configured for leads",
            "items": {
              "$ref": "#/components/schemas/CommunicationPreference"
            }
          }
        },
        "required": [
          "addressMode",
          "dateOfBirthMode",
          "genderMode",
          "telephoneMode"
        ]
      },
      "Employee": {
        "type": "object",
        "description": "Representation of an employee",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the employee",
            "example": 1001
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the employee",
            "example": "Peter"
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the employee",
            "example": "Parker"
          },
          "employeeImageUrl": {
            "type": "string",
            "description": "The URL of the employee image",
            "example": "https://example.com/image.jpg"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "The date of birth of the employee",
            "example": "1990-01-01"
          },
          "employeeNumber": {
            "type": "string",
            "description": "The employee number",
            "example": "123456a"
          },
          "employeeInitials": {
            "type": "string",
            "description": "The initials of the employee",
            "example": "P.P."
          },
          "publicName": {
            "type": "string",
            "description": "The public name of the employee",
            "example": "Peter Parker"
          },
          "businessRole": {
            "type": "string",
            "description": "The business role of an employee",
            "enum": [
              "STUDIO_OWNER",
              "STUDIO_MANAGER",
              "TRAINER",
              "SERVICE_EMPLOYEE",
              "ADMINISTRATION_OR_FINANCE",
              "MARKETING"
            ],
            "example": "STUDIO_OWNER",
            "x-enumDescriptions": {
              "STUDIO_MANAGER": "The employee is the manager of the studio.",
              "SERVICE_EMPLOYEE": "The employee is a service employee of the studio.",
              "ADMINISTRATION_OR_FINANCE": "The employee is participating in administration or finance of the studio.",
              "STUDIO_OWNER": "The employee is the owner of the studio.",
              "MARKETING": "The employee is participating in marketing of the studio.",
              "TRAINER": "The employee is a trainer of the studio."
            }
          },
          "externalRole": {
            "type": "string",
            "description": "The external role of the employee",
            "example": "Trainer"
          },
          "phone1": {
            "type": "string",
            "description": "The first phone number of the employee",
            "example": "+49123456789"
          },
          "phone2": {
            "type": "string",
            "description": "The second phone number of the employee",
            "example": "+49123456789"
          },
          "email": {
            "type": "string",
            "description": "The email of the employee",
            "example": "example@example.com"
          },
          "street": {
            "type": "string",
            "description": "The street of the employee",
            "example": "Main Street"
          },
          "houseNumber": {
            "type": "string",
            "description": "The house number of the employee",
            "example": "123a"
          },
          "zipCode": {
            "type": "string",
            "description": "The zip code of the employee",
            "example": "123-45"
          },
          "city": {
            "type": "string",
            "description": "The city of the employee",
            "example": "Berlin"
          },
          "country": {
            "type": "string",
            "description": "The country of the employee",
            "example": "DE"
          },
          "employeeCompetences": {
            "type": "array",
            "description": "The competences of the employee",
            "example": [
              "Trainer"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "employeeInitials",
          "firstName",
          "gender",
          "id",
          "lastName"
        ]
      },
      "EmployeeSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of employees",
            "items": {
              "$ref": "#/components/schemas/Employee"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "Device": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Device id",
            "example": 26
          },
          "name": {
            "type": "string",
            "description": "Device name",
            "example": "Turnstile (left)"
          },
          "active": {
            "type": "boolean",
            "description": "Device state. If the value is false then the device is inactive and must be activated before use",
            "example": false
          },
          "model": {
            "type": "string",
            "description": "Device model",
            "enum": [
              "GENERIC_VENDING_READER",
              "GENERIC_CARD_READER",
              "GENERIC_TIME_READER"
            ],
            "example": "GENERIC_CARD_READER"
          }
        },
        "required": [
          "active"
        ]
      },
      "AddressDetails": {
        "type": "object",
        "description": "Describes the address in detail, so every country has its own fields filled. Use addressLines for preformatted address.",
        "properties": {
          "street": {
            "type": "string",
            "description": "Street of the client",
            "example": "Burgring"
          },
          "houseNumber": {
            "type": "string",
            "description": "House number of the client",
            "example": "23A"
          },
          "addressStatus": {
            "$ref": "#/components/schemas/AddressStatus"
          }
        }
      },
      "AddressStatus": {
        "type": "object",
        "description": "Describes the status of the address.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of address status",
            "enum": [
              "VALID",
              "INVALID"
            ],
            "example": "VALID",
            "x-enumDescriptions": {
              "VALID": "Default status of an address.",
              "INVALID": "The address status is proven as invalid."
            }
          },
          "statusInformation": {
            "type": "string",
            "description": "More details on the overall status",
            "example": "Letter could not be delivered"
          },
          "since": {
            "type": "string",
            "format": "date",
            "description": "Current status unchanged since",
            "example": "2000-01-01"
          }
        },
        "required": [
          "type"
        ]
      },
      "ClientDetails": {
        "type": "object",
        "description": "The client matches a studio or location. The complete element should identify the person or company with its details of address, taxId, contact data and bank account information. An address should be complete, but only fields mandatory for all countries are marked as such",
        "properties": {
          "name1": {
            "type": "string",
            "description": "Name first line",
            "example": "GYMLAB Hamburg"
          },
          "name2": {
            "type": "string",
            "description": "Name second line",
            "example": "GMBH"
          },
          "legalForm": {
            "type": "string",
            "description": "Legal form of the company",
            "example": "GmbH"
          },
          "preTaxAttribute": {
            "type": "boolean",
            "default": "false",
            "description": "Possible to deduct tax up front",
            "example": false
          },
          "vatSerialNo": {
            "type": "string",
            "description": "Tax ID of the client",
            "example": "DE 142156559"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code of the client",
            "example": "1180"
          },
          "city": {
            "type": "string",
            "description": "Cite code of the client",
            "example": "Vienna"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code of the client, ISO Alpha-2",
            "example": "AT"
          },
          "country": {
            "type": "string",
            "description": "Country of the client",
            "example": "Australia"
          },
          "paymentDetails": {
            "$ref": "#/components/schemas/PaymentDetails"
          },
          "contactDetails": {
            "type": "array",
            "description": "List of contact details",
            "items": {
              "$ref": "#/components/schemas/ContactDetails"
            }
          },
          "addressLine1": {
            "type": "string",
            "description": "Address first line",
            "example": "Burgring 22"
          },
          "addressLine2": {
            "type": "string",
            "description": "Address second line",
            "example": "1180 Vienna"
          },
          "addressLine3": {
            "type": "string",
            "description": "Address third line",
            "example": "Austria"
          },
          "region": {
            "type": "string",
            "description": "Region of the client",
            "example": "Vienna"
          },
          "addressData": {
            "$ref": "#/components/schemas/AddressDetails"
          }
        },
        "required": [
          "city",
          "name1",
          "postalCode",
          "preTaxAttribute"
        ]
      },
      "ContactDetails": {
        "type": "object",
        "description": "Contact data details",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of contact data",
            "enum": [
              "TEL_PRIVATE",
              "TEL_PRIVATE_MOBILE",
              "TEL_BUSINESS",
              "TEL_BUSINESS_MOBILE",
              "FAX",
              "EMAIL"
            ],
            "example": "TEL_BUSINESS",
            "x-enumDescriptions": {
              "TEL_BUSINESS_MOBILE": "Business mobile phone number",
              "TEL_PRIVATE": "Private phone number",
              "FAX": "Fax number",
              "EMAIL": "Email address",
              "TEL_PRIVATE_MOBILE": "Private mobile phone number",
              "TEL_BUSINESS": "Business phone number"
            }
          },
          "value": {
            "type": "string",
            "description": "Value of contact data",
            "example": "s.hannawald@sportaliance.com"
          },
          "status": {
            "$ref": "#/components/schemas/ContactStatus"
          }
        },
        "required": [
          "type",
          "value"
        ]
      },
      "ContactStatus": {
        "type": "object",
        "description": "Describes the status of the contact data.",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of contact status",
            "enum": [
              "NO_EMAIL",
              "NOT_YET_USED",
              "VALIDATION_IN_PROGRESS",
              "VALID",
              "VALID_READ",
              "INVALID",
              "WARNING",
              "REFUSED",
              "REFUSED_FULL",
              "REFUSED_VIRUS"
            ],
            "example": "VALID",
            "x-enumDescriptions": {
              "NOT_YET_USED": "Email is provided, but not yet used to send one.",
              "REFUSED_FULL": "Email is provided, but bounced on delivery because the postbox is full. Delivery will be tried again.",
              "VALIDATION_IN_PROGRESS": "Email is provided, but currently under validation.",
              "VALID": "At least one Email was sent successfully.",
              "REFUSED_VIRUS": "Email is provided, but bounced on delivery because it failed the virus test. Delivery will be tried again.",
              "NO_EMAIL": "No email provided.",
              "INVALID": "Email is provided, but bounced on delivery as invalid email address. No further emailing will happen.",
              "WARNING": "Email is provided, but bounced on delivery without a reason. Delivery will be tried again.",
              "VALID_READ": "At least one Email was sent successfully and read.",
              "REFUSED": "Email is provided, but bounced on delivery with a reason. Delivery will be tried again."
            }
          },
          "statusInformation": {
            "type": "string",
            "description": "More details to the overall status",
            "example": "The mail server for the recipient domain does not accept messages to this address."
          }
        },
        "required": [
          "type"
        ]
      },
      "PaymentDetails": {
        "type": "object",
        "description": "Describes the payment data.",
        "properties": {
          "accountNumber": {
            "type": "string",
            "description": "Account number of the debtor",
            "example": "91 1000 0000 0123 4567 89"
          },
          "bankCode": {
            "type": "string",
            "description": "Bank code of the clients account",
            "example": "DE"
          },
          "iban": {
            "type": "string",
            "description": "Iban of the clients account",
            "example": "DE91 1000 0000 0123 4567 89"
          },
          "bic": {
            "type": "string",
            "description": "Bic of the clients account",
            "example": "DEUTDEFFXXX"
          },
          "bank": {
            "type": "string",
            "description": "Bank name of the client",
            "example": "Deutsche Bank"
          },
          "bankCountryCode": {
            "type": "string",
            "description": "Bank country code of the client",
            "example": "DE"
          },
          "accountHolder": {
            "type": "string",
            "description": "The account holder of the bank account",
            "example": "Sven Hannawald"
          }
        },
        "required": [
          "bank"
        ]
      },
      "TransferDetails": {
        "type": "object",
        "description": "Describes transfer details",
        "properties": {
          "collectionDate": {
            "type": "string",
            "format": "date",
            "description": "Date when debt collection run was created",
            "example": "1952-05-04"
          },
          "debtCollectionType": {
            "type": "string",
            "default": "TRUST",
            "description": "Type of debt collection",
            "enum": [
              "TRUST",
              "PURCHASE"
            ],
            "example": "TRUST",
            "x-enumDescriptions": {
              "TRUST": "Claims are transferred, but still managed by the studio.",
              "PURCHASE": "Claims are transferred and bought by the debt collection agency."
            }
          },
          "client": {
            "$ref": "#/components/schemas/ClientDetails"
          },
          "status": {
            "type": "string",
            "description": "Status of a Transfer",
            "enum": [
              "INTERNAL_PROCESSING",
              "WAITING_FOR_CONFIRMATION",
              "COMPLETED",
              "FAILED"
            ],
            "example": "COMPLETED",
            "x-enumDescriptions": {
              "COMPLETED": "Processing is done and the Agency has confirmed the retrieval of the Transfer.",
              "INTERNAL_PROCESSING": "The transfer is currently processed by Magicline.",
              "FAILED": "At any of the previous stages an error occurred.",
              "WAITING_FOR_CONFIRMATION": "Processing is done, the Agency should have received a Webhook Notification and should confirm retrieval of the Transfer."
            }
          },
          "origin": {
            "type": "string",
            "description": "Origin of debt collection",
            "enum": [
              "DEBT_COLLECTION_RUN",
              "INDIVIDUAL_HANDOVER",
              "AUTOMATIC_HANDOVER",
              "CONTRACT_CANCELATION"
            ],
            "example": "DEBT_COLLECTION_RUN",
            "x-enumDescriptions": {
              "INDIVIDUAL_HANDOVER": "Indicates that the debt was handed over via an individual transfer in the member account.",
              "AUTOMATIC_HANDOVER": "Indicates that the debt was handed over automatically due to a MemberCash rejection.",
              "CONTRACT_CANCELATION": "Indicates that the debt was handed over alongside the manual cancellation of a contract.",
              "DEBT_COLLECTION_RUN": "Indicates that the debt was part of a regular or scheduled debt collection run."
            }
          }
        }
      },
      "CollectionCase": {
        "type": "object",
        "description": "The Collection case is a single transfer of a debtor and wraps multiple debts One Collection case contains all information about a transfer of a single member.",
        "properties": {
          "collectionCaseId": {
            "type": "string",
            "description": "ID identifying this Collection case in UUID format",
            "example": "123e4567-e89b-42d3-a456-556642440000"
          },
          "openAmount": {
            "type": "number",
            "description": "Total amount open of all debts",
            "example": 1231
          },
          "debt": {
            "type": "array",
            "description": "List of debts the member needs to pay",
            "items": {
              "$ref": "#/components/schemas/Debt"
            }
          },
          "extHumanId": {
            "type": "string",
            "description": "Human identifier given by the debt collection agency"
          },
          "extReferenceId": {
            "type": "string",
            "description": "Identifier given by the debt collection agency"
          }
        },
        "required": [
          "collectionCaseId",
          "debt",
          "openAmount"
        ]
      },
      "ContractDetails": {
        "type": "object",
        "description": "The contract data defines a single contract, also modules and flat fees. The endDate represents the end of the current term, if cancelled the date of contract termination.",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Id of the contract",
            "example": 123123213
          },
          "rateName": {
            "type": "string",
            "description": "Rate name of the contract",
            "example": "Gold"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the contract",
            "example": "1952-05-04"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the contract",
            "example": "1953-05-04"
          },
          "createdDate": {
            "type": "string",
            "format": "date",
            "description": "Creation date of the contract",
            "example": "2022-01-01"
          },
          "cancelled": {
            "type": "boolean",
            "description": "If the contract is cancelled",
            "example": false
          },
          "contractPeriod": {
            "$ref": "#/components/schemas/Recurrence"
          },
          "extensionPeriod": {
            "$ref": "#/components/schemas/Recurrence"
          },
          "cancellationPeriod": {
            "$ref": "#/components/schemas/Recurrence"
          }
        },
        "required": [
          "cancelled",
          "createdDate",
          "endDate",
          "id",
          "startDate"
        ]
      },
      "Debt": {
        "type": "object",
        "description": "The Debt is a single debt claim of a member. It must contain all information needed to be a valid claim",
        "properties": {
          "debtId": {
            "type": "string",
            "description": "Unique Id for this debt in UUID format",
            "example": "123e4567-e89b-42d3-a456-556642440000"
          },
          "debtDate": {
            "type": "string",
            "format": "date",
            "description": "Due date of the debt",
            "example": "1952-05-04"
          },
          "contractStartDate": {
            "type": "string",
            "format": "date",
            "description": "If contract debt, it is set to the start date of the contract, otherwise due date",
            "example": "1952-05-04"
          },
          "amount": {
            "type": "number",
            "description": "Amount to collect for this debt",
            "example": 333
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code",
            "example": "USD"
          },
          "type": {
            "type": "string",
            "description": "Type of debt collection",
            "enum": [
              "PRINCIPAL_CLAIM",
              "SALE",
              "DEBT_CLAIM",
              "FLAT_FEE",
              "DUNNING_FEE",
              "BANK_FEE"
            ],
            "example": "SALE",
            "x-enumDescriptions": {
              "SALE": "Sale of products on the cash register",
              "FLAT_FEE": "Claim of a flat fee",
              "DUNNING_FEE": "Dunning claim, from a dunning run or debt collection handover",
              "PRINCIPAL_CLAIM": "Additional created claim by the studio without further categorization",
              "BANK_FEE": "Added fee of a bank by chargeback",
              "DEBT_CLAIM": "Claim of a contract, module or anything else not further defined"
            }
          },
          "designation": {
            "type": "string",
            "description": "Description of debt"
          },
          "recurrence": {
            "$ref": "#/components/schemas/Recurrence"
          },
          "servicePeriodStartDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the rendered service, YYYY-MM-DD format",
            "example": "1952-05-04"
          },
          "servicePeriodEndDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the rendered service, YYYY-MM-DD format",
            "example": "1952-05-04"
          },
          "maturityType": {
            "type": "string",
            "description": "Defines if a claim was changed due to rest maturity",
            "enum": [
              "NORMAL",
              "RESIDUAL"
            ],
            "example": "NORMAL"
          },
          "latestRejectionReason": {
            "type": "string",
            "description": "Latest reason on why the payment was not successful",
            "enum": [
              "PURCHASE_LIMIT",
              "INVALID_IBAN",
              "CLOSED_BANKACCOUNT",
              "FRAUD",
              "INSOLVENCY",
              "DECEASED",
              "INCOMPLETE_ADDRESS",
              "INVALID_ADDRESS",
              "INVALID_OR_MISSING_INFORMATION",
              "CHARGED_BACK",
              "ALREADY_PURCHASED",
              "ALREADY_CHARGED_BACK",
              "CONTESTED_CONTRACT",
              "WITHDRAWN_MANDATE",
              "INVALID_SEPA_MANDATE",
              "IBAN_BLACKLISTED",
              "TERMINATED_CONTRACT",
              "IBAN_NOT_SEPA_DIRECT_DEBIT_CAPABLE",
              "AMOUNT_EXCEEDS_LIMIT",
              "NON_CONTRACTUAL",
              "PURCHASING_SUSPENDED",
              "INSTRUCTED_BY_STUDIO",
              "MISSING_LIABLE_PERSON",
              "IBAN_INVALID_SINCE_LAST_PAYMENT_RUN",
              "ACCOUNT_CLOSED_BEFORE_COLLECTION",
              "DEBT_OVERAGED",
              "DUNNING_UNSUCCESSFUL",
              "AUTOMATIC_CHARGEBACK",
              "STUDIO_CLOSED_DOWN",
              "REPEATED_INVALID_SEPA_MANDATE",
              "SETTLEMENT_AGREEMENT",
              "INVALID_SEPA_CREDITOR_ID",
              "INSUFFICIENT_COVERING",
              "OPPOSITION",
              "INVALID_BANK_INFORMATION",
              "INVALID_MANDATE",
              "AUTHORIZATION_DECLINED",
              "INVALID_CARD",
              "CARD_EXPIRED",
              "REVOKED_BY_CUSTOMER",
              "UNSUPPORTED_DEBT_CLAIM_TYPE",
              "PURCHASESTOP_FRAUD",
              "ALREADY_REJECTED",
              "CONSUMPTION_CREDIT_CHARGEBACK_DEBT_CLAIM_TYPE",
              "MANUALLY_REJECTED",
              "MANUALLY_SET_PURCHASESTOP",
              "OTHER",
              "OTHER_NO_FORWARDING_TO_EXTERNAL_COLLECTION_AGENCY",
              "UNKNOWN"
            ],
            "example": "PURCHASE_LIMIT",
            "x-enumDescriptions": {
              "WITHDRAWN_MANDATE": "Direct debit authorization withdrawn",
              "INVALID_SEPA_CREDITOR_ID": "Invalid Creditor ID has been provided in SEPA mandate",
              "CONTESTED_CONTRACT": "Denied contract",
              "CARD_EXPIRED": "Credit card expired",
              "FRAUD": "Attempted fraud",
              "INVALID_SEPA_MANDATE": "Invalid SEPA mandate",
              "INVALID_OR_MISSING_INFORMATION": "Information missing / invalid",
              "INSTRUCTED_BY_STUDIO": "Reimbursement by studio",
              "AMOUNT_EXCEEDS_LIMIT": "Maximum claim amount exceeded",
              "PURCHASING_SUSPENDED": "Purchasing temporarily suspended",
              "PURCHASE_LIMIT": "Purchase limit",
              "INSOLVENCY": "Insolvency",
              "OPPOSITION": "Objection of the account holder",
              "DUNNING_UNSUCCESSFUL": "Dunning process unsuccessful",
              "AUTHORIZATION_DECLINED": "Authorization declined",
              "IBAN_NOT_SEPA_DIRECT_DEBIT_CAPABLE": "Bank does not participate in SEPA direct debit",
              "INVALID_ADDRESS": "Invalid address",
              "IBAN_BLACKLISTED": "IBAN blacklisted",
              "ALREADY_PURCHASED": "Debt claim has already been purchased",
              "DEBT_OVERAGED": "Old claim",
              "ALREADY_CHARGED_BACK": "Debt claim has already been charged back",
              "INSUFFICIENT_COVERING": "Lack of coverage",
              "INVALID_IBAN": "Invalid IBAN",
              "REVOKED_BY_CUSTOMER": "Revoked by customer",
              "DECEASED": "Member deceased",
              "INVALID_BANK_INFORMATION": "Invalid bank data",
              "IBAN_INVALID_SINCE_LAST_PAYMENT_RUN": "Invalid IBAN",
              "REPEATED_INVALID_SEPA_MANDATE": "SEPA mandate repeatedly invalid",
              "INVALID_MANDATE": "Invalid mandate",
              "CLOSED_BANKACCOUNT": "Closed bank account",
              "CHARGED_BACK": "Claim charged back",
              "AUTOMATIC_CHARGEBACK": "Client wishes no collection",
              "OTHER": "Other reason",
              "SETTLEMENT_AGREEMENT": "The client agreed to chargeback every reversal of a direct debit",
              "TERMINATED_CONTRACT": "Studio membership cancelled",
              "INCOMPLETE_ADDRESS": "Address incomplete",
              "MISSING_LIABLE_PERSON": "Missing legal representative",
              "STUDIO_CLOSED_DOWN": "Reimbursement due to administrative enforced studio closure",
              "NON_CONTRACTUAL": "Maximum age of debt claim exceeded",
              "UNKNOWN": "Unknown reason",
              "ACCOUNT_CLOSED_BEFORE_COLLECTION": "Bank account closed",
              "INVALID_CARD": "Invalid card"
            }
          },
          "contractId": {
            "type": "integer",
            "format": "int64",
            "description": "The field returns the contract_id from which the debt claim was created. It can be used to fetch the contract details using __GET /v1/customers/contracts/by__. In the case of non-contractual debt claims, this field is empty."
          },
          "block": {
            "$ref": "#/components/schemas/OpenApiV1Block",
            "description": "Debt is blocked for collection cases"
          }
        },
        "required": [
          "amount",
          "currency",
          "debtDate",
          "debtId",
          "designation",
          "recurrence",
          "type"
        ]
      },
      "Debtor": {
        "type": "object",
        "description": "The debtor matches a member. The complete element should identify the member with its details of address, contact data and bank account information. It includes also country specific elements. DebtorId: Unique Id and used for all kind of communications, can be a decimal description or a UUID MembershipNr: Magicline specific identifier for the member. CountryCode: ISO Alpha-2 country code MandateReference: Sepa mandate reference number Birthdate: format YYYY-MM-DD LiablePerson: In case the debtor isn't liable himself, this is the liable representative",
        "properties": {
          "debtorId": {
            "type": "string",
            "description": "Debtor unique id",
            "example": "2334545"
          },
          "membershipNr": {
            "type": "string",
            "description": "Membership number of the debtor",
            "example": "1568462597"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code of the debtor",
            "example": "AT"
          },
          "country": {
            "type": "string",
            "description": "Country of the debtor",
            "example": "Austria"
          },
          "identificationNumber": {
            "type": "string",
            "description": "Identification number of the debtor",
            "example": "ATU143543"
          },
          "paymentDetails": {
            "$ref": "#/components/schemas/PaymentDetails"
          },
          "contractDetails": {
            "type": "array",
            "description": "Contract data of the debtor",
            "items": {
              "$ref": "#/components/schemas/ContractDetails"
            }
          },
          "birthdate": {
            "type": "string",
            "format": "date",
            "description": "Birth date of the debtor",
            "example": "1952-05-04"
          },
          "firstName": {
            "type": "string",
            "description": "First name of the debtor",
            "example": "Sven"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the debtor name",
            "example": "Hannawald"
          },
          "secondLastName": {
            "type": "string",
            "description": "Second last name of the debtor name",
            "example": "Shmidt"
          },
          "sex": {
            "type": "string",
            "description": "Sex of the debtor",
            "example": "MALE"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code of the debtor",
            "example": "1180"
          },
          "city": {
            "type": "string",
            "description": "City of the debtor",
            "example": "Vienna"
          },
          "liablePerson": {
            "$ref": "#/components/schemas/LiablePersonDetails"
          },
          "contactDetails": {
            "type": "array",
            "description": "Contact numbers of the debtor",
            "items": {
              "$ref": "#/components/schemas/ContactDetails"
            }
          },
          "collectionCases": {
            "type": "array",
            "description": "Collection case of the debtor",
            "items": {
              "$ref": "#/components/schemas/CollectionCase"
            }
          },
          "addressLine1": {
            "type": "string",
            "description": "Address first line",
            "example": "Burgring 22"
          },
          "addressLine2": {
            "type": "string",
            "description": "Address second line",
            "example": "1180 Vienna"
          },
          "addressLine3": {
            "type": "string",
            "description": "Address third line",
            "example": "Austria"
          },
          "region": {
            "type": "string",
            "description": "Region of the debtor",
            "example": "Vienna"
          },
          "addressData": {
            "$ref": "#/components/schemas/AddressDetails"
          },
          "block": {
            "$ref": "#/components/schemas/OpenApiV1Block",
            "description": "Debtor is blocked for collection cases"
          }
        },
        "required": [
          "city",
          "debtorId",
          "firstName",
          "lastName",
          "membershipNr",
          "sex"
        ]
      },
      "DebtorSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of debtors",
            "items": {
              "$ref": "#/components/schemas/Debtor"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "LiablePersonDetails": {
        "type": "object",
        "description": " The LiablePerson is used for members not being responsible themself for payments. The complete element should identify the liable person with its details of address, contact data and bank account information. It includes also country specific elements.",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name of liable person",
            "example": "Sven"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of liable person",
            "example": "Hannawald"
          },
          "secondLastName": {
            "type": "string",
            "description": "Second last name liable person",
            "example": "Shmidt"
          },
          "birthdate": {
            "type": "string",
            "format": "date",
            "description": "Birthdate of liable person",
            "example": "1952-05-04"
          },
          "sex": {
            "type": "string",
            "description": "Sex of liable person",
            "example": "MALE"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code of liable person",
            "example": "1180"
          },
          "city": {
            "type": "string",
            "description": "City of liable person",
            "example": "Vienna"
          },
          "countryCode": {
            "type": "string",
            "description": "Country code of liable person",
            "example": "AT"
          },
          "contactDetails": {
            "type": "array",
            "description": "Contact data of liable person",
            "items": {
              "$ref": "#/components/schemas/ContactDetails"
            }
          },
          "identificationNumber": {
            "type": "string",
            "description": "Identification number of liable person",
            "example": "ATU143543"
          },
          "paymentDetails": {
            "$ref": "#/components/schemas/PaymentDetails"
          },
          "addressLine1": {
            "type": "string",
            "description": "Address first line",
            "example": "Burgring 22"
          },
          "addressLine2": {
            "type": "string",
            "description": "Address second line",
            "example": "1180 Vienna"
          },
          "addressLine3": {
            "type": "string",
            "description": "Address third line",
            "example": "Austria"
          },
          "region": {
            "type": "string",
            "description": "Region of liable person",
            "example": "Vienna"
          },
          "addressData": {
            "$ref": "#/components/schemas/AddressDetails",
            "description": "Address details of the liable person"
          }
        },
        "required": [
          "firstName",
          "lastName"
        ]
      },
      "OpenApiV1Block": {
        "type": "object",
        "properties": {
          "limitType": {
            "type": "string",
            "description": "Option to set customer or debt to blocklist",
            "enum": [
              "DISABLED",
              "LIMITED",
              "UNLIMITED"
            ],
            "example": "LIMITED",
            "x-enumDescriptions": {
              "DISABLED": "Customer or Debt will be removed from block list",
              "LIMITED": "Customer or Debt will added to block list until given date",
              "UNLIMITED": "Customer or Debt will added to block list indefinitely"
            }
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "Block customer or debt until",
            "example": "2022-09-20"
          }
        },
        "required": [
          "limitType"
        ]
      },
      "Recurrence": {
        "type": "object",
        "description": "Describes a recurrence with period and frequency",
        "properties": {
          "period": {
            "type": "string",
            "description": "Represents a period",
            "enum": [
              "DAY",
              "MONTH",
              "WEEK",
              "YEAR",
              "ONCE"
            ],
            "example": "MONTH"
          },
          "frequency": {
            "type": "integer",
            "format": "int32",
            "description": "Frequency of the recurrence, eq. for period Month and frequency 2 this claim will appear every second month",
            "example": 2
          }
        },
        "required": [
          "period"
        ]
      },
      "DebtCollectionConfiguration": {
        "type": "object",
        "description": "Contains the debt collection configuration for the partner.",
        "properties": {
          "client": {
            "$ref": "#/components/schemas/ClientDetails"
          },
          "debtCollectionType": {
            "type": "string",
            "default": "TRUST",
            "description": "Type of debt collection",
            "enum": [
              "TRUST",
              "PURCHASE"
            ],
            "example": "TRUST",
            "x-enumDescriptions": {
              "TRUST": "Claims are transferred, but still managed by the studio.",
              "PURCHASE": "Claims are transferred and bought by the debt collection agency."
            }
          },
          "derecognizeRemainingDebtsOnClosure": {
            "type": "string",
            "description": "Debt handling on positive or negative closure of case",
            "enum": [
              "BY_PARTNER",
              "ALWAYS"
            ],
            "example": "BY_PARTNER",
            "x-enumDescriptions": {
              "BY_PARTNER": "Indicates that the partner decides in update if the debt is written off.",
              "ALWAYS": "Indicates that the debt is always written off."
            }
          },
          "derecognizeRemainingDebtsOnRejection": {
            "type": "string",
            "description": "Debt handling on rejection or reversal of case",
            "enum": [
              "BY_PARTNER",
              "ALWAYS"
            ],
            "example": "BY_PARTNER",
            "x-enumDescriptions": {
              "BY_PARTNER": "Indicates that the partner decides in update if the debt is written off.",
              "ALWAYS": "Indicates that the debt is always written off."
            }
          }
        }
      },
      "DebtorId": {
        "type": "object",
        "description": "The debtor matches a member. This element is only giving id and debts of the member. DebtorId: Unique Id and used for all kind of communications, can be a decimal description or a UUID",
        "properties": {
          "debtorId": {
            "type": "string",
            "description": "Debtor unique id",
            "example": "2334545"
          },
          "block": {
            "$ref": "#/components/schemas/OpenApiV1Block",
            "description": "Debtor is blocked for collection cases"
          },
          "debts": {
            "type": "array",
            "description": "Debts of the debtor",
            "items": {
              "$ref": "#/components/schemas/Debt"
            }
          }
        },
        "required": [
          "debtorId"
        ]
      },
      "DebtorIdSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of debtors",
            "items": {
              "$ref": "#/components/schemas/DebtorId"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "CustomerSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of customers",
            "items": {
              "$ref": "#/components/schemas/Customer"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query (last ID of the customer)",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "OpenApiV1CustomerDataDtoCustomerPaymentData": {
        "type": "object",
        "properties": {
          "accountHolder": {
            "type": "string",
            "description": "The account holder of the bank account",
            "example": "Sven Hannawald"
          },
          "bankName": {
            "type": "string",
            "description": "Name of the bank",
            "example": "Deutsche Bank"
          },
          "iban": {
            "type": "string",
            "description": "Iban of the clients account",
            "example": "DE91 1000 0000 0123 4567 89"
          },
          "bic": {
            "type": "string",
            "description": "Bic of the clients account",
            "example": "DEUTDEFFXXX"
          },
          "requireSignature": {
            "type": "boolean",
            "description": "Is customer signature required to make amendment",
            "example": true
          },
          "amendmentConfigurationStatus": {
            "type": "string",
            "description": "Status of the amendment configuration.",
            "enum": [
              "READ",
              "CHANGES_REQUIRE_VERIFICATION",
              "CHANGES_WITHOUT_VERIFICATION"
            ],
            "example": "CHANGES_REQUIRE_VERIFICATION",
            "x-enumDescriptions": {
              "READ": "No changes to data are possible.",
              "CHANGES_REQUIRE_VERIFICATION": "Data can be changed, but needs verification to be applied to the customer.",
              "CHANGES_WITHOUT_VERIFICATION": "Data can be changed, will be applied to the customer with immediate effect."
            }
          },
          "pendingAmendment": {
            "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerPaymentData",
            "description": "Pending amendment"
          }
        },
        "required": [
          "amendmentConfigurationStatus"
        ]
      },
      "OpenApiV1CustomerDataDtoCustomerMasterData": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name of the customer",
            "example": "Edgar"
          },
          "lastName": {
            "type": "string",
            "description": "Surname of the customer",
            "example": "Bullock"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Birthday of the customer",
            "example": "1952-05-04"
          },
          "countryOfBirth": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Birth country of the customer",
            "example": "DE"
          },
          "customerTitle": {
            "type": "string",
            "description": "Title of the customer",
            "enum": [
              "NONE",
              "DR",
              "PROF"
            ],
            "example": "DR",
            "x-enumDescriptions": {
              "NONE": "No title",
              "PROF": "Professor title",
              "DR": "Ph.D. title"
            }
          },
          "amendmentConfigurationStatus": {
            "type": "string",
            "description": "Status of the amendment configuration.",
            "enum": [
              "READ",
              "CHANGES_REQUIRE_VERIFICATION",
              "CHANGES_WITHOUT_VERIFICATION"
            ],
            "example": "CHANGES_REQUIRE_VERIFICATION",
            "x-enumDescriptions": {
              "READ": "No changes to data are possible.",
              "CHANGES_REQUIRE_VERIFICATION": "Data can be changed, but needs verification to be applied to the customer.",
              "CHANGES_WITHOUT_VERIFICATION": "Data can be changed, will be applied to the customer with immediate effect."
            }
          },
          "pendingAmendment": {
            "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerMasterData",
            "description": "Pending amendment"
          }
        },
        "required": [
          "amendmentConfigurationStatus",
          "customerTitle",
          "dateOfBirth",
          "firstName",
          "gender",
          "lastName"
        ]
      },
      "OpenApiV1CustomerDataDtoCustomerContactData": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the customer",
            "example": "email@example.com"
          },
          "phonePrivate": {
            "type": "string",
            "description": "Private phone number of the customer",
            "example": "+49 00000000"
          },
          "phonePrivateMobile": {
            "type": "string",
            "description": "Private mobile phone number of the customer",
            "example": "+49 00000000000"
          },
          "phoneBusiness": {
            "type": "string",
            "description": "Business phone number of the customer",
            "example": "+49 00000000"
          },
          "phoneBusinessMobile": {
            "type": "string",
            "description": "Business mobile phone number of the customer",
            "example": "+49 00000000000"
          },
          "amendmentConfigurationStatus": {
            "type": "string",
            "description": "Status of the amendment configuration.",
            "enum": [
              "READ",
              "CHANGES_REQUIRE_VERIFICATION",
              "CHANGES_WITHOUT_VERIFICATION"
            ],
            "example": "CHANGES_REQUIRE_VERIFICATION",
            "x-enumDescriptions": {
              "READ": "No changes to data are possible.",
              "CHANGES_REQUIRE_VERIFICATION": "Data can be changed, but needs verification to be applied to the customer.",
              "CHANGES_WITHOUT_VERIFICATION": "Data can be changed, will be applied to the customer with immediate effect."
            }
          },
          "pendingAmendment": {
            "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerContactData",
            "description": "Pending amendment"
          }
        },
        "required": [
          "amendmentConfigurationStatus"
        ]
      },
      "OpenApiV1CustomerDataDtoCustomerAddressData": {
        "type": "object",
        "properties": {
          "street": {
            "type": "string",
            "description": "Street of the customer",
            "example": "Am Bahnhof"
          },
          "houseNumber": {
            "type": "string",
            "description": "Number of the customer's house",
            "example": "90"
          },
          "zipCode": {
            "type": "string",
            "description": "Zip code of the customer",
            "example": "12133"
          },
          "city": {
            "type": "string",
            "description": "City of the customer",
            "example": "Munich"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Country of the customer",
            "example": "DE"
          },
          "province": {
            "type": "string",
            "description": "Province for southern Europe/US countries",
            "example": "Madrid/California"
          },
          "provinceCode": {
            "type": "string",
            "description": "Province code for southern Europe/US countries",
            "example": "MD/CA"
          },
          "secondStreet": {
            "type": "string",
            "description": "Second street line of the customer's address",
            "example": "Second Street"
          },
          "cityPart": {
            "type": "string",
            "description": "City part of the customer's address",
            "example": "Tegel"
          },
          "district": {
            "type": "string",
            "description": "District of the customer's address",
            "example": "District 12"
          },
          "streetType": {
            "type": "string",
            "description": "Street type of the customer's address",
            "example": "Avenue"
          },
          "streetBlock": {
            "type": "string",
            "description": "Street block of the customer's address",
            "example": "5th block"
          },
          "portal": {
            "type": "string",
            "description": "Portal of the customer's address",
            "example": "Portal 1"
          },
          "stairway": {
            "type": "string",
            "description": "Stairway of the customer's address",
            "example": "Right stairway"
          },
          "door": {
            "type": "string",
            "description": "Door of the customer's address",
            "example": "Door 1"
          },
          "additionalAddressInformation": {
            "type": "string",
            "description": "Additional address information of the customer's address",
            "example": "Additional information"
          },
          "floor": {
            "type": "string",
            "description": "Floor of the customer's address",
            "example": "2nd floor"
          },
          "buildingName": {
            "type": "string",
            "description": "Building name",
            "example": "Empire State Building"
          },
          "amendmentConfigurationStatus": {
            "type": "string",
            "description": "Status of the amendment configuration.",
            "enum": [
              "READ",
              "CHANGES_REQUIRE_VERIFICATION",
              "CHANGES_WITHOUT_VERIFICATION"
            ],
            "example": "CHANGES_REQUIRE_VERIFICATION",
            "x-enumDescriptions": {
              "READ": "No changes to data are possible.",
              "CHANGES_REQUIRE_VERIFICATION": "Data can be changed, but needs verification to be applied to the customer.",
              "CHANGES_WITHOUT_VERIFICATION": "Data can be changed, will be applied to the customer with immediate effect."
            }
          },
          "pendingAmendment": {
            "$ref": "#/components/schemas/OpenApiV1CustomerDataPendingAmendmentDtoCustomerAddressData",
            "description": "Pending amendment"
          }
        },
        "required": [
          "amendmentConfigurationStatus",
          "city",
          "countryCode",
          "street",
          "zipCode"
        ]
      },
      "CustomerDocument": {
        "type": "object",
        "description": "Details of a customer document",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to download document valid for 15 minutes"
          },
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the document",
            "example": 1241246660
          },
          "fileName": {
            "type": "string",
            "description": "Name of the document"
          },
          "description": {
            "type": "string",
            "description": "Description of the document"
          }
        }
      },
      "CustomerDocuments": {
        "type": "object",
        "description": "List of customer documents",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of items",
            "items": {
              "$ref": "#/components/schemas/CustomerDocument"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "Contract": {
        "type": "object",
        "description": "Contract information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the contract",
            "example": 1000
          },
          "createdDate": {
            "type": "string",
            "format": "date",
            "description": "Creation date of the contract",
            "example": "2022-01-01"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the contract",
            "example": "2022-01-01"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of the contract",
            "example": "2022-10-01"
          },
          "rateName": {
            "type": "string",
            "description": "Rate name for the contract",
            "example": "Premium"
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of this contract",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          },
          "contractStatus": {
            "$ref": "#/components/schemas/ContractStatus"
          },
          "cancellationPeriod": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "cancelled": {
            "type": "boolean",
            "description": "Defines whether or not the current active contract has been cancelled"
          },
          "cancellationDate": {
            "type": "string",
            "format": "date",
            "description": "Contract cancellation date",
            "example": "2022-10-10"
          },
          "cancellationReceiptDate": {
            "type": "string",
            "format": "date",
            "description": "Contract cancellation receipt date",
            "example": "2022-10-10"
          },
          "cancellationReason": {
            "type": "string",
            "description": "Reason of the contract cancellation",
            "example": "Officially ordered studio closure"
          },
          "price": {
            "type": "number",
            "deprecated": true,
            "description": "Base price of the contract",
            "example": 19.9
          },
          "priceDetails": {
            "$ref": "#/components/schemas/PriceDetails",
            "description": "Price details of the contract"
          },
          "lastPossibleCancellationDate": {
            "type": "string",
            "format": "date",
            "description": "Latest date when the contract can be cancelled"
          },
          "term": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "extensionTerm": {
            "$ref": "#/components/schemas/TimePeriod"
          },
          "flatFeeContracts": {
            "type": "array",
            "description": "List of flat fee contracts",
            "items": {
              "$ref": "#/components/schemas/SubContract"
            }
          },
          "moduleContracts": {
            "type": "array",
            "description": "List of module contracts",
            "items": {
              "$ref": "#/components/schemas/SubContract"
            }
          },
          "signedDocumentUrl": {
            "type": "string",
            "description": "Url to download the contract related document. It will expire after 15 minutes"
          },
          "thirdPartyId": {
            "type": "string",
            "description": "Unique ID of the third party contract in the third party system",
            "example": "1000a"
          },
          "reversed": {
            "type": "boolean",
            "description": "Defines whether the contract has been reversed",
            "example": false
          },
          "reversalReason": {
            "type": "string",
            "description": "Reason of the contract reversal",
            "example": "Studio closure"
          },
          "reversalDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the contract was reversed",
            "example": "2026-03-10T23:59:59.999+02:00"
          }
        },
        "required": [
          "cancelled",
          "contractStatus",
          "createdDate",
          "endDate",
          "extensionTerm",
          "id",
          "lastPossibleCancellationDate",
          "price",
          "priceDetails",
          "rateName",
          "reversed",
          "startDate",
          "term"
        ]
      },
      "SubContract": {
        "type": "object",
        "description": "Subcontract of the parent contract",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the contract"
          },
          "rateName": {
            "type": "string",
            "description": "Rate name for the contract",
            "example": "Regular"
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date of the contract"
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date of contract"
          },
          "paymentFrequency": {
            "type": "string",
            "description": "Type of payment frequency",
            "enum": [
              "NON_RECURRING",
              "RECURRING",
              "MONTH_DAY",
              "TERM_BASED",
              "FREE"
            ]
          },
          "price": {
            "type": "number",
            "deprecated": true,
            "description": "Base price of the contract",
            "example": 19.9
          },
          "priceDetails": {
            "$ref": "#/components/schemas/PriceDetails",
            "description": "Price details of the contract"
          },
          "cancelled": {
            "type": "boolean",
            "description": "Defines whether or not the current active contract has been cancelled"
          },
          "cancellationDate": {
            "type": "string",
            "format": "date",
            "description": "Contract cancellation date",
            "example": "2022-10-10"
          },
          "cancellationReceiptDate": {
            "type": "string",
            "format": "date",
            "description": "Contract cancellation receipt date",
            "example": "2022-10-10"
          },
          "contractStatus": {
            "$ref": "#/components/schemas/ContractStatus"
          },
          "rateCodes": {
            "type": "array",
            "description": "Rate codes of this contract",
            "items": {
              "$ref": "#/components/schemas/RateCode"
            }
          }
        },
        "required": [
          "cancelled",
          "contractStatus",
          "id",
          "paymentFrequency",
          "price",
          "priceDetails",
          "rateName",
          "startDate"
        ]
      },
      "BenefitValidationDto": {
        "type": "object",
        "description": "Validation result of benefits",
        "properties": {
          "key": {
            "type": "string",
            "description": "Benefit key",
            "example": "BENEFIT_KEY"
          },
          "valid": {
            "type": "boolean",
            "description": "Validation result",
            "example": false
          }
        },
        "required": [
          "key",
          "valid"
        ]
      },
      "CustomerCheckin": {
        "type": "object",
        "description": "Data of one checkin entry for a customer",
        "properties": {
          "checkinId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the studio visit",
            "example": 1001
          },
          "checkInDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Check in time of the studio visit in ISO-8601 format",
            "example": "2023-12-03T10:15:30+01:00"
          },
          "checkOutDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Check out time of the studio visit in ISO-8601 format",
            "example": "2023-12-03T10:16:30+01:00"
          },
          "studioId": {
            "type": "integer",
            "format": "int64",
            "description": "Studio ID of the checkin studio",
            "example": 123
          },
          "studioName": {
            "type": "string",
            "description": "Studio name of the checkin studio",
            "example": "Example studio"
          }
        },
        "required": [
          "checkinId"
        ]
      },
      "CustomerCheckinSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of checkins",
            "items": {
              "$ref": "#/components/schemas/CustomerCheckin"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "BookingEntry": {
        "type": "object",
        "description": "Data of one booking entry for a customer",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The internal id of the entry"
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Date to booking is/was to be paid"
          },
          "description": {
            "type": "string",
            "description": "Description of the booking"
          },
          "amount": {
            "$ref": "#/components/schemas/Money"
          },
          "openAmount": {
            "$ref": "#/components/schemas/Money"
          },
          "installmentPlan": {
            "type": "boolean",
            "description": "Whether or not the booking was transferred into an installment plan"
          },
          "chargeType": {
            "type": "string",
            "description": "Represents the classification of the charge",
            "enum": [
              "MEMBERSHIP_CHARGE",
              "BONUS_PERIOD_CHARGE",
              "CONTRACT_IDLE_PERIOD_CHARGE",
              "IDLE_PERIOD_CHARGE",
              "TRIAL_PERIOD_CHARGE",
              "FLAT_FEE",
              "MODULE_FEE",
              "CREDIT",
              "DEBT_CLAIM_REVERSAL",
              "DEBT_CLAIM_REDUCTION",
              "DAMAGE_COMPENSATION",
              "BALANCE_DEBIT",
              "BALANCE_CREDIT",
              "DEBIT_ADJUSTMENT",
              "CREDIT_ADJUSTMENT",
              "CHARGE_DISCOUNT",
              "SALES_DIRECT_DEBIT",
              "SALES_NON_DIRECT_DEBIT",
              "CONSUMPTION_CREDIT_RECHARGE",
              "STARTER_PACKAGE",
              "ADDITIONAL_CHARGE",
              "TRANSACTION_FEE",
              "NO_SHOW_FEE",
              "DUNNING_FEE",
              "ADDRESS_INQUIRY_FEE",
              "CHARGED_BACK_FEE",
              "CANCELATION_FEE",
              "CARD_REPLACEMENT_FEE",
              "REFUND_COMPENSATION",
              "BENEFIT_DEBT_CLAIM",
              "DEBT_CLAIM_ABANDONMENT",
              "DEBT_CLAIM_CONVERSION",
              "RETURNED_BOTTLE_DEPOSIT"
            ],
            "example": "MEMBERSHIP_CHARGE",
            "x-enumDescriptions": {
              "IDLE_PERIOD_CHARGE": "Charge for a freeze period",
              "CREDIT": "Credit from a freeze period",
              "STARTER_PACKAGE": "Initial package or starter kit charge",
              "FLAT_FEE": "One-time or recurring flat fee for additional services or products",
              "CHARGED_BACK_FEE": "Fee for chargeback processing",
              "DEBT_CLAIM_REDUCTION": "Reduction of an existing debt claim",
              "DAMAGE_COMPENSATION": "Compensation for damages or losses",
              "CANCELATION_FEE": "Fee for canceling a service or contract",
              "MODULE_FEE": "One-time or recurring module fee for additional services or products",
              "SALES_DIRECT_DEBIT": "Sale transaction via direct debit payment",
              "BONUS_PERIOD_CHARGE": "Bonus period charge to compensate regular charge during bonus period",
              "ADDRESS_INQUIRY_FEE": "Fee for address inquiry services",
              "SALES_NON_DIRECT_DEBIT": "Sale transaction via non-direct debit payment",
              "DUNNING_FEE": "Fee for dunning or collection activities",
              "TRANSACTION_FEE": "Fee for processing a transaction",
              "DEBT_CLAIM_ABANDONMENT": "Abandonment of a debt claim",
              "DEBIT_ADJUSTMENT": "Debit adjustment entry",
              "DEBT_CLAIM_CONVERSION": "Conversion of a debt claim to another type",
              "ADDITIONAL_CHARGE": "Manual created one-time charge",
              "BENEFIT_DEBT_CLAIM": "Debt claim related to services",
              "NO_SHOW_FEE": "Fee charged for missed appointments",
              "CONTRACT_IDLE_PERIOD_CHARGE": "Charge for a contract freeze period",
              "REFUND_COMPENSATION": "Compensation for a refund",
              "CHARGE_DISCOUNT": "Discount applied to a charge",
              "MEMBERSHIP_CHARGE": "Regular membership charge for a contract",
              "CARD_REPLACEMENT_FEE": "Fee for replacing a card",
              "CREDIT_ADJUSTMENT": "Credit adjustment entry",
              "TRIAL_PERIOD_CHARGE": "Charge for a trial or probationary membership period",
              "CONSUMPTION_CREDIT_RECHARGE": "Recharge of consumption credit balance",
              "DEBT_CLAIM_REVERSAL": "Reversal of a previously created debt claim",
              "BALANCE_DEBIT": "Imported debt claim balance",
              "BALANCE_CREDIT": "Imported credit balance",
              "RETURNED_BOTTLE_DEPOSIT": "Credit for returned bottle deposits"
            }
          },
          "paidPeriodFrom": {
            "type": "string",
            "format": "date",
            "description": "Start date of the service period (if applicable)",
            "example": "2025-01-01"
          },
          "paidPeriodTo": {
            "type": "string",
            "format": "date",
            "description": "End date of the service period (if applicable)",
            "example": "2025-01-31"
          }
        },
        "required": [
          "chargeType",
          "dueDate",
          "id",
          "installmentPlan"
        ]
      },
      "BookingEntrySlicedResult": {
        "type": "object",
        "description": "Slice of booking entries",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of booking entries",
            "items": {
              "$ref": "#/components/schemas/BookingEntry"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "CustomerAccountBalance": {
        "type": "object",
        "description": "Account balance data of the customer",
        "properties": {
          "accountBalance": {
            "$ref": "#/components/schemas/Money"
          },
          "consumptionCredit": {
            "$ref": "#/components/schemas/Money"
          },
          "dunningLevel": {
            "type": "string",
            "description": "The dunning level of the customer",
            "example": "Dunning Level 1"
          },
          "inDebtCollection": {
            "type": "boolean",
            "description": "Whether the customers open debt claims where transferred to a debt collection agency"
          }
        },
        "required": [
          "inDebtCollection"
        ]
      },
      "CustomerAccessCode": {
        "type": "object",
        "description": "Customer's access code",
        "properties": {
          "format": {
            "type": "string",
            "description": "Represents an access code format the content should be encoded into or decoded from",
            "enum": [
              "QR_CODE"
            ],
            "example": "QR_CODE",
            "x-enumDescriptions": {
              "QR_CODE": "QR code format"
            }
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "Access code expiry date and time with zone",
            "example": "2024-06-13T10:33:00Z"
          },
          "content": {
            "type": "string",
            "description": "Access code content that should be rendered in a format defined by the format property",
            "example": "0049267681211943991"
          }
        },
        "required": [
          "content",
          "format"
        ]
      },
      "Measurement": {
        "type": "object",
        "description": "Measurement information",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 1001
          },
          "firstName": {
            "type": "string",
            "description": "First name of the customer",
            "example": "Edgar"
          },
          "lastName": {
            "type": "string",
            "description": "Surname of the customer",
            "example": "Bullock"
          },
          "age": {
            "type": "integer",
            "format": "int32",
            "description": "Age of the customer",
            "example": 16
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date",
            "description": "Birthday of the customer",
            "example": "2000-01-01"
          },
          "gender": {
            "type": "string",
            "description": "Gender of the customer",
            "enum": [
              "MALE",
              "FEMALE",
              "UNISEX"
            ],
            "example": "MALE",
            "x-enumDescriptions": {
              "MALE": "Male gender of the customer",
              "FEMALE": "Female gender of the customer",
              "UNISEX": "Unisex gender of the customer"
            }
          },
          "height": {
            "type": "number",
            "description": "Height of the customer",
            "example": 180.2
          }
        },
        "required": [
          "id"
        ]
      },
      "AdditionalInformationField": {
        "type": "object",
        "description": "Representation of an additional information field",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique ID of the additional information field",
            "example": 1234567890
          },
          "name": {
            "type": "string",
            "description": "The name of the additional information field",
            "example": "Membership Type"
          },
          "type": {
            "type": "string",
            "description": "The type of an additional information field. This defines how the field is used and what kind of data it can hold.",
            "enum": [
              "BOOLEAN",
              "DATE",
              "LIST",
              "NUMERIC",
              "TEXT"
            ],
            "example": "BOOLEAN",
            "x-enumDescriptions": {
              "DATE": "This field holds a date value, used for storing dates.",
              "NUMERIC": "This field holds a numeric value, used for storing numbers.",
              "TEXT": "This field holds a text value, used for storing free-form text input.",
              "LIST": "This field holds a list of items, allowing selection from predefined options.",
              "BOOLEAN": "This field holds a boolean value, typically used for yes/no questions."
            }
          },
          "abbreviation": {
            "type": "string",
            "description": "The abbreviation of the additional information field",
            "example": "MT"
          },
          "listItems": {
            "type": "array",
            "description": "A list of list items. This is only used if the field type is a list.",
            "items": {
              "$ref": "#/components/schemas/AdditionalInformationListItem"
            }
          }
        },
        "required": [
          "id",
          "name",
          "type"
        ]
      },
      "AdditionalInformationListItem": {
        "type": "object",
        "description": "Representation of an additional information list item used in additional information fields of type list",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "description": "The unique ID of the additional information list item",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "The name of the additional information list item",
            "example": "First Option"
          }
        },
        "required": [
          "id",
          "name"
        ]
      },
      "StudioInformationBase": {
        "type": "object",
        "description": "General studio information visible for user",
        "properties": {
          "name": {
            "type": "string",
            "description": "Studio name",
            "example": "Example studio"
          },
          "description": {
            "type": "string",
            "description": "Studio description",
            "example": "Example studio description"
          },
          "country": {
            "type": "string",
            "description": "Studio address' country",
            "example": "Germany"
          },
          "countryCode": {
            "type": "string",
            "format": "ISO 3166-1",
            "description": "Studio address' country code",
            "example": "DE"
          },
          "studioId": {
            "type": "integer",
            "format": "int64",
            "description": "Studio Id",
            "example": 123
          },
          "openingDate": {
            "type": "string",
            "format": "date",
            "description": "Studio opening date",
            "example": "2025-06-11"
          },
          "closingDate": {
            "type": "string",
            "format": "date",
            "description": "Studio closing date",
            "example": "2029-01-01"
          }
        },
        "required": [
          "studioId"
        ]
      },
      "ClassSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of classes",
            "items": {
              "$ref": "#/components/schemas/Class"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query (last ID of the class)",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      },
      "AppointmentBookingResultWithCustomerId": {
        "type": "object",
        "description": "Represents successful booking, which contains an additional customer id",
        "properties": {
          "bookingId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the appointment booking",
            "example": 2033
          },
          "bookingStatus": {
            "type": "string",
            "description": "Status of the appointment booking",
            "enum": [
              "BOOKED",
              "BOOKED_WITH_CONFIRMATION_REQUIRED",
              "CANCELED"
            ],
            "example": "BOOKED",
            "x-enumDescriptions": {
              "BOOKED": "Customer is successfully booked",
              "CANCELED": "Customer booking is canceled",
              "BOOKED_WITH_CONFIRMATION_REQUIRED": "Customer booking is successful, but confirmation is required"
            }
          },
          "startDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "Start date and time of the appointment booking"
          },
          "endDateTime": {
            "type": "string",
            "format": "date-time",
            "description": "End date and time of the appointment booking"
          },
          "title": {
            "type": "string",
            "description": "Title of the appointment booking",
            "example": "Mission Beach body"
          },
          "duration": {
            "type": "integer",
            "format": "int32",
            "description": "Duration of the appointment booking in minutes",
            "example": 45
          },
          "category": {
            "type": "string",
            "description": "Category of the appointment booking",
            "example": "Fitness"
          },
          "description": {
            "type": "string",
            "description": "Description of the appointment booking",
            "example": "Get your body ready for beaches"
          },
          "imgUrl": {
            "type": "string",
            "description": "Image URL assigned to display this appointment booking"
          },
          "instructors": {
            "type": "array",
            "description": "Instructors list of the appointment booking",
            "items": {
              "$ref": "#/components/schemas/Instructor"
            }
          },
          "appointmentStatus": {
            "type": "string",
            "description": "The status of an appointment",
            "enum": [
              "PLANNED",
              "CANCELED",
              "COMPLETED"
            ],
            "example": "COMPLETED",
            "x-enumDescriptions": {
              "COMPLETED": "The appointment is completed.",
              "CANCELED": "The appointment is canceled.",
              "PLANNED": "The appointment is planned."
            }
          },
          "participantStatus": {
            "type": "string",
            "description": "The status of a participant",
            "enum": [
              "PARTICIPATING",
              "NOT_PARTICIPATING",
              "UNSET"
            ],
            "example": "PARTICIPATING",
            "x-enumDescriptions": {
              "PARTICIPATING": "The customer is participating.",
              "UNSET": "The participation status is not set.",
              "NOT_PARTICIPATING": "The customer is not participating."
            }
          },
          "customerId": {
            "type": "integer",
            "format": "int64",
            "description": "Unique ID of the customer",
            "example": 1234
          }
        },
        "required": [
          "appointmentStatus",
          "bookingId",
          "bookingStatus",
          "customerId",
          "endDateTime",
          "participantStatus",
          "startDateTime"
        ]
      },
      "BookableAppointmentSlicedResult": {
        "type": "object",
        "properties": {
          "result": {
            "type": "array",
            "description": "List of bookable appointments",
            "items": {
              "$ref": "#/components/schemas/BookableAppointment"
            }
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there exists next data slice",
            "example": true
          },
          "offset": {
            "type": "string",
            "description": "Offset for next query (last ID of the bookable appointment)",
            "example": "1234567890"
          }
        },
        "required": [
          "hasNext",
          "offset",
          "result"
        ]
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "description": "API key received from our team",
        "name": "X-API-KEY",
        "in": "header"
      }
    }
  }
}