EGYM MMS API V2

The current member-management-system integration API. RESTful contract for gym management software to sync member accounts and memberships into EGYM Cloud, manage profile pictures, RFID and NFC credentials, book EGYM products (Smart Strength, EGYM+), push gym check-in / check-out / admission events, create and track trainer tasks, register webhook subscriptions, send push notifications to EGYM mobile apps, and migrate members from the legacy v1 API. 43 operations across 10 tags.

OpenAPI Specification

egym-mms-api-v2-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MMS API V2
  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: Migrating members
  description: These operations are needed to migrate members from V1 API to V2 API.
- name: Gym Visit
  description: These operations are needed to transmit the information to EGYM, that a specific member is currently in the
    gym. Based on that information several business logics are built, to provide a seamless training floor experience to the
    members of that gym. For example the trainer on the Training Floor is informed that this member is here and that he should
    complete some tasks.
- name: Member Account Roles
  description: These operation are needed to assign and retrieve member account roles
- name: Trainer Task
  description: These operations are needed to create and update trainer tasks.
- name: Member Account NFC
  description: Note that NFC API endpoints are in beta as we've been tuning setup processes on both EGYM and partner sides.
- name: Products booking
  description: Operations on EGYM products. Currently available products are EGYM Smart Strength (Machine Admission) and EGYM+
- name: Push notifications
  description: Send push notifications to EGYM mobile apps
- name: Member RFIDs
  description: Operations with RFIDs
- name: Webhooks
  description: Operations with webhooks
- name: Member Account
  description: These operations are needed to create and update member accounts and their membership information.
paths:
  /api/v2/webhooks/{id}:
    get:
      tags:
      - Webhooks
      summary: Retrieve webhook entry by id
      operationId: getWebhookById
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponseDTO'
        '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:
      - Webhooks
      summary: Update webhook entry
      description: Updates webhook url or/and secret by given webhook id
      operationId: updateWebhook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRequestDTO'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponseDTO'
        '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'
    delete:
      tags:
      - Webhooks
      summary: Delete webhook
      description: Deletes webhook url
      operationId: deleteWebhook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int64
      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/tasks/{taskId}:
    get:
      tags:
      - Trainer Task
      summary: Retrieve task details
      description: This endpoint returns the details of a specific trainer task.
      operationId: getTask
      parameters:
      - name: taskId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskDTO'
        '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:
      - Trainer Task
      summary: Update a task
      description: This endpoint updates trainer task in a gym.
      operationId: updateTask
      parameters:
      - name: taskId
        in: path
        required: true
        schema:
          type: integer
          format: int64
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TaskDTO'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskDTO'
        '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/{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}/rfids:
    get:
      tags:
      - Member RFIDs
      summary: Retrieve user RFIDs
      description: Returns a list of RFIDs of the user.
      operationId: getUserRfids
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      - name: allSources
        in: query
        description: Allows to receive user RFIDs that were assigned not only by MMS but also by other sources.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RfidDTO'
        '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 RFIDs
      summary: Update RFIDs of a user
      description: 'Note: If this field is sent we will replace the RFID list of this user with the info sent (for an empty
        list, we will delete all RFID connections of this user). The operation does not affect RFIDs assigned from other sources
        like EGYM machines, Fitness Hub etc.'
      operationId: updateUsersRfids
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RfidListDTO'
        required: true
      responses:
        '200':
          description: Ok
        '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'
    post:
      tags:
      - Member RFIDs
      summary: Add RFID
      description: Add RFID to specified user.
      operationId: addRFIDToUser
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RfidDTO'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RfidDTO'
        '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/{accountId}/products:
    get:
      tags:
      - Products booking
      summary: Retrieve user activated products
      description: Returns a list of products that are activated for the specified user and gym and are active now or in the
        future.
      operationId: userProducts
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UserProductDTO'
        '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:
      - Products booking
      summary: Activate a product or update product booking
      description: This endpoint activates or updates a product for a user in a gym. The product is active starting from the
        specified start date to the end date in Timezone of the club.
      operationId: productBooking
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserProductDTO'
        required: true
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProductDTO'
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProductDTO'
        '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/{accountId}/nfc:
    get:
      tags:
      - Member Account NFC
      summary: Retrieve a member account NFC token
      operationId: getAccountNfcToken
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      - 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/NfcTokenDTO'
        '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 NFC
      summary: Assign an NFC token to a member account
      operationId: assignAccountNfcToken
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignNfcTokenRequest'
        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'
    delete:
      tags:
      - Member Account NFC
      summary: Delete a member account NFC token
      operationId: deleteAccountNfcToken
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
      - name: collectorId
        in: query
        required: false
        schema:
          type: integer
          format: int64
      - name: passTypeId
        in: query
        required: false
        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/{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/webhooks:
    get:
      tags:
      - Webhooks
      summary: Retrieve existing webhooks
      description: Returns a list of webhooks of the related gym.
      operationId: getAllWebhooks
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WebhookResponseDTO'
        '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
   

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