Internal

Ingest a cloud event (server-to-server)

Internal-secret ingestion used by backend services and test fixtures. Identical to /v1/events except the caller names the owning userId explicitly.

post/v1/internal/events

Request

  • Base URL: / (relative, and the document was published on a file host, not at the API’s origin)
  • URL: /v1/internal/events
  • Auth: API key in header X-Internal-Secret

Request body

dedupeKeystring required

Required idempotency anchor.

source'gmail' | 'google_calendar' | 'google_drive' | 'slack' | 'webhook' | 'mcp' | 'github' | 'linear' | 'stripe' | 'internal' required

Event source.

userIdstring required

Rowboat user id (UUID) owning the event.

Example request

{
  "dedupeKey": "internal:job:42",
  "source": "internal",
  "userId": "a8dfa9b6-a7b2-46ea-982c-622a914c00e5"
}

Response

Duplicate dedupeKey: existing event returned.

dedupedboolean required

Whether this post matched an existing (user, source, dedupeKey) event.

eventIdstring required

Cloud event id.

matchedTaskCountinteger

Tasks the router matched (populated once routed).

routingStatus'pending' | 'routed' | 'skipped' | 'failed' required

Routing status at response time.

Example response

{
  "eventId": "0c0afab1-7f6f-4f0b-9d8e-1e58e8b0f111",
  "routingStatus": "pending"
}

Changes

No recorded changes to this operation across all 50 revisions of this API.