From 26f7050ff4c61bcb51e29e6ee068b86eb74057e9 Mon Sep 17 00:00:00 2001 From: garethx Date: Thu, 24 Sep 2026 11:26:18 +0100 Subject: [PATCH] feat(quo): add 27 doc-sourced sample payloads for Quo (formerly OpenPhone) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Last stage of the creation pipeline for the QUO source type, following the registry row (hookdeck/webhook-registry#60) and the check record (hookdeck/webhook-registry-checks#11). Copied from the registry's samples-doc/ additive delta, which is byte-identical to a fresh harvest_quo.py run. New provider, 138 -> 139. Nothing existing touched. Version directory 2026-03-30 is the vendor's own: Quo stamps apiVersion into every payload and the overview page documents it as the webhook contract's version, pinned per subscription at creation. That is rule 3's "versions the webhook API" case, not an object or event-schema version. topic_identifier is the body field `type`, top-level, matching the registry's discriminator_path_lookup. Verified: resolveTopic returns the filename topic for all 27 samples. Only content-type is synthesized as a header — the discriminator is in the body, and Quo's signature headers are per-delivery values no document can supply. yarn compile: 139 providers, no topic collisions. yarn test: 14/14. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_017CPzW9895HjSr7wR2kXWxf --- providers/quo/2026-03-30/call.answered.json | 53 +++++++++++++++ providers/quo/2026-03-30/call.completed.json | 56 ++++++++++++++++ providers/quo/2026-03-30/call.forwarded.json | 52 ++++++++++++++ .../quo/2026-03-30/call.menu.selected.json | 53 +++++++++++++++ providers/quo/2026-03-30/call.missed.json | 50 ++++++++++++++ .../2026-03-30/call.recording.completed.json | 63 +++++++++++++++++ providers/quo/2026-03-30/call.ringing.json | 44 ++++++++++++ .../2026-03-30/call.summary.completed.json | 59 ++++++++++++++++ .../2026-03-30/call.transcript.completed.json | 67 +++++++++++++++++++ .../2026-03-30/call.voicemail.completed.json | 58 ++++++++++++++++ providers/quo/2026-03-30/contact.updated.json | 65 ++++++++++++++++++ .../quo/2026-03-30/message.delivered.json | 47 +++++++++++++ providers/quo/2026-03-30/message.failed.json | 47 +++++++++++++ .../quo/2026-03-30/message.received.json | 47 +++++++++++++ .../quo/2026-03-30/message.undelivered.json | 48 +++++++++++++ providers/quo/2026-03-30/task.assigned.json | 35 ++++++++++ providers/quo/2026-03-30/task.completed.json | 34 ++++++++++ providers/quo/2026-03-30/task.created.json | 37 ++++++++++ providers/quo/2026-03-30/task.deleted.json | 34 ++++++++++ .../quo/2026-03-30/task.duedate.removed.json | 34 ++++++++++ .../quo/2026-03-30/task.duedate.updated.json | 35 ++++++++++ providers/quo/2026-03-30/task.linked.json | 34 ++++++++++ providers/quo/2026-03-30/task.overdue.json | 35 ++++++++++ providers/quo/2026-03-30/task.reopened.json | 34 ++++++++++ providers/quo/2026-03-30/task.unassigned.json | 35 ++++++++++ providers/quo/2026-03-30/task.unlinked.json | 34 ++++++++++ providers/quo/2026-03-30/task.updated.json | 43 ++++++++++++ providers/quo/index.json | 13 ++++ 28 files changed, 1246 insertions(+) create mode 100644 providers/quo/2026-03-30/call.answered.json create mode 100644 providers/quo/2026-03-30/call.completed.json create mode 100644 providers/quo/2026-03-30/call.forwarded.json create mode 100644 providers/quo/2026-03-30/call.menu.selected.json create mode 100644 providers/quo/2026-03-30/call.missed.json create mode 100644 providers/quo/2026-03-30/call.recording.completed.json create mode 100644 providers/quo/2026-03-30/call.ringing.json create mode 100644 providers/quo/2026-03-30/call.summary.completed.json create mode 100644 providers/quo/2026-03-30/call.transcript.completed.json create mode 100644 providers/quo/2026-03-30/call.voicemail.completed.json create mode 100644 providers/quo/2026-03-30/contact.updated.json create mode 100644 providers/quo/2026-03-30/message.delivered.json create mode 100644 providers/quo/2026-03-30/message.failed.json create mode 100644 providers/quo/2026-03-30/message.received.json create mode 100644 providers/quo/2026-03-30/message.undelivered.json create mode 100644 providers/quo/2026-03-30/task.assigned.json create mode 100644 providers/quo/2026-03-30/task.completed.json create mode 100644 providers/quo/2026-03-30/task.created.json create mode 100644 providers/quo/2026-03-30/task.deleted.json create mode 100644 providers/quo/2026-03-30/task.duedate.removed.json create mode 100644 providers/quo/2026-03-30/task.duedate.updated.json create mode 100644 providers/quo/2026-03-30/task.linked.json create mode 100644 providers/quo/2026-03-30/task.overdue.json create mode 100644 providers/quo/2026-03-30/task.reopened.json create mode 100644 providers/quo/2026-03-30/task.unassigned.json create mode 100644 providers/quo/2026-03-30/task.unlinked.json create mode 100644 providers/quo/2026-03-30/task.updated.json create mode 100644 providers/quo/index.json diff --git a/providers/quo/2026-03-30/call.answered.json b/providers/quo/2026-03-30/call.answered.json new file mode 100644 index 0000000..d86327a --- /dev/null +++ b/providers/quo/2026-03-30/call.answered.json @@ -0,0 +1,53 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.answered", + "data": { + "resource": { + "id": "AC-call", + "direction": "incoming", + "createdAt": "2026-04-13T11:59:55.000Z", + "answeredAt": "2026-04-13T12:00:00.000Z", + "answeredByUserId": "US123", + "updatedAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.answered", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.completed.json b/providers/quo/2026-03-30/call.completed.json new file mode 100644 index 0000000..952515b --- /dev/null +++ b/providers/quo/2026-03-30/call.completed.json @@ -0,0 +1,56 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.completed", + "data": { + "resource": { + "id": "AC-call", + "direction": "incoming", + "status": "answered", + "createdAt": "2026-04-13T11:59:55.000Z", + "answeredAt": "2026-04-13T12:00:00.000Z", + "completedAt": "2026-04-13T12:00:55.000Z", + "updatedAt": "2026-04-13T12:00:55.000Z", + "duration": 55, + "hasVoicemail": false + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.completed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.forwarded.json b/providers/quo/2026-03-30/call.forwarded.json new file mode 100644 index 0000000..204f239 --- /dev/null +++ b/providers/quo/2026-03-30/call.forwarded.json @@ -0,0 +1,52 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.forwarded", + "data": { + "resource": { + "id": "AC-call", + "createdAt": "2026-04-13T11:59:55.000Z", + "updatedAt": "2026-04-13T12:00:00.000Z", + "forwardedFrom": "+15550000001", + "forwardedTo": "+15550000003" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.forwarded", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.menu.selected.json b/providers/quo/2026-03-30/call.menu.selected.json new file mode 100644 index 0000000..2e78b69 --- /dev/null +++ b/providers/quo/2026-03-30/call.menu.selected.json @@ -0,0 +1,53 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.menu.selected", + "data": { + "resource": { + "id": "AC-call", + "createdAt": "2026-04-13T12:00:00.000Z", + "updatedAt": "2026-04-13T12:00:00.000Z", + "phoneMenuSelection": "1", + "statusReason": "phone-menu-dial", + "phoneMenuSelectionName": "Sales" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.menu.selected", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.missed.json b/providers/quo/2026-03-30/call.missed.json new file mode 100644 index 0000000..944d894 --- /dev/null +++ b/providers/quo/2026-03-30/call.missed.json @@ -0,0 +1,50 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.missed", + "data": { + "resource": { + "id": "AC-call", + "createdAt": "2026-04-13T11:59:55.000Z", + "updatedAt": "2026-04-13T12:00:30.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.missed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.recording.completed.json b/providers/quo/2026-03-30/call.recording.completed.json new file mode 100644 index 0000000..86ca92a --- /dev/null +++ b/providers/quo/2026-03-30/call.recording.completed.json @@ -0,0 +1,63 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.recording.completed", + "data": { + "resource": { + "id": "AC-call", + "direction": "incoming", + "createdAt": "2026-04-13T11:59:55.000Z", + "answeredAt": "2026-04-13T12:00:00.000Z", + "completedAt": "2026-04-13T12:00:55.000Z", + "updatedAt": "2026-04-13T12:01:05.000Z", + "duration": 55, + "recordings": [ + { + "id": "REabc123", + "duration": 55, + "startTime": "2026-04-13T12:00:00.000Z", + "type": "audio/mpeg", + "url": "https://recordings.example.com/REabc123.mp3" + } + ] + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.recording.completed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.ringing.json b/providers/quo/2026-03-30/call.ringing.json new file mode 100644 index 0000000..29bb848 --- /dev/null +++ b/providers/quo/2026-03-30/call.ringing.json @@ -0,0 +1,44 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.ringing", + "data": { + "resource": { + "id": "AC-call", + "direction": "incoming", + "createdAt": "2026-04-13T12:00:00.000Z", + "updatedAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "userId": "US123", + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.ringing", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.summary.completed.json b/providers/quo/2026-03-30/call.summary.completed.json new file mode 100644 index 0000000..786069d --- /dev/null +++ b/providers/quo/2026-03-30/call.summary.completed.json @@ -0,0 +1,59 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.summary.completed", + "data": { + "resource": { + "callId": "AC-summary", + "processingStatus": "completed", + "summary": [ + "Customer asked for pricing details." + ], + "nextSteps": [ + "Send follow-up email." + ], + "fromPhoneNumber": null, + "handledByAiAgent": false, + "answeredByUserId": null, + "jobs": [] + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.summary.completed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.transcript.completed.json b/providers/quo/2026-03-30/call.transcript.completed.json new file mode 100644 index 0000000..592025c --- /dev/null +++ b/providers/quo/2026-03-30/call.transcript.completed.json @@ -0,0 +1,67 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.transcript.completed", + "data": { + "resource": { + "callId": "AC-transcript", + "createdAt": "2026-04-13T12:00:01.000Z", + "duration": 42, + "processingStatus": "completed", + "dialogue": [ + { + "userId": "US123", + "identifier": null, + "content": "Thanks for calling, how can I help?", + "start": 0, + "end": 3 + }, + { + "userId": null, + "identifier": "+15550000002", + "content": "Hi, I wanted to ask about pricing.", + "start": 3, + "end": 7 + } + ] + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.transcript.completed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/call.voicemail.completed.json b/providers/quo/2026-03-30/call.voicemail.completed.json new file mode 100644 index 0000000..68a41b1 --- /dev/null +++ b/providers/quo/2026-03-30/call.voicemail.completed.json @@ -0,0 +1,58 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "call.voicemail.completed", + "data": { + "resource": { + "id": "AC-voicemail", + "voicemailId": "VM123", + "callId": "AC-source-call", + "direction": "incoming", + "duration": 18, + "from": "+15550000002", + "to": "+15550000001", + "transcript": "Hi, leaving a quick message about the proposal...", + "recordingUrl": "https://recordings.example.com/VM123.mp3", + "createdAt": "2026-04-13T12:01:00.000Z", + "updatedAt": "2026-04-13T12:01:10.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "phoneNumberType": "shared", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "participants": { + "workspace": [ + "+15550000001" + ], + "external": [ + "+15550000002" + ], + "resolution": "available" + } + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "call.voicemail.completed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/contact.updated.json b/providers/quo/2026-03-30/contact.updated.json new file mode 100644 index 0000000..e9243bc --- /dev/null +++ b/providers/quo/2026-03-30/contact.updated.json @@ -0,0 +1,65 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "contact.updated", + "data": { + "resource": { + "id": "CT123", + "firstName": "Jane", + "lastName": "Doe", + "company": null, + "role": null, + "location": null, + "source": null, + "externalId": null, + "emails": [ + { + "value": "jane@example.com", + "type": "email" + } + ], + "phoneNumbers": [ + { + "value": "+15551234567", + "type": "phone-number" + } + ], + "customFields": [ + { + "name": "Department", + "key": "department", + "id": "i1", + "type": "multi-select", + "value": [ + "sales" + ] + } + ], + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "userId": "US123", + "sharedWithIds": [ + "US456" + ] + }, + "links": { + "quo": "https://my.quo.com/contacts/CT123" + } + } + }, + "topic": "contact.updated", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/message.delivered.json b/providers/quo/2026-03-30/message.delivered.json new file mode 100644 index 0000000..e56c9f7 --- /dev/null +++ b/providers/quo/2026-03-30/message.delivered.json @@ -0,0 +1,47 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "message.delivered", + "data": { + "resource": { + "id": "AC-message", + "direction": "outgoing", + "text": "hello", + "media": [], + "status": "delivered", + "createdAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "senderIdentifier": "+15550002222", + "recipientIdentifiers": [ + "+15550001111" + ] + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "message.delivered", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/message.failed.json b/providers/quo/2026-03-30/message.failed.json new file mode 100644 index 0000000..16f0b53 --- /dev/null +++ b/providers/quo/2026-03-30/message.failed.json @@ -0,0 +1,47 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "message.failed", + "data": { + "resource": { + "id": "AC-message", + "direction": "outgoing", + "text": "hello", + "status": "failed", + "errorCode": "30006", + "createdAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "senderIdentifier": "+15550002222", + "recipientIdentifiers": [ + "+15550001111" + ] + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "message.failed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/message.received.json b/providers/quo/2026-03-30/message.received.json new file mode 100644 index 0000000..8b95c46 --- /dev/null +++ b/providers/quo/2026-03-30/message.received.json @@ -0,0 +1,47 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "message.received", + "data": { + "resource": { + "id": "AC-message", + "direction": "incoming", + "text": "hello", + "media": [], + "status": "received", + "createdAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "senderIdentifier": "+15550001111", + "recipientIdentifiers": [ + "+15550002222" + ] + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "message.received", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/message.undelivered.json b/providers/quo/2026-03-30/message.undelivered.json new file mode 100644 index 0000000..34fa5ab --- /dev/null +++ b/providers/quo/2026-03-30/message.undelivered.json @@ -0,0 +1,48 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "message.undelivered", + "data": { + "resource": { + "id": "AC-message", + "direction": "outgoing", + "text": "hello", + "media": [], + "status": "undelivered", + "errorCode": "30007", + "createdAt": "2026-04-13T12:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "userId": "US123", + "contacts": { + "ids": [ + "CT123" + ], + "lookupStatus": "matched" + }, + "senderIdentifier": "+15550002222", + "recipientIdentifiers": [ + "+15550001111" + ] + }, + "links": { + "quo": "https://my.quo.com/inbox/..." + } + } + }, + "topic": "message.undelivered", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.assigned.json b/providers/quo/2026-03-30/task.assigned.json new file mode 100644 index 0000000..0a2746f --- /dev/null +++ b/providers/quo/2026-03-30/task.assigned.json @@ -0,0 +1,35 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.assigned", + "data": { + "resource": { + "id": "TK123", + "assignedTo": "US456" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.assigned", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.completed.json b/providers/quo/2026-03-30/task.completed.json new file mode 100644 index 0000000..66f94c4 --- /dev/null +++ b/providers/quo/2026-03-30/task.completed.json @@ -0,0 +1,34 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.completed", + "data": { + "resource": { + "id": "TK123" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.completed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.created.json b/providers/quo/2026-03-30/task.created.json new file mode 100644 index 0000000..400e148 --- /dev/null +++ b/providers/quo/2026-03-30/task.created.json @@ -0,0 +1,37 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.created", + "data": { + "resource": { + "id": "TK123", + "title": "Follow up with customer", + "description": "Discuss pricing and onboarding next steps.", + "dueDate": "2026-04-20T18:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.created", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.deleted.json b/providers/quo/2026-03-30/task.deleted.json new file mode 100644 index 0000000..3d47eba --- /dev/null +++ b/providers/quo/2026-03-30/task.deleted.json @@ -0,0 +1,34 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.deleted", + "data": { + "resource": { + "id": "TK123" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.deleted", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.duedate.removed.json b/providers/quo/2026-03-30/task.duedate.removed.json new file mode 100644 index 0000000..8779ed7 --- /dev/null +++ b/providers/quo/2026-03-30/task.duedate.removed.json @@ -0,0 +1,34 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.duedate.removed", + "data": { + "resource": { + "id": "TK123" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.duedate.removed", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.duedate.updated.json b/providers/quo/2026-03-30/task.duedate.updated.json new file mode 100644 index 0000000..a65f778 --- /dev/null +++ b/providers/quo/2026-03-30/task.duedate.updated.json @@ -0,0 +1,35 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.duedate.updated", + "data": { + "resource": { + "id": "TK123", + "updatedDueDate": "2026-04-27T18:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.duedate.updated", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.linked.json b/providers/quo/2026-03-30/task.linked.json new file mode 100644 index 0000000..61f28cc --- /dev/null +++ b/providers/quo/2026-03-30/task.linked.json @@ -0,0 +1,34 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.linked", + "data": { + "resource": { + "id": "TK123" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.linked", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.overdue.json b/providers/quo/2026-03-30/task.overdue.json new file mode 100644 index 0000000..a10644f --- /dev/null +++ b/providers/quo/2026-03-30/task.overdue.json @@ -0,0 +1,35 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.overdue", + "data": { + "resource": { + "id": "TK123", + "dueDate": "2026-04-20T18:00:00.000Z" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.overdue", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.reopened.json b/providers/quo/2026-03-30/task.reopened.json new file mode 100644 index 0000000..423a437 --- /dev/null +++ b/providers/quo/2026-03-30/task.reopened.json @@ -0,0 +1,34 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.reopened", + "data": { + "resource": { + "id": "TK123" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.reopened", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.unassigned.json b/providers/quo/2026-03-30/task.unassigned.json new file mode 100644 index 0000000..20bfc82 --- /dev/null +++ b/providers/quo/2026-03-30/task.unassigned.json @@ -0,0 +1,35 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.unassigned", + "data": { + "resource": { + "id": "TK123", + "unassignedFrom": "US456" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.unassigned", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.unlinked.json b/providers/quo/2026-03-30/task.unlinked.json new file mode 100644 index 0000000..60d869e --- /dev/null +++ b/providers/quo/2026-03-30/task.unlinked.json @@ -0,0 +1,34 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.unlinked", + "data": { + "resource": { + "id": "TK123" + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.unlinked", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/2026-03-30/task.updated.json b/providers/quo/2026-03-30/task.updated.json new file mode 100644 index 0000000..ab096a6 --- /dev/null +++ b/providers/quo/2026-03-30/task.updated.json @@ -0,0 +1,43 @@ +{ + "headers": { + "content-type": "application/json" + }, + "body": { + "id": "EV123", + "apiVersion": "2026-03-30", + "createdAt": "2026-04-13T12:00:00.000Z", + "type": "task.updated", + "data": { + "resource": { + "id": "TK123", + "updatedFields": { + "title": { + "isUpdated": true, + "updatedValue": "Follow up with customer ASAP" + }, + "description": { + "isUpdated": false + } + } + }, + "context": { + "orgId": "OR123", + "actorId": "US123", + "phoneNumberId": "PN123", + "conversationId": "CN123", + "activityId": "AC123", + "phoneNumberGroupId": null + }, + "links": { + "quo": "https://my.quo.com/inbox/PN123/c/CN123?taskId=TK123" + } + } + }, + "topic": "task.updated", + "source": { + "type": "vendor-documentation", + "url": "https://www.quo.com/docs/2026-03-30/webhooks-event-payloads", + "retrieved": "2026-09-23", + "note": "data wrapper from the payloads page; envelope from the common-envelope example at https://www.quo.com/docs/2026-03-30/webhooks-overview#common-envelope" + } +} diff --git a/providers/quo/index.json b/providers/quo/index.json new file mode 100644 index 0000000..eb93053 --- /dev/null +++ b/providers/quo/index.json @@ -0,0 +1,13 @@ +{ + "label": "Quo", + "configs": { + "latest_version": "2026-03-30", + "topic_identifier": "type" + }, + "provenance": { + "2026-03-30": { + "sourced_via": "docs", + "sourced_on": "2026-09-23" + } + } +}