Cobot · AsyncAPI Specification

Cobot Webhooks

Version

View Spec View on GitHub CompanyCoworkingWorkspace ManagementSpace ManagementReal EstateBookingsReservationsMembershipsInvoicingPaymentsEventsAccess ControlSaaSGermanyJSON:APIOAuthAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-09'
method: searched
source: https://dev.cobot.me/api-docs/webhooks-api
type: Webhooks
asyncapi_published: false
asyncapi_note: >-
  Cobot ships a real, substantial event surface but publishes NO AsyncAPI document
  (/asyncapi.yaml 404s on dev.cobot.me and soft-404s on www.cobot.me). This file captures the
  documented webhook catalog verbatim; it is not an AsyncAPI and is not presented as one.
summary: >-
  Webhooks live only on the LEGACY v1 API. API 2's OpenAPI declares no `webhooks` block, so an
  integrator working from the current machine-readable contract alone would never learn the event
  surface exists. ~50 event types are documented, covering the full membership, booking,
  invoicing, check-in and event lifecycle.

subscription:
  create:
    method: POST
    url: 'https://<subdomain>.cobot.me/api/subscriptions'
    scope: write_subscriptions
    requires: admin
    body:
      event: confirmed_membership
      callback_url: http://my.server.com/callback
  api_version: v1
delivery:
  method: POST
  expected_response: any 2xx
  retries: up to 10 retries with increasing intervals, up to 20 hours
  deactivation: a 410 response deactivates the webhook immediately
  payload: >-
    JSON containing the resource URL, e.g.
    {"url": "https://co-up.cobot.me/api/memberships/93207605"}. Payloads for deleted resources
    include the full data object, since the URL would no longer resolve.
  signing:
    supported: false
    note: >-
      No signature, shared secret or HMAC verification is documented. A receiver can only trust
      the callback by re-fetching the referenced URL with its own OAuth token — which the
      URL-pointer payload design effectively forces, and which is a reasonable substitute, but
      it is not payload authentication.

event_count: 50
events:
  user_and_admin:
  - connected_user
  - updated_connected_user
  - created_admin
  - deleted_admin
  bookings:
  - created_booking
  - updated_booking
  - booking_will_begin
  - booking_has_ended
  - deleted_booking
  resources_and_allocations:
  - created_resource
  - updated_resource
  - deleted_resource
  - created_allocation
  - updated_allocation
  - deleted_allocation
  calendar_blockers:
  - created_calendar_blocker
  - updated_calendar_blocker
  - deleted_calendar_blocker
  memberships:
  - confirmed_membership
  - created_membership
  - deleted_membership
  - canceled_membership
  - uncanceled_membership
  - reactivated_membership
  - membership_cancellation_date_reached
  membership_changes:
  - changed_membership_plan
  - membership_plan_change_date_reached
  - updated_membership_details
  - updated_membership_picture
  - updated_payment_method
  check_ins:
  - created_checkin
  - created_checkout
  - created_checkin_token
  - deleted_checkin_token
  invoicing:
  - created_invoice
  - updated_invoice
  - wrote_off_invoice
  - requested_e_invoice
  - sent_invoice
  - deleted_invoice
  other:
  - created_drop_in_pass
  - created_guest_account
  - approved_external_booking
  - updated_custom_field
  - changed_space_subscription
  - membership_added_time_passes
  - membership_removed_time_passes
  - published_event
  - created_event_attendance

gaps:
- >-
  No AsyncAPI (or any machine-readable event contract) is published, so the event names above are
  only discoverable by reading an HTML page on the legacy docs host.
- >-
  No payload schemas are published — only the URL-pointer shape and a note that deletes carry the
  full object.
- >-
  No webhook signing/verification mechanism is documented.
- >-
  The event catalog is bound to API 1. There is no equivalent on API 2, and no statement about
  what happens to webhooks if API 1 is eventually retired.