Arccos Golf · AsyncAPI Specification

Arccos Golf Webhooks

Version

View Spec View on GitHub Companygolfsports-technologywearablesiotshot-trackingsports-analyticsperformance-analyticsgeospatialconsumer-hardwarewebhooksoauth2mcpecommerceAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-06'
method: searched
source: >-
  https://api.arccosgolf.com/swagger.json — the "Webhooks" section of info.description, the
  GET/POST/DELETE /v5/webhooks operations, and the Webhook / CreateWebhookRequest / WebhookEventType /
  AccountDisconnectedWebhookEvent definitions
asyncapi_published: false
asyncapi_note: >-
  Arccos publishes no AsyncAPI document. This is a faithful catalog of the webhook surface as documented in the
  Swagger document; the event payload fields below are only those Arccos names in its own text or schema. Nothing
  here is inferred or invented — where a payload is described by field list only, that is all that is recorded.
transport: HTTPS POST
content_type: application/json
delivery:
  semantics: at-least-once
  ordering: not guaranteed between event types
  idempotency_key: eventId
  duplicate_causes:
  - Retries of the same event redeliver the same eventId.
  - >-
    Retries fan out per SQS message — when a client registers multiple webhook URLs and one fails, healthy URLs
    can be re-POSTed with the same eventId.
  - Repeated user disconnect actions produce distinct events for the same account.
  consumer_guidance:
  - Dedupe by eventId.
  - Make cleanup additionally idempotent by (userId, clientId).
  - Respond 2xx after durable receipt; do downstream work asynchronously.
  - Tolerate duplicates and delays.
security:
  signed: false
  signature_scheme: null
  transport_security: HTTPS required
  guidance:
  - Use a dedicated high-entropy webhook URL/path and keep it private.
  - Verify that incoming requests arrived on the exact path you registered.
  future: HMAC signing and secret rotation are named as future contract upgrades, not part of the v1 contract.
  pii: The accountDisconnected webhook carries no tokens, no email and no user PII.
management:
  register:
    operationId: handle_create_webhook.post./v5/webhooks
    method: POST
    path: /v5/webhooks
    auth: BasicAuth
    request_schema: CreateWebhookRequest
    request_fields:
    - webhookUrl
  list:
    operationId: handle_get_webhooks.get./v5/webhooks
    method: GET
    path: /v5/webhooks
    auth: BasicAuth
    response_schema: GetWebhooksResponse
    item_fields:
    - id
    - webhookUrl
  delete:
    operationId: handle_delete_webhook.delete./v5/webhooks/{webhookId}
    method: DELETE
    path: /v5/webhooks/{webhookId}
    auth: BasicAuth
events:
- name: postRound
  description: A round was posted for a user.
  payload_fields:
  - userId
  - roundId
  - courseId
  - courseVersion
  - isEnded
  follow_up:
  - handle_get_one_round.get./v5/users/{userId}/rounds/{roundId}
  - handle_get_round_stats.get./v5/users/{userId}/rounds/{roundId}/stats
- name: patchRound
  description: An existing round was updated.
  payload_fields:
  - userId
  - roundId
  - courseId
  - courseVersion
  - isEnded
  follow_up:
  - handle_get_one_round.get./v5/users/{userId}/rounds/{roundId}
- name: deleteRound
  description: A round was deleted.
  payload_fields:
  - userId
  - roundId
- name: accountDisconnected
  description: >-
    A user disconnected this client from Arccos in the Arccos UI. On receipt, stop using stored Arccos tokens for
    the given userId and disable local access for that connection.
  envelope_fields:
  - eventId
  - eventType
  - eventVersion
  - createdAt
  - eventBody
  body_fields:
  - userId
  - clientId
  - disconnectedAt
  - reason
  reason_values:
  - user_disconnected
  event_version: 1
  example: |
    {
      "eventId": "uuid",
      "eventType": "accountDisconnected",
      "eventVersion": 1,
      "createdAt": "2026-05-28T18:42:13.123Z",
      "eventBody": {
        "userId": "arccos-user-id",
        "clientId": "cognito-client-id",
        "disconnectedAt": "2026-05-28T18:42:13.123Z",
        "reason": "user_disconnected"
      }
    }
  example_source: https://api.arccosgolf.com/swagger.json (verbatim from the published docs)
gaps:
- >-
  Only the accountDisconnected event has a published envelope and schema (AccountDisconnectedWebhookEvent); the
  three round events are documented as field lists in prose, with no schema in the spec.
- No AsyncAPI or JSON Schema is published for the round events.
- Webhook v1 payloads are unsigned, so consumers cannot verify origin beyond URL secrecy.
cross_links:
  openapi: openapi/arccos-golf-on-course-data-api-openapi.yml
  conventions: conventions/arccos-golf-conventions.yml
  lifecycle: lifecycle/arccos-golf-lifecycle.yml