API reference · v1.0.0

Olympus Events API

Download OpenAPI (events.yaml) · Base URL https://api.olympus.new-odyssey.com

A normalised, dated stream of sourced facts about what changed in the data behind the Olympus APIs: a company filed a 10-K or 10-Q, a dataset published a new version. Poll it with GET /v1/events, or have Olympus push it to your HTTPS endpoint with webhooks.

Every event: - is a fact a source published, never a score or a prediction; - carries its provenance (dataset, publication, source record, source URL, source version, retrieval time); - exists only after the publication it came from passed the publication gate and was activated; - keeps the date it happened (occurred_at / effective_at) apart from the date Olympus learned of it (observed_at / published_at); - is about an organisation or a place, never a person.

Live event types: sec.filing.submitted (10-K, 10-Q, 10-K/A, 10-Q/A by CIK) and dataset.publication.activated (every dataset). Other types are listed by GET /v1/event-types as planned and never appear in the stream.

Product and units. Events are the product events. Its monthly quota counts event units: 1 per GET /v1/events or GET /v1/events/{event_id} request (whatever the page size) and 1 per event delivered to a webhook endpoint (first attempt only: retries are free; redeliveries and replays count). Webhook management, /v1/event-types, verification and test pings are free. Seeing an event type also needs its source product on the plan (sec.* needs sec; dataset.publication.activated needs the dataset's product). When the quota runs out, polling answers 429 QUOTA_EXCEEDED and deliveries are paused (not dropped) until the period resets.

Retention is per plan (free 7 days, developer 30, growth 90, business 365, enterprise 400), measured on published_at. Webhooks need the developer plan or above.

Webhooks follow Standard Webhooks: webhook-id (the event ID, so polled and pushed copies dedupe on one key), webhook-timestamp and webhook-signature (v1,<base64 HMAC-SHA256(secret, id.timestamp.body)>; space-separated signatures from both secrets for 24 hours after a rotation). Reject timestamps more than 5 minutes off. Deliveries are at least once and not strictly ordered; sort by seq if you need order. Failed deliveries are retried 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h after the first attempt (8 attempts, about 2 days, plus or minus 20% jitter), then moved to the dead-letter queue (status=dead). An endpoint whose every delivery has failed for 3 days, or that answers 410 Gone, is disabled.

Authentication, errors, X-Request-Id and rate-limit headers follow platform.yaml. Console mirrors of the webhook endpoints live under /v1/organizations/{org_id}/webhooks (session cookie and CSRF header, as for API keys); members can read, owners and admins can change.

Events

List events (cursor-paginated, oldest first)

GET/v1/events

Events in seq order (the order Olympus published them), oldest first. Without cursor the list starts at the oldest event inside the plan's retention window, or at published_from when given. Save meta.stream.resume_cursor and pass it as cursor later to receive only newer events: it is returned on every page, including an empty last page, so polling works as a feed.

Only event types of products the plan includes are returned. Baseline events are excluded unless include_baseline=true. Filters combine with AND; repeated values of one filter combine with OR. Costs 1 event unit per request.

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
cursorquerystring

Opaque cursor from meta.pagination.next_cursor or meta.stream.resume_cursor. A tampered cursor, or one used with different filters, answers 400 INVALID_CURSOR; one older than the retention window answers 410 CURSOR_EXPIRED.

limitqueryinteger
typequeryarray of string

Event type, or a prefix ending in .* (sec.*, sec.filing.*). Repeatable.

Example: ["sec.filing.submitted"]
productqueryarray of string

Public product ID of the event (sec, or platform for dataset events). Repeatable.

entity_idqueryarray of string

Olympus entity ID (subject or related). Matches events recorded with that entity, and events whose recorded identifiers belong to it in the registry now. Repeatable.

identifierqueryarray of string

<scheme>:<value>, e.g. OLY-US-SEC-CIK:320193. The value is normalised for the scheme (320193 and 0000320193 match the same company). Repeatable.

Example: ["OLY-US-SEC-CIK:320193"]
cikqueryarray of string

Shorthand for identifier=OLY-US-SEC-CIK:<cik>. Repeatable.

occurred_fromquerystring (date)

occurred_at on or after this date (inclusive).

occurred_toquerystring (date)

occurred_at on or before this date (inclusive).

published_fromquerystring (date-time)

published_at at or after this instant. Ignored when cursor is given.

published_toquerystring (date-time)

published_at before this instant.

correctionsqueryenum: include | exclude | only

include (default) returns corrections and retractions with everything else; exclude drops them; only returns nothing else.

include_baselinequeryboolean

Include events derived when a dataset was first loaded.

Responses

200

A page of events.

EventList
400

Invalid parameter (VALIDATION_ERROR, INVALID_CURSOR, WEBHOOK_TARGET_REFUSED).

Error
401

Missing or invalid API key.

Error
403

The plan does not include events (PRODUCT_NOT_ENABLED), or webhooks / replay (FEATURE_NOT_ON_PLAN).

Error
410

The cursor points before the plan's retention window (CURSOR_EXPIRED; details.oldest_cursor, details.retention_days).

Error
429

Rate limit or monthly quota exceeded (RATE_LIMITED / QUOTA_EXCEEDED).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/events" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

One event

GET/v1/events/{event_id}

An event inside the plan's retention window. Older, unknown or unentitled events answer 404 EVENT_NOT_FOUND. Costs 1 event unit.

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
event_idrequiredpathstring

Responses

200

The event.

401

Missing or invalid API key.

Error
403

The plan does not include events (PRODUCT_NOT_ENABLED), or webhooks / replay (FEATURE_NOT_ON_PLAN).

Error
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error
429

Rate limit or monthly quota exceeded (RATE_LIMITED / QUOTA_EXCEEDED).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/events/{event_id}" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

Event types

The event catalogue, with live freshness

GET/v1/event-types

Every event type, live or planned, with its schema version, the dates it populates, its coverage and known gaps, and the freshness of the dataset it is derived from. Planned types never appear in /v1/events. Free (not counted as event units).

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
statusqueryenum: live | planned

Responses

200

Event types.

401

Missing or invalid API key.

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/event-types" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

JSON Schema of an event type's `data` payload

GET/v1/event-types/{type}/schema

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
typerequiredpathstring
majorqueryinteger

Schema major version; defaults to the current one.

Responses

200

JSON Schema (draft 2020-12) of the payload.

404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/event-types/{type}/schema" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

Webhooks

List the organisation's webhook endpoints

GET/v1/webhooks

Authentication: API key (X-API-Key or Bearer)

Responses

200

Endpoints (secrets are never listed).

WebhookEndpointList
401

Missing or invalid API key.

Error
403

The plan does not include events (PRODUCT_NOT_ENABLED), or webhooks / replay (FEATURE_NOT_ON_PLAN).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/webhooks" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

Create a webhook endpoint

POST/v1/webhooks

The endpoint starts as pending_verification. Olympus POSTs a signed webhook.verification notification with a challenge; the endpoint becomes active once it answers 2xx with {"challenge": "..."} within 10 seconds (resend with POST .../verify). Only events published after the endpoint became active are pushed; use replay for earlier ones. The signing secret is returned once, here. HTTPS only; private, loopback, link-local, CGNAT and metadata addresses are refused (WEBHOOK_TARGET_REFUSED), at creation and again when connecting.

Authentication: API key (X-API-Key or Bearer)

Request body

application/json — WebhookEndpointInput

Responses

201

Created.

WebhookEndpointWithSecret
400

Invalid parameter (VALIDATION_ERROR, INVALID_CURSOR, WEBHOOK_TARGET_REFUSED).

Error
401

Missing or invalid API key.

Error
403

The plan's limit on endpoints or subject filters is reached (LIMIT_REACHED, details.limit), or webhooks are not on the plan (FEATURE_NOT_ON_PLAN).

Error
503

Webhooks are not configured on this deployment (WEBHOOKS_UNAVAILABLE).

Error

One endpoint, with delivery health

GET/v1/webhooks/{webhook_id}

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Responses

200

The endpoint.

WebhookEndpointResponse
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/webhooks/{webhook_id}" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

Change URL, filter, description or status

PATCH/v1/webhooks/{webhook_id}

Changing the URL sets the endpoint back to pending_verification and sends a new challenge. status may be set to paused or active; active re-enables a paused or disabled endpoint that was verified.

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Request body

application/json — WebhookEndpointPatch

Responses

200

Updated.

WebhookEndpointResponse
400

Invalid parameter (VALIDATION_ERROR, INVALID_CURSOR, WEBHOOK_TARGET_REFUSED).

Error
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error

Delete an endpoint (its deliveries and log go with it)

DELETE/v1/webhooks/{webhook_id}

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Responses

204

Deleted.

404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error

Resend the verification challenge

POST/v1/webhooks/{webhook_id}/verify

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Responses

202

Challenge queued; poll the endpoint's status.

DeliveryResponse
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error

Send a signed `webhook.test` notification

POST/v1/webhooks/{webhook_id}/test

Queued like any delivery (it shows in the delivery log). Free.

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Responses

202

Queued.

DeliveryResponse
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error

Rotate the signing secret

POST/v1/webhooks/{webhook_id}/rotate-secret

Returns a new secret (shown once). For 24 hours deliveries carry signatures from both secrets, space-separated in webhook-signature; then the old one stops.

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Responses

200

The new secret.

SecretResponse
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error

Delivery log (newest first); `status=dead` is the dead-letter queue

GET/v1/webhooks/{webhook_id}/deliveries

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring
cursorquerystring

Opaque cursor from meta.pagination.next_cursor or meta.stream.resume_cursor. A tampered cursor, or one used with different filters, answers 400 INVALID_CURSOR; one older than the retention window answers 410 CURSOR_EXPIRED.

limitqueryinteger
statusqueryenum: pending | failed | succeeded | dead | cancelled
event_idquerystring

Responses

200

Deliveries.

DeliveryList
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/webhooks/{webhook_id}/deliveries" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

One delivery with its attempts (status code, duration, error, response excerpt)

GET/v1/webhooks/{webhook_id}/deliveries/{delivery_id}

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring
delivery_idrequiredpathstring

Responses

200

The delivery.

DeliveryResponse
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error
curl
curl -s "https://api.olympus.new-odyssey.com/v1/webhooks/{webhook_id}/deliveries/{delivery_id}" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

Deliver one event again (e.g. from the dead-letter queue)

POST/v1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver

Queued as a new delivery with the same webhook-id. Counts 1 event unit when sent.

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring
delivery_idrequiredpathstring

Responses

202

Queued.

DeliveryResponse
404

Not found (EVENT_NOT_FOUND, EVENT_TYPE_NOT_FOUND, WEBHOOK_NOT_FOUND, DELIVERY_NOT_FOUND).

Error

Replay every matching event from a cursor or time

POST/v1/webhooks/{webhook_id}/replay

Queues deliveries for every event that matches the endpoint's filter from from_cursor (exclusive) or from_published_at up to to_published_at (default: now), within the plan's retention window. Replayed deliveries carry Olympus-Replay: true and run at a lower priority than live traffic. At most one replay per endpoint runs at a time. Each replayed event counts 1 event unit when sent. Needs a plan with replay (developer and above).

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Request body

application/json — object

Responses

202

Replay queued.

ReplayResponse
400

Invalid parameter (VALIDATION_ERROR, INVALID_CURSOR, WEBHOOK_TARGET_REFUSED).

Error
403

The plan does not include events (PRODUCT_NOT_ENABLED), or webhooks / replay (FEATURE_NOT_ON_PLAN).

Error
409

A replay is already running for the endpoint (REPLAY_IN_PROGRESS).

Error
410

The cursor points before the plan's retention window (CURSOR_EXPIRED; details.oldest_cursor, details.retention_days).

Error

Recent replays of the endpoint (newest first)

GET/v1/webhooks/{webhook_id}/replays

Authentication: API key (X-API-Key or Bearer)

Parameters

NameInTypeDescription
webhook_idrequiredpathstring

Responses

200

Replays.

curl
curl -s "https://api.olympus.new-odyssey.com/v1/webhooks/{webhook_id}/replays" \
  -H "X-API-Key: $OLYMPUS_API_KEY"

Console webhooks

List endpoints (any member)

GET/v1/organizations/{org_id}/webhooks

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)

Responses

200

Endpoints.

WebhookEndpointList

Create an endpoint (owner or admin)

POST/v1/organizations/{org_id}/webhooks

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
X-Olympus-CSRFrequiredheaderstring

Request body

application/json — WebhookEndpointInput

Responses

201

Created; the secret is in the response.

WebhookEndpointWithSecret
403

The plan's limit on endpoints or subject filters is reached (LIMIT_REACHED, details.limit), or webhooks are not on the plan (FEATURE_NOT_ON_PLAN).

Error

The organisation's events plan limits and subscribable types

GET/v1/organizations/{org_id}/webhooks/settings

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)

Responses

200

Limits and types.

WebhookSettingsResponse

One endpoint

GET/v1/organizations/{org_id}/webhooks/{webhook_id}

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring

Responses

200

The endpoint.

WebhookEndpointResponse

Change an endpoint (owner or admin)

PATCH/v1/organizations/{org_id}/webhooks/{webhook_id}

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Request body

application/json — WebhookEndpointPatch

Responses

Delete an endpoint (owner or admin)

DELETE/v1/organizations/{org_id}/webhooks/{webhook_id}

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Responses

204

Deleted.

Reveal the current signing secret (owner or admin; audit-logged)

GET/v1/organizations/{org_id}/webhooks/{webhook_id}/secret

Console only. API keys cannot read a secret back; they get it once at creation and rotation.

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring

Responses

200

The secret.

SecretResponse

Rotate the signing secret (owner or admin)

POST/v1/organizations/{org_id}/webhooks/{webhook_id}/rotate-secret

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Responses

200

The new secret.

SecretResponse

Resend the verification challenge (owner or admin)

POST/v1/organizations/{org_id}/webhooks/{webhook_id}/verify

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Responses

Send a test delivery (owner or admin)

POST/v1/organizations/{org_id}/webhooks/{webhook_id}/test

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Responses

Delivery log (any member)

GET/v1/organizations/{org_id}/webhooks/{webhook_id}/deliveries

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
cursorquerystring

Opaque cursor from meta.pagination.next_cursor or meta.stream.resume_cursor. A tampered cursor, or one used with different filters, answers 400 INVALID_CURSOR; one older than the retention window answers 410 CURSOR_EXPIRED.

limitqueryinteger
statusqueryenum: pending | failed | succeeded | dead | cancelled

Responses

200

Deliveries.

DeliveryList

One delivery with its attempts (any member)

GET/v1/organizations/{org_id}/webhooks/{webhook_id}/deliveries/{delivery_id}

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
delivery_idrequiredpathstring

Responses

200

The delivery.

DeliveryResponse

Redeliver (owner or admin)

POST/v1/organizations/{org_id}/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
delivery_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Responses

Replay (owner or admin)

POST/v1/organizations/{org_id}/webhooks/{webhook_id}/replay

Authentication: Console session cookie

Parameters

NameInTypeDescription
org_idrequiredpathstring (uuid)
webhook_idrequiredpathstring
X-Olympus-CSRFrequiredheaderstring

Request body

application/json — object

Responses

202

Queued.

ReplayResponse

Schemas

Error object

The error body shared by every Olympus service.

FieldTypeDescription
error *string

Human-readable message.

code *string

Stable machine-readable code.

productstring

Product that produced the error, when applicable.

detailsobject

Meta object

FieldTypeDescription
request_id *string

Pagination object

FieldTypeDescription
limit *integer
has_more *boolean
next_cursorstring | null

Next page; null on the last page.

EventList object

FieldTypeDescription
data *Event []
meta *object

Event object

The event envelope (contracts/events/envelope/1.schema.json). The same object is the body of a webhook delivery.

FieldTypeDescription
id *string

Deterministic ID (the same fact always gets the same ID). Also the webhook-id of every delivery of this event. Dedupe on it.

object *enum: event
type *string
schema_version *string

Version of data for this type (MAJOR.MINOR).

seq *string

Position in the global publication order (decimal string of a 64-bit integer). Strictly increasing in commit order; gaps are possible.

product *string

Public product ID, or platform for dataset events.

occurred_at *string | null

When it happened, as the source states it. YYYY-MM-DD when the source gives only a date (occurred_precision = date), RFC 3339 otherwise.

occurred_precision *enum: date | datetime | null
effective_at *string (date) | null
observed_at *string (date-time)

When Olympus retrieved the source data.

published_at *string (date-time)

When the publication carrying the event was activated (and the event became visible).

baseline *boolean

Derived on the first load of a dataset; describes the state at that load rather than a change.

subject *EntityRef | null

The organisation or place the fact is about. Null for dataset events.

related *RelatedEntity []
data *object

Type-specific payload; schema at /v1/event-types/{type}/schema.

provenance *EventProvenance
correction *Correction | null
links *object

EntityRef object

FieldTypeDescription
entity_id *string | null

Olympus entity ID when the registry held one of the identifiers at derivation time; null otherwise.

kind *enum: organisation | place
entity_type *string | null
display_name *string | null
identifiers *EventIdentifier []

RelatedEntity object

FieldTypeDescription
entity_id *string | null

Olympus entity ID when the registry held one of the identifiers at derivation time; null otherwise.

kind *enum: organisation | place
entity_type *string | null
display_name *string | null
identifiers *EventIdentifier []
role *string

EventIdentifier object

FieldTypeDescription
scheme *string
value *string
method *enum: published | exact | derived

EventProvenance object

FieldTypeDescription
dataset_id *string
publication_id *integer (int64)
record_idstring | null
record_versionstring | null
source_idstring | null
source_urlstring | null
source_versionstring | null
source_datestring (date) | null
retrieved_atstring (date-time) | null
evidence_urlstring | null
attributionstring | null

Correction object

FieldTypeDescription
kind *enum: correction | retraction
corrects_event_id *string
reason *enum: source_revised | source_withdrawn | publication_rolled_back | derivation_fixed
changed_fieldsarray of string

EventType object

FieldTypeDescription
type *string
product *string
status *enum: live | planned
class *enum: fact
description *string
schema_version *string
schema_urlstring | null
dates *object
subject_kinds *array of enum: organisation | place | none
datasets *array of object
coverage *string
latency *string
events_sincestring (date-time) | null

Earliest published_at of this type; there is no history before it.

known_gaps *array of string
entitledboolean

Whether the caller's plan includes the type's source product.

WebhookFilter object

Which events the endpoint receives. types is required. Subject filters (identifiers, ciks, entity_ids) make the endpoint a watchlist: only events about those organisations or places match (subject or related). Their combined size is limited per plan.

FieldTypeDescription
types *array of string
productsarray of string
identifiersarray of string
ciksarray of string

Shorthand for OLY-US-SEC-CIK identifiers; stored normalised as identifiers.

entity_idsarray of string
correctionsenum: include | exclude | only
include_baselineboolean
notificationsarray of enum: export.completed | export.failed | bulk.snapshot.available

Account notifications to receive as well (webhook.test and webhook.verification are always sent).

WebhookEndpointInput object

FieldTypeDescription
url *string (uri)
descriptionstring
filter *WebhookFilter

WebhookEndpointPatch object

FieldTypeDescription
urlstring (uri)
descriptionstring
filterWebhookFilter
statusenum: active | paused

WebhookEndpoint object

FieldTypeDescription
id *string
url *string
descriptionstring | null
filter *WebhookFilter
status *enum: pending_verification | active | paused | disabled

disabled: turned off by Olympus after every delivery failed for 3 days or the endpoint answered 410; re-enable with PATCH status=active.

disabled_reasonstring | null
verified_atstring (date-time) | null
active_sincestring (date-time) | null
last_delivered_seqstring | null
last_success_atstring (date-time) | null
failing_sincestring (date-time) | null
pending_deliveriesinteger
dead_deliveriesinteger

Deliveries in the dead-letter queue.

secret_rotated_atstring (date-time) | null
previous_secret_expires_atstring (date-time) | null
created_at *string (date-time)
updated_atstring (date-time)

WebhookEndpointResponse object

FieldTypeDescription
data *WebhookEndpoint
meta *Meta

WebhookEndpointWithSecret object

FieldTypeDescription
data *WebhookEndpoint + object
meta *Meta

WebhookEndpointList object

FieldTypeDescription
data *WebhookEndpoint []
meta *Meta

SecretResponse object

FieldTypeDescription
data *object
meta *Meta

DeliveryAttempt object

FieldTypeDescription
attempt *integer
attempted_at *string (date-time)
status_codeinteger | null
duration_msinteger | null
errorstring | null
response_excerptstring | null

First 512 bytes of the response body.

Delivery object

FieldTypeDescription
id *string
event_id *string

The webhook-id sent (event ID, or the notification ID).

event_type *string
status *enum: pending | failed | succeeded | dead | cancelled

failed: the last attempt failed and another is scheduled. dead: attempts exhausted (dead-letter queue). cancelled: the event left retention before it could be sent.

attempts *integer
max_attemptsinteger
next_attempt_atstring (date-time) | null
last_status_codeinteger | null
last_errorstring | null
replayboolean
redelivery_ofstring | null
delivered_atstring (date-time) | null
created_at *string (date-time)
attempt_logDeliveryAttempt []

Present on GET of one delivery.

DeliveryResponse object

FieldTypeDescription
data *Delivery
meta *Meta

DeliveryList object

FieldTypeDescription
data *Delivery []
meta *object

Replay object

FieldTypeDescription
id *string
status *enum: queued | running | completed | failed | cancelled
from_seqstring
to_published_atstring (date-time)
estimated_events *integer
queued_events *integer
errorstring | null
created_at *string (date-time)
completed_atstring (date-time) | null

ReplayResponse object

FieldTypeDescription
data *Replay
meta *Meta

WebhookSettingsResponse object

FieldTypeDescription
data *object
meta *Meta

* required field