GET
/eventsReplay retained events or upgrade to a WebSocket stream
Without ticket this is HTTP replay. For WebSocket, connect with wss and a one-use ticket query parameter; Authorization is not sent on the upgrade. Tickets expire after 60 seconds, connections after 60 minutes, and retained events after seven days. Delivery is at least once.
Bearer Token
events:readRequest
curl --request GET \
'https://sandbox-api.padel-lab.crewio.co/v1/club/events' \
--header 'Authorization: Bearer $PADEL_LAB_TOKEN'Parameter
afterqueryEventIdoptionalPreviously processed event id
limitqueryintegeroptionalResponses
101WebSocket protocol switched when a valid ticket is supplied200Event replay pageEventList400Malformed JSON or a syntactically valid request that violates a path, query, header or JSON-body constraint.ErrorResponse401Missing, invalid or expired tokenErrorResponse403Installation lacks the required scope or is inactiveErrorResponse429Rate limit exceededErrorResponse500An unexpected runtime error occurred; retry only when the operation is safe or idempotent.ErrorResponse503A required authorization, tenant-safety or rate-limit dependency is unavailableErrorResponseResponse Schemas
EventListStatus 200
{
"allOf": [
{
"type": "object",
"required": [
"next_cursor",
"has_more"
],
"properties": {
"next_cursor": {
"type": [
"string",
"null"
]
},
"has_more": {
"type": "boolean"
}
}
},
{
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"required": [
"id",
"type",
"schema_version",
"occurred_at",
"publication_sequence",
"organization_id",
"resource",
"sequence",
"changed_fields",
"data_url"
],
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"type": {
"type": "string",
"enum": [
"booking.created",
"booking.updated",
"booking.cancelled",
"booking.reconciliation_required",
"session.created",
"session.status_changed",
"participant.updated",
"match.started",
"score.updated",
"score.corrected",
"match.completed",
"court.status_changed"
]
},
"schema_version": {
"type": "integer",
"minimum": 1
},
"occurred_at": {
"type": "string",
"format": "date-time",
"description": "UTC RFC 3339 timestamp"
},
"publication_sequence": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"maxLength": 19,
"description": "Canonical organization-local publication order encoded as a decimal string so values remain exact beyond the JSON safe-integer range."
},
"organization_id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Opaque stable identifier"
},
"resource": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"id"
],
"properties": {
"type": {
"type": "string"
},
"id": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Opaque stable identifier"
}
}
},
"sequence": {
"type": "integer",
"minimum": 1
},
"changed_fields": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"data_url": {
"type": "string"
}
}
}
}
}
}
]
}ErrorResponseStatus 400, 401, 403, 429, 500, 503
{
"type": "object",
"additionalProperties": false,
"required": [
"error"
],
"properties": {
"error": {
"type": "object",
"additionalProperties": false,
"required": [
"code",
"message",
"request_id"
],
"properties": {
"code": {
"type": "string",
"description": "Stable machine-readable code. Clients must tolerate unknown codes within the same HTTP class.",
"examples": [
"invalid_request",
"invalid_cursor",
"IDEMPOTENCY_KEY_REQUIRED",
"unsafe_webhook_url",
"authentication_required",
"invalid_token",
"insufficient_scope",
"installation_inactive",
"not_found",
"VERSION_CONFLICT",
"UNMAPPED_COURT",
"IDEMPOTENCY_CONFLICT",
"IDEMPOTENCY_IN_PROGRESS",
"endpoint_limit_reached",
"rate_limited",
"internal_error",
"idempotency_replay_failed",
"authorization_unavailable",
"rate_limit_unavailable"
]
},
"message": {
"type": "string"
},
"request_id": {
"type": "string"
},
"details": {}
}
}
}
}