EGYM · AsyncAPI Specification

Egym Events Webhooks

Version

View Spec View on GitHub CompanyFitnessHealthWellnessCorporate WellnessConnected EquipmentGym ManagementMember ManagementCheck-InMeasurementsWorkoutsAnalyticsWebhooksGermanyAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-12'
method: searched
source: https://developer.egym.com/general/webhooks
docs:
- https://developer.egym.com/general/webhooks
- https://developer.egym.com/mms-api-v2/apis/mms-v2/webhooks
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: 'EGYM publishes no AsyncAPI document. The webhook surface is documented in
  prose plus a management API in the MMS API V2 OpenAPI; a derived AsyncAPI 3.0.0 rendering
  of that documented contract is at asyncapi/egym-mms-events-asyncapi.yml.'

surface: outbound webhooks (EGYM pushes to a partner-hosted HTTPS endpoint)
scope: 'Per gym. Multiple webhooks can be created for a single gym.'

delivery:
  transport: HTTPS POST
  content_type: application/json
  auth_header: x-api-key
  auth_note: 'The partner supplies the secret when registering the subscription; EGYM sends
    it back on every delivery as x-api-key so the receiver can authenticate the caller.'
  timeout_seconds: 5
  timeout_behaviour: Requests exceeding 5 seconds are treated as unsuccessful.
  requirements:
  - HTTPS only, with a valid SSL certificate.
  - Endpoint must be reachable by EGYM without additional configuration or VPN.
  retry_policy: null
  retry_note: No retry, backoff or dead-letter policy is documented.
  signature_scheme: null
  signature_note: 'No HMAC payload signature is documented — authentication is a shared
    secret echoed in a header, so a receiver cannot verify payload integrity.'
  ordering: null
  replay: null

payload:
  shape: flat JSON object
  example: '{ "accountId": "[UUID]", "timestamp": 1667921312188, "type": "GYM_CHECKIN" }'
  fields:
  - {name: accountId, type: uuid, description: Account id of the user.}
  - {name: timestamp, type: integer, format: epoch-millis, description: UTC timestamp of the event.}
  - {name: type, type: string, description: 'Event type. See the events list below.'}
  note: 'The payload is a notification, not a state transfer — it carries no event body
    beyond the account id, so a consumer must call back into MMS API V2 (for example
    retrieveAccount) to learn what actually changed.'

event_count: 6
events:
- type: GYM_CHECKIN
  description: A customer has physically checked in at a gym.
  since: null
- type: GYM_CHECKOUT
  description: A customer has physically checked out from a gym.
  since: null
- type: EQUIPMENT_CHECKIN
  description: A customer has physically logged in to equipment in a gym.
  since: '2023-12-08'
- type: MEMBERSHIP_DELETE
  description: Member data has been deleted from EGYM.
  since: '2024-03-21'
- type: GENIUS_ONBOARDING_COMPLETED
  description: A member completed EGYM Genius onboarding.
  since: null
- type: TEST
  description: Test event used to verify a webhook endpoint.
  since: null
roadmap_note: EGYM states additional webhook event types will be added in future releases.

consent_filtering:
  enabled: true
  since: '2026-06-24'
  description: 'Webhook events are filtered to account for data-sharing consent, so a
    subscriber does not receive events for members who have not consented to share with
    that partner.'
  source: https://developer.egym.com/mms-api-v2/change-log

management_api:
  api: EGYM MMS API V2
  spec: openapi/egym-mms-api-v2-openapi.yml
  operations:
  - {operationId: createWebhook, method: POST, path: /api/v2/webhooks, description: Create a webhook subscription.}
  - {operationId: getAllWebhooks, method: GET, path: /api/v2/webhooks, description: List configured webhooks.}
  - {operationId: getWebhookById, method: GET, path: '/api/v2/webhooks/{id}', description: Retrieve a webhook subscription.}
  - {operationId: updateWebhook, method: PUT, path: '/api/v2/webhooks/{id}', description: Update webhook URL and secret.}
  - {operationId: deleteWebhook, method: DELETE, path: '/api/v2/webhooks/{id}', description: Delete a webhook subscription.}
  - {operationId: triggerWebhook, method: POST, path: '/api/v2/webhooks/{id}/trigger', description: Fire a TEST event at the registered endpoint to verify it.}
  conflict: 409 webhookUrlAlreadyRegistered when the URL is already registered for the gym.
  future: 'EGYM states the webhook management API endpoints will be replaced by a UI-based
    configuration interface, with migration guidance to follow.'

gaps:
- No AsyncAPI document is published for the event surface.
- No payload signature (HMAC) scheme — only a shared secret echoed as x-api-key.
- No documented retry, backoff, dead-letter or ordering guarantees.
- 'webhooks: is not declared in the MMS API V2 OpenAPI 3.1 document, even though OpenAPI 3.1
  supports it and the events are fully specified in prose.'