Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

## Unreleased

- Breaking, pending the API route cutover: Test phone methods take a Number ID
without a project argument. `testing.triggerEvent(numberId, body)` omits
body `session` and accepts `fromNumber`; `listEventFixtures()` has no project
argument. History fixtures keep their project argument and use
`/messaging/projects/{projectId}/test-history-fixtures`. Real Numbers return
`404 resource_not_found`. Scope names remain `sandbox:read` / `sandbox:write`.
Coordinated API draft: polymorfa/polymorfa#792. This package is not published
or deployed by that change.

- Webhook phone offline start day. Platform and Messaging webhook create,
update and read types gain `phoneOfflineStartDay` (7-13, default 10): the
first day without the phone on which the webhook receives
Expand Down
16 changes: 14 additions & 2 deletions contracts/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# Contract coverage

## Number-scoped Test phone and events

`test-number-dropin-routes.json`, `testing-phone.json` and `testing-events.json`
pin the six moved operations to API `79e62733b1b3d523618232a3794e26df64b7f486`
(see the full source commit in each JSON). The six coverage entries carry
`sourceCommit` overrides; the global baseline remains unchanged. Collision
schemas in the merged snapshot are namespaced `TestDropin*` so unrelated
operations retain their baseline fingerprints. The focused snapshots preserve
the authoritative schema names. No native language SDK packages implement
these methods in this repository. This is an unpublished breaking contract
change, coordinated with polymorfa/polymorfa#792.

## Request log supplement

`request-logs.json` pins `GET /platform/projects/{projectId}/request-logs` and
Expand Down Expand Up @@ -407,8 +419,8 @@ reads described at the end of this document.
| Total | 558 |

This revision adds test event triggering
(`POST /messaging/testing/{projectId}/events`) and fixture listing
(`GET /messaging/testing/{projectId}/events/fixtures`), covered by
(`POST /messaging/{session}/test-events`) and fixture listing
(`GET /messaging/test-events/fixtures`), covered by
`MessagingClient.testing.triggerEvent` (with the optional `Idempotency-Key`
header through `options.idempotencyKey`) and
`MessagingClient.testing.listEventFixtures`.
Expand Down
223 changes: 131 additions & 92 deletions contracts/coverage.json
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,18 @@
"method": "MessagingClient.sessions.qr"
}
},
{
"family": "messaging",
"method": "GET",
"path": "/messaging/{session}/phone",
"operationId": "getTestingPhone",
"fingerprint": "c637abc2946a96ab1d7a2fc6b86941dc29dd224c402487ba6b1ba12a11f62801",
"sourceCommit": "79e62733b1b3d523618232a3794e26df64b7f486",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.getPhone"
}
},
{
"family": "messaging",
"method": "GET",
Expand Down Expand Up @@ -990,13 +1002,14 @@
{
"family": "messaging",
"method": "GET",
"path": "/messaging/testing/{projectId}/events/fixtures",
"path": "/messaging/test-events/fixtures",
"operationId": "listTestEventFixtures",
"fingerprint": "0a1482d5fd5a365c0ba2e241d1f45ed0d5c88615c871ea97af442c8f26f3d22d",
"fingerprint": "a5de9ee23e1311ae016d0a939e85e47e1e893075d168fc8934a24607a262e72c",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.listEventFixtures"
}
},
"sourceCommit": "79e62733b1b3d523618232a3794e26df64b7f486"
},
{
"family": "messaging",
Expand Down Expand Up @@ -1638,6 +1651,30 @@
"method": "MessagingClient.sessions.requestPairingCode"
}
},
{
"family": "messaging",
"method": "POST",
"path": "/messaging/{session}/phone/devices/{deviceId}/unlink",
"operationId": "unlinkTestingPhoneDevice",
"fingerprint": "e2bf4a4710e39c69e1e8fc6470463de52a6dace45590f30c2dc4743dcffe5ff0",
"sourceCommit": "79e62733b1b3d523618232a3794e26df64b7f486",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.unlinkPhoneDevice"
}
},
{
"family": "messaging",
"method": "POST",
"path": "/messaging/{session}/phone/messages",
"operationId": "sendTestingPhoneMessage",
"fingerprint": "beba9148848a654eefe1e4825b3ee134556f05c705219eef5361a79a867fbdfb",
"sourceCommit": "79e62733b1b3d523618232a3794e26df64b7f486",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.sendPhoneMessage"
}
},
{
"family": "messaging",
"method": "POST",
Expand Down Expand Up @@ -1671,6 +1708,18 @@
"method": "MessagingClient.cloudTemplates.create"
}
},
{
"family": "messaging",
"method": "POST",
"path": "/messaging/{session}/test-events",
"operationId": "triggerTestEvent",
"fingerprint": "84b132cf4d9f8838d939836d6387692eb9b5a803bad4fc992c57196bfc42d078",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.triggerEvent"
},
"sourceCommit": "79e62733b1b3d523618232a3794e26df64b7f486"
},
{
"family": "messaging",
"method": "POST",
Expand Down Expand Up @@ -1704,6 +1753,18 @@
"method": "MessagingClient.media.persist"
}
},
{
"family": "messaging",
"method": "POST",
"path": "/messaging/projects/{projectId}/test-history-fixtures",
"operationId": "createTestingHistoryFixture",
"fingerprint": "b5327fa44a7c347ad90c67c25b4c2afa3cf568d835472611879c5dd0d0f4c70c",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.createHistoryFixture"
},
"sourceCommit": "79e62733b1b3d523618232a3794e26df64b7f486"
},
{
"family": "messaging",
"method": "POST",
Expand Down Expand Up @@ -1836,28 +1897,6 @@
"method": "MessagingClient.quickLinks.create"
}
},
{
"family": "messaging",
"method": "POST",
"path": "/messaging/testing/{projectId}/events",
"operationId": "triggerTestEvent",
"fingerprint": "c2d5c723923084c9fcca1be246f046b23d6a613eae5b6e25b71c2e6df462ec55",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.triggerEvent"
}
},
{
"family": "messaging",
"method": "POST",
"path": "/messaging/testing/{projectId}/history-fixtures",
"operationId": "createTestingHistoryFixture",
"fingerprint": "8941f260e0e4156976fe76ca2ce3545dbf2ff0a0a909bee938687e201cdfac65",
"typescript": {
"status": "covered",
"method": "MessagingClient.testing.createHistoryFixture"
}
},
{
"family": "messaging",
"method": "POST",
Expand Down Expand Up @@ -3017,6 +3056,17 @@
"reason": "Console-only operation requires dashboard identity; not available to SDK credentials."
}
},
{
"family": "platform",
"method": "GET",
"path": "/console/insights/vitals",
"operationId": "getConsoleErrorVitals",
"fingerprint": "4c3c1667cc5f2feb631064100976c3e399cd917cb29e4f336b85baf81335e217",
"typescript": {
"status": "excluded",
"reason": "Dashboard-only operational error vitals require a live Console identity; server API keys do not grant this authority."
}
},
{
"family": "platform",
"method": "GET",
Expand Down Expand Up @@ -3237,6 +3287,34 @@
"reason": "Console-only operation requires dashboard identity; not available to SDK credentials."
}
},
{
"family": "platform",
"method": "GET",
"path": "/platform/analytics",
"operationId": "getWhatsAppAnalytics",
"fingerprint": "1ac8b2438ef13263289d71f0d956fd3f7b60b44ac0999151bc96f30d31798b91",
"typescript": {
"status": "covered",
"method": "Client.analytics.get"
},
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8"
},
{
"family": "platform",
"method": "GET",
"path": "/platform/analytics/metrics",
"operationId": "exportWhatsAppAnalyticsMetrics",
"typescript": {
"status": "covered",
"method": "Client.analytics.metrics"
},
"fingerprint": "520ce37bc6a198e313d9495ddd968ebb54cbbe5cc84f4d6bea636c43a4ea62c5",
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99"
},
{
"family": "platform",
"method": "GET",
Expand Down Expand Up @@ -4007,6 +4085,34 @@
"method": "Client.projects.list"
}
},
{
"family": "platform",
"method": "GET",
"path": "/platform/projects/{projectId}/analytics",
"operationId": "getProjectWhatsAppAnalytics",
"fingerprint": "dc6ab3ff0e56d2e97c26fb64c2090b8b8f900a0f09c86e221f84932e9fb0a36f",
"typescript": {
"status": "covered",
"method": "Client.analytics.get"
},
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8"
},
{
"family": "platform",
"method": "GET",
"path": "/platform/projects/{projectId}/analytics/metrics",
"operationId": "exportProjectWhatsAppAnalyticsMetrics",
"typescript": {
"status": "covered",
"method": "Client.analytics.metrics"
},
"fingerprint": "56e2540bc5d78c3f458fbd363d63b101df49fcd273b7cc81e1fa9318d69b30b6",
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99"
},
{
"family": "platform",
"method": "GET",
Expand Down Expand Up @@ -6335,73 +6441,6 @@
"status": "covered",
"method": "Client.sessions.updateSafeMode"
}
},
{
"family": "platform",
"method": "GET",
"path": "/platform/analytics",
"operationId": "getWhatsAppAnalytics",
"fingerprint": "1ac8b2438ef13263289d71f0d956fd3f7b60b44ac0999151bc96f30d31798b91",
"typescript": {
"status": "covered",
"method": "Client.analytics.get"
},
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8"
},
{
"family": "platform",
"method": "GET",
"path": "/platform/projects/{projectId}/analytics",
"operationId": "getProjectWhatsAppAnalytics",
"fingerprint": "dc6ab3ff0e56d2e97c26fb64c2090b8b8f900a0f09c86e221f84932e9fb0a36f",
"typescript": {
"status": "covered",
"method": "Client.analytics.get"
},
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8"
},
{
"family": "platform",
"method": "GET",
"path": "/platform/analytics/metrics",
"operationId": "exportWhatsAppAnalyticsMetrics",
"typescript": {
"status": "covered",
"method": "Client.analytics.metrics"
},
"fingerprint": "520ce37bc6a198e313d9495ddd968ebb54cbbe5cc84f4d6bea636c43a4ea62c5",
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99"
},
{
"family": "platform",
"method": "GET",
"path": "/platform/projects/{projectId}/analytics/metrics",
"operationId": "exportProjectWhatsAppAnalyticsMetrics",
"typescript": {
"status": "covered",
"method": "Client.analytics.metrics"
},
"fingerprint": "56e2540bc5d78c3f458fbd363d63b101df49fcd273b7cc81e1fa9318d69b30b6",
"sourceContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sdkContractSha256": "71454ab4bb66d844aeedd325d9a62086cd6b6ba39a135197fd4f5ca29ef089e8",
"sourceCommit": "171a9683ff45d11a4b5d3917dc428ad2722b0d99"
},
{
"family": "platform",
"method": "GET",
"path": "/console/insights/vitals",
"operationId": "getConsoleErrorVitals",
"fingerprint": "4c3c1667cc5f2feb631064100976c3e399cd917cb29e4f336b85baf81335e217",
"typescript": {
"status": "excluded",
"reason": "Dashboard-only operational error vitals require a live Console identity; server API keys do not grant this authority."
}
}
]
}
Loading
Loading