EGYM Member Account API

These operations are needed to create and update member accounts and their membership information.

Operations 14

GET /api/v2/accounts/{accountId} Retrieve an account #
PUT /api/v2/accounts/{accountId} Update an account #
DELETE /api/v2/accounts/{accountId} Delete an account #
PATCH /api/v2/accounts/{accountId} Partially update an account #
PUT /api/v2/accounts/{accountId}/images Upload account image #
DELETE /api/v2/accounts/{accountId}/images Delete account image #
GET /api/v2/accounts List member accounts #
POST /api/v2/accounts Create an account #
GET /api/v2/accounts/{accountId}/roles Retrieve an account roles #
POST /api/v2/accounts/{accountId}/roles Set an account roles #
GET /api/v2/accounts/rfid/{rfid} Retrieve an account by RFID #
GET /api/v2/accounts/nfc/{nfc} Retrieve an account by NFC #
GET /api/v2/accounts/membership/{membershipId} Retrieve an account by membership ID #
GET /api/v2/accounts/email/{email} Retrieve an account by email #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/egym-member-account-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

egym-member-account-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: MMS API V2 Member Account API
  description: 'RESTful API specification for integrating gym management systems with the EGYM platform. This OpenAPI document defines all available endpoints, request/response schemas, authentication requirements, and error codes.


    **Key Features:**

    - Member account and membership management

    - RFID assignment and management

    - Real-time gym visit tracking (check-in/check-out)

    - EGYM product booking (Smart Strength, EGYM+)

    - Trainer task creation and tracking

    - Webhook subscriptions for event notifications

    - Push notifications to EGYM mobile apps

    - Member migration from V1 API'
  termsOfService: https://egym.com/en/terms/
  contact:
    name: MMS Connect Team
    url: https://egym.com/
    email: connect@egym.com
  version: 2.0.0
servers:
- url: https://mms.api.ed.ts.egym.coffee
  description: Test
- url: https://mms.api.egym.com
  description: Prod
security:
- mms: []
tags:
- name: Member Account
  description: These operations are needed to create and update member accounts and their membership information.
paths:
  /api/v2/accounts/{accountId}:
    get:
      tags:
      - Member Account
      summary: Retrieve an account
      description: Retrieve an account using accountId.
      operationId: retrieveAccount
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    put:
      tags:
      - Member Account
      summary: Update an account
      description: Update an account using accountId.
      operationId: updateAccount
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemberAccountDTO'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
      - Member Account
      summary: Delete an account
      description: 'Delete an account using accountId.

        eraseMemberData parameter is optional and defaults to false. If set to true it removes all member data that belongs to a gym (personal data, contract data, rfid, product bookings).

        If set to false it deletes only membershipId and contract data.

        '
      operationId: eraseAccountMembershipData
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      - name: eraseMemberData
        in: query
        description: If set to true it removes all member data that belongs to a gym (personal data, contract data, rfid, product bookings). If set to false it deletes only membershipId and contract data.
        required: false
        schema:
          type: boolean
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    patch:
      tags:
      - Member Account
      summary: Partially update an account
      description: Partially update an account using accountId. Only non-null fields in the request will be updated. This is optimized for small, incremental changes.
      operationId: partialUpdate
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchMemberAccountDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts/{accountId}/images:
    put:
      tags:
      - Member Account
      summary: Upload account image
      description: 'This endpoint allows to upload a profile picture to the specified user using accountId (Supported formats: JPG, JPEG, PNG. Max file size: 16MB)'
      operationId: uploadImage
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      - name: Content-Length
        in: header
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  $ref: '#/components/schemas/Part'
              required:
              - file
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    delete:
      tags:
      - Member Account
      summary: Delete account image
      description: This endpoint allows to delete a profile picture of the specified user using accountId
      operationId: deleteImage
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts:
    get:
      tags:
      - Member Account
      summary: List member accounts
      description: 'Request all member accounts with paginated response. Result is always ordered by update timestamp (DESC). By default only accounts of the current gym are returned, otherwise set `currentGymOnly` to false. '
      operationId: listAccounts
      parameters:
      - name: currentGymOnly
        in: query
        required: false
        schema:
          type: boolean
          default: true
      - name: fromTimestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
        example: '2022-09-22T14:19:26.303Z'
      - name: toTimestamp
        in: query
        required: false
        schema:
          type: string
          format: date-time
        example: '2022-09-22T14:19:26.303Z'
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          format: int32
          default: 0
          minimum: 0
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          format: int32
          default: 10
          maximum: 100
          minimum: 0
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageableResponseMemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
      - Member Account
      summary: Create an account
      description: Create an account in the EGYM System.
      operationId: publishAccount
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemberAccountDTO'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts/{accountId}/roles:
    get:
      tags:
      - Member Account
      summary: Retrieve an account roles
      description: Retrieve an account roles in the current gym for given accountId
      operationId: getRoles
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GymRolesDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
    post:
      tags:
      - Member Account
      summary: Set an account roles
      description: Update an account roles using accountId.
      operationId: assignRoles
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GymRolesDTO'
        required: true
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts/rfid/{rfid}:
    get:
      tags:
      - Member Account
      summary: Retrieve an account by RFID
      description: Retrieve an account using RFID.
      operationId: getByRfid
      parameters:
      - name: rfid
        in: path
        required: true
        schema:
          type: string
          minLength: 1
      - name: tagFormat
        in: query
        required: false
        schema:
          type: string
          enum:
          - HITAG1
          - MIFARE
          - LEGIC
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts/nfc/{nfc}:
    get:
      tags:
      - Member Account
      summary: Retrieve an account by NFC
      description: Retrieve an account using NFC.
      operationId: getByNfc
      parameters:
      - name: nfc
        in: path
        required: true
        schema:
          type: string
          minLength: 1
      - name: nfcFormat
        in: query
        description: '**Deprecated**: Use `passTypeId` or `collectorId` instead.'
        required: false
        deprecated: true
        schema:
          type: string
          enum:
          - NFC_EGYM_APPLE
          - NFC_EGYM_GOOGLE
          - NFC_EXTERNAL_APPLE
          - NFC_EXTERNAL_GOOGLE
      - name: collectorId
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: passTypeId
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts/membership/{membershipId}:
    get:
      tags:
      - Member Account
      summary: Retrieve an account by membership ID
      description: Retrieve an account using membershipId.
      operationId: retrieveAccountByMembershipId
      parameters:
      - name: membershipId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
  /api/v2/accounts/email/{email}:
    get:
      tags:
      - Member Account
      summary: Retrieve an account by email
      description: Retrieve an account using email.
      operationId: getByEmail
      parameters:
      - name: email
        in: path
        required: true
        schema:
          type: string
          maxLength: 320
          minLength: 5
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemberAccountDTO'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDTO'
components:
  schemas:
    CorporateFitnessDTO:
      type: object
      properties:
        startTimestamp:
          type: string
          description: The date (in ISO format) when the corporate fitness (Qualitrain/Wellpass) membership will start, in case that is in the future. This field will not be returned in case of an active or past corporate fitness membership.
          example: '2021-03-08T18:26:47Z'
        endTimestamp:
          type: string
          description: The date (in ISO format) when the corporate fitness (Qualitrain/Wellpass) membership ends. This field is only returned in case there is a defined end timestamp for the corporate fitness membership.
          example: '2021-03-08T18:26:47Z'
    Part: {}
    ErrorDTO:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
          description: The timestamp of the request.
        path:
          type: string
          description: The path requested.
        requestId:
          type: string
          description: The request ID.
          example: de625cf1-1
        status:
          type: integer
          format: int32
          description: The http status code.
        error:
          type: string
          description: The error.
        errorCode:
          type: string
          description: The static error code.
        message:
          type: string
          description: The message to describe the error.
        fieldErrors:
          type: array
          description: The constraint violations.
          items:
            $ref: '#/components/schemas/FieldErrorDTO'
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Additional information of the error context
    PatchMemberAccountDTO:
      type: object
      properties:
        email:
          type: string
          description: The Member email address. It should be unique within the gym chain.
        firstName:
          type: string
          description: The Member first name.
          example: John
        lastName:
          type: string
          description: The Member last name.
          example: Wick
        dateOfBirth:
          type: string
          format: date
          description: 'The Member date of birth. format: yyyy-MM-dd'
        gender:
          type: string
          description: The Member gender. Please note that NON_BINARY is not correctly supported yet, we send it as FEMALE for the usage of the machines.
          enum:
          - MALE
          - FEMALE
          - NON_BINARY
        contact:
          $ref: '#/components/schemas/ContactDTO'
          description: The user's contact information
        membership:
          $ref: '#/components/schemas/PatchMembershipDTO'
          description: The membership details.
    FieldErrorDTO:
      type: object
      properties:
        name:
          type: string
          description: The field name.
          example: age
        message:
          type: string
          description: The error message.
          example: Must be greater than 10.
        rejectedValue:
          description: The rejected value.
          example: 3
    PatchMembershipDTO:
      type: object
      properties:
        membershipId:
          type: string
          description: Member ID in the gym software. It must be unique for exactly one member in the gym chain.
        agreementNumber:
          type: string
          description: The agreement number is the number of the membership between the member and the gym chain.
        membershipType:
          type: string
          description: Type of the member's membership to determine available features.
          enum:
          - BASIC
          - PREMIUM
          - PROSPECT
          - CORPORATE_FITNESS
        membershipSubType:
          type: string
          description: Extension of membershipStatus for further customization for this user. One membershipStatus can have multiple membershipSubType.
          maxLength: 128
          minLength: 0
        endOfContract:
          type: string
          format: date
          description: 'Date when the member''s contract ends. For gyms with automatic contract renewal, send the date when the contract would run out, if cancelled. Update the field when the contract was renewed (manually and automatically renewals). format: yyyy-MM-dd. Must be on or after startOfContract if provided.'
        startOfContract:
          type: string
          format: date
          description: 'The date when the membership started. format: yyyy-MM-dd'
        referringMemberId:
          type: string
          description: MembershipId of the member who referred this member.
        barcode:
          type: string
          description: Member's barcode to check-in in the gym. Can be visualised on the Branded Member App and used for lookup to verify membership.
    ContactDTO:
      type: object
      properties:
        phone:
          type: string
          description: The Member telephone number.
        street:
          type: string
          description: Street name in member's address.
        streetNumber:
          type: string
          description: Street number in member's address.
        zipCode:
          type: string
          description: Zip Code in member's address.
        city:
          type: string
          description: City in member's address.
        state:
          type: string
          description: State in member's address.
        country:
          type: string
          description: Country of the member's address in ISO 3166-1 alpha-2.
          example: DE
    MembershipDTO:
      type: object
      properties:
        membershipId:
          type: string
          description: Member ID in the gym software. It must be unique for exactly one member in the gym chain.
          minLength: 1
        agreementNumber:
          type: string
          description: The agreement number is the number of the membership between the member and the gym chain.
        membershipType:
          type: string
          description: Type of the member's membership to determine available features.
          enum:
          - BASIC
          - PREMIUM
          - PROSPECT
          - CORPORATE_FITNESS
        membershipSubType:
          type: string
          description: Extension of membershipStatus for further customization for this user. One membershipStatus can have multiple membershipSubType.
          maxLength: 128
          minLength: 0
        endOfContract:
          type: string
          format: date
          description: 'Date when the member''s contract ends. For gyms with automatic contract renewal, send the date when the contract would run out, if cancelled. Update the field when the contract was renewed (manually and automatically renewals). format: yyyy-MM-dd. Must be on or after startOfContract if provided.'
        startOfContract:
          type: string
          format: date
          description: 'The date when the membership started. format: yyyy-MM-dd'
        referringMemberId:
          type: string
          description: MembershipId of the member who referred this member.
        barcode:
          type: string
          description: Member's barcode to check-in in the gym. Can be visualised on the Branded Member App and used for lookup to verify membership.
        verificationTAN:
          type: string
          description: Mandatory when creating new membership of type 'CORPORATE_FITNESS' or when updating membership to 'CORPORATE_FITNESS'. Member's verification TAN. Can be visualised on the Qualitrain Member App and used for Qualitrain Membership verification.
        corporateFitness:
          $ref: '#/components/schemas/CorporateFitnessDTO'
          description: The corporate fitness details. These fields are returned only in case membershipType=CORPORATE_FITNESS
          readOnly: true
      required:
      - membershipId
      - membershipType
      - startOfContract
    MemberAccountDTO:
      type: object
      properties:
        accountId:
          type: string
          description: The EGYM account ID for the Gym Member.
          readOnly: true
        email:
          type: string
          description: The Member email address. It should be unique within the gym chain.
          minLength: 1
        firstName:
          type: string
          description: The Member first name.
          example: John
          minLength: 1
        lastName:
          type: string
          description: The Member last name.
          example: Wick
          minLength: 1
        dateOfBirth:
          type: string
          format: date
          description: 'The Member date of birth. format: yyyy-MM-dd'
        gender:
          type: string
          description

# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/egym/refs/heads/main/openapi/egym-member-account-api-openapi.yml