openapi: 3.1.0
info:
  title: PerfectGym Next API
  description: |-
    * Appointment, bookable appointment and slots operations
    * Redeem checkin vouchers
    * Class and slots operations
    * Cross studio operations
    * Get customers and contracts
    * Retrieve customer accounting details
    * Retrieve customer communication details
    * Get device information
    * Employee operations
    * Debt collection operations
    * Leads operations
    * Manage membership contracts
    * Membership operations
    * Payment operations
    * Get studio information
    * Get trial offers information
  version: 1.10.0
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: 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`


        Request 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`


        Returns 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`

        Creates 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`

        Creates 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`

        Redeem 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`

        Get 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`


        Returns 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/memberships/{customerId}/self-service/contract-data:
    get:
      tags:
        - Membership Self-service
      summary: Get customer's contract data
      description: |-
        Required Scopes: `MEMBERSHIP_SELF_SERVICE_READ`

        Returns 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`

        Returns 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`

        Returns 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`

        Returns 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`

        Returns 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`

        Get 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`

        Returns 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
      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`

        Returns 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`


        Returns 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`


        Returns 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`

        Returns 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`

        Activates 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`


        Adds 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`

        Creates 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`

        Validates 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`

        Get 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`

        Returns 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/memberships/membership-offers/{membershipOfferId}:
    get:
      tags:
        - Memberships
      summary: Get membership offer by id
      description: |-
        Required Scopes: `MEMBERSHIP_READ`

        Returns 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`

        Returns 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`

        Returns 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`


        Returns 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`

        Returns 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`


        Returns 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`

        Returns 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`

        Returns 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`

        Get 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`

        Update 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/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`

        Creates 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`


        Returns 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`

        Creates 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`


        Returns 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`

        Get 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`

        Returns 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`

        Get 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`

        Get 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`

        Returns 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`

        Returns 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`


        Returns 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`

        Returns 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`

        Updates 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`

        Validate 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/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`


        Withdraws 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`

        Returns 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`

        Returns 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`

        Returns 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`


        Returns 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`


        Returns 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`

        Create 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`


        After 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`


        Returns 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`

        Creates 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`

        Returns 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`

        Book 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/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`

        Get 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`

        Returns 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`

        Returns 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`


        Validate 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`


        Request 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/classes/booking/book:
    post:
      tags:
        - Classes
      summary: Book a class slot
      description: |-
        Required Scopes: `CLASSES_WRITE`

        Book 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`


        Returns 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/debt-collection/cases:
    get:
      tags:
        - Finance
      summary: Get debt collection cases
      description: >-
        Required Scopes: `DEBT_COLLECTION_READ`


        Returns 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`

        Returns 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`

        Returns 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`

        Get 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`

        Delete 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`


        Get 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`


        Create 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`


        Returns 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`

        Creates 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`

        Update 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`

        Validate 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`

        Returns 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`

        Returns 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`

        Returns 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`

        Get 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`


        Update 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`

        Withdraw 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`


        Validate 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`

        Saves 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`

        Returns 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/classes/booking/{bookingId}:
    get:
      tags:
        - Classes
      summary: Get class booking by id
      description: |-
        Required Scopes: `CLASSES_READ`

        Returns 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`

        Cancel 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`


        Get 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`

        Returns 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`


        Returns 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`

        Returns 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`

        Withdraw 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`

        Book 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`

        Performs 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 card number
      description: |-
        Required Scopes(any of): `CUSTOMER_BENEFIT_READ`, `CUSTOMER_READ`

        Returns customer's benefits by card number
      operationId: getBenefitsByCardNumber
      parameters:
        - name: cardNumber
          in: query
          description: Card number to identify the customer
          required: true
          schema:
            type: string
        - name: cardNumberFormat
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/CardNumberFormat'
            default: DECIMAL
        - 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`

        Book 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`

        Get 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/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`


        Returns 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`


        Confirm 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/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`


        Get 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/customers/{customerId}/access-code:
    get:
      tags:
        - Customers
      summary: Get customer's access code
      description: |-
        Required Scopes: `CUSTOMER_READ`

        Returns 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: 12
  /v1/customers/{customerId}/access-medium:
    put:
      tags:
        - Customers
      summary: Add a new access medium to a customer
      description: |-
        Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`

        Returns 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: 13
  /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`


        Validate 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-mediums:
    post:
      tags:
        - Customers
      summary: Add a new access medium to a customer
      description: |-
        Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`

        Returns 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: 13
  /v1/customers/{customerId}/access-mediums/{accessMediumId}:
    put:
      tags:
        - Customers
      summary: Update customer's access medium
      description: >-
        Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`


        Updates 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: 14
    delete:
      tags:
        - Customers
      summary: Delete customer's access medium
      description: >-
        Required Scopes: `CUSTOMER_ACCESS_MEDIUM_WRITE`


        Deletes 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: 15
  /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`


        Purchase 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/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`


        Get 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`


        Creates 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/customers/{customerId}/documents:
    get:
      tags:
        - Customers
      summary: Returns all documents for a customer
      description: |-
        Required Scopes: `CUSTOMER_DOCUMENT_READ`

        Returns 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: 16
    post:
      tags:
        - Customers
      summary: Upload new document to a customer
      description: |-
        Required Scopes: `CUSTOMER_DOCUMENT_WRITE`

        Returns 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: 17
  /v1/customers/{customerId}/documents/{id}:
    get:
      tags:
        - Customers
      summary: Returns document for a customer
      description: |-
        Required Scopes: `CUSTOMER_DOCUMENT_READ`

        Returns 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: 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`


        Withdraws 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}/images:
    put:
      tags:
        - Customers
      summary: Update customer profile image
      description: >-
        Required Scopes: `CUSTOMER_WRITE`


        Updates 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: 18
  /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`

        Returns 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}/access-restrictions:
    put:
      tags:
        - Customers
      summary: Set customer's access restriction
      description: >
        Required Scopes: `CUSTOMER_ACCESS_RESTRICTION_WRITE`


        Creates or updates access restriction for the customer.

        If the customer already has an access restriction, it will be updated
        with the provided data. Only previously created restrictions may be
        updated.

        If no such restriction exists, it will be created. It is necessary to
        provide either both `startDate` and `endDate` or neither of them.
      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: 19
    delete:
      tags:
        - Customers
      summary: Delete customer's access restriction
      description: >-
        Required Scopes: `CUSTOMER_ACCESS_RESTRICTION_WRITE`


        Deletes 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: 20
  /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`

        Get 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/taxadvisor/exports/create:
    post:
      tags:
        - Finance
      summary: Create tax advisor export
      description: |-
        Required Scopes: `TAX_ADVISOR_EXPORT_WRITE`

        Returns 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`


        Creates 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: 21
  /v1/taxadvisor/exports/{exportId}:
    get:
      tags:
        - Finance
      summary: Get tax advisor export by id
      description: |-
        Required Scopes: `TAX_ADVISOR_EXPORT_READ`

        Returns 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`


        Returns 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: 22
  /v1/customers/{customerId}/additional-information-field-assignments:
    put:
      tags:
        - Customers
      summary: Sets additional information field assignments
      description: >-
        Required Scopes: `ADDITIONAL_INFORMATION_WRITE`


        Sets 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: 23
  /v1/customers/{customerId}/switch-studio:
    post:
      tags:
        - Customers
      summary: Switch studio
      description: >-
        Required Scopes: `CUSTOMER_WRITE`


        Switches 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: 24
  /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
          description: Reason of the idle period
          example: Vacation
        fee:
          $ref: '#/components/schemas/Money'
        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
      required:
        - endDate
        - fee
        - id
        - reason
        - startDate
        - state
    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
    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
      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.
      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'.
      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
            - 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
      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
               instrument intended for future payment runs (e.g., BACS, credit card).
            ECOM: >
              Use when the user is making a purchase or when the payment
              instrument
               will be used for future user-initiated payments (e.g., saving a credit card for later purchases).
        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.


            - **Conditions for use**: This ID is required for payment sessions
            involving existing customers.


            - **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.


            - **Mutually exclusive with**: `finionPayCustomerId`
          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.


            - **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.


            - **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.


            - **Mutually exclusive with**: `customerId`
          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 retreive existing
            payment instruments.
          example: 753ea8ec-c2ec-4761-824b-bc46eda3f644
      required:
        - finionPayCustomerId
        - token
        - tokenValidUntil
    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
         and per the rate's payment frequency (e.g. 1 week)
      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
    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/Money'
          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/Money'
          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
    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'
      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
    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
    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: 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/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
      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
    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
      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.
        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
        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.
        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.
        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
          example: INVALID_CODE
          x-enumDescriptions:
            INVALID_CODE: Represents an invalid voucher code
        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
    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
    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
        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
        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
      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
          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:
        - canceledAmount
        - 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'
        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
    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
      required:
        - email
        - firstname
        - lastname
        - 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
      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
      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
        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
    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'
        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
    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
    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
    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'
    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: Maximum count of idle period terms
          example: 6
        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
          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
      required:
        - accessRefusal
        - contractHasExtension
        - dayBasedTermShorteningAllowed
        - firstPossibleStartDate
        - freeTerms
        - idlePeriodCreationStatus
        - idlePeriodFee
        - idlePeriodReasons
        - maxTerms
        - nextPossibleStartDateOnly
        - temporalUnit
        - unlimitedAllowed
    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
    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'
      required:
        - id
        - paymentFrequency
    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
      required:
        - cancelled
        - contractStatus
        - createdDate
        - endDate
        - extensionTerm
        - id
        - lastPossibleCancellationDate
        - price
        - priceDetails
        - rateName
        - 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
      required:
        - 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
