This page tracks API paths from generated OpenAPI artifacts.

Source of truth

  • Runtime OpenAPI endpoint: GET /openapi.json
  • Checked-in docs snapshot: docs-site/openapi/openapi.json
  • Runtime OpenAPI path total in api/ test harness: 154 (TestOpenAPIContainsAllPaths)
  • Checked-in docs snapshot path total: 170

WAGO parity additions (this branch)

The following endpoint surfaces were added on feat/wago-parity-api and are now part of the runtime OpenAPI generated by api/:
/v1/chats/archive
/v1/chats/history-sync
/v1/chats/mute
/v1/chats/pin
/v1/chats/unarchive
/v1/chats/unmute
/v1/chats/unpin
/v1/calls/reject
/v1/communities
/v1/communities/groups/add
/v1/communities/groups/remove
/v1/newsletters
/v1/newsletters/{newsletterJID}
/v1/newsletters/{newsletterJID}/messages
/v1/newsletters/invite-link
/v1/newsletters/subscribe
/v1/groups
/v1/groups/{groupJID}
/v1/groups/description
/v1/groups/invite-link
/v1/groups/join
/v1/groups/leave
/v1/groups/name
/v1/groups/participants
/v1/groups/photo
/v1/channels/{channelID}/groups
/v1/labels/chats/attach
/v1/labels/chats/detach
/v1/labels/messages/attach
/v1/labels/messages/detach
/v1/messages/delete
/v1/messages/edit
/v1/messages/media/download
/v1/messages/presence
/v1/messages/react
/v1/messages/read
/v1/messages/{messageID}/status
/v1/channels/{channelID}/blocked-contacts
/v1/channels/{channelID}/contacts
/v1/channels/{channelID}/logs
/v1/channels/{channelID}/pairing-code
/v1/channels/{channelID}/privacy
/v1/channels/{channelID}/profile
/v1/channels/{channelID}/proxy
/v1/channels/{channelID}/settings/advanced
/v1/contacts/block
/v1/contacts/lookup
/v1/contacts/resolve
/v1/contacts/unblock

Path groups

GroupPaths
auth12
organizations and members11
channels17
contacts and conversations25
messages and media6
cdp21
settings16
waba9
system8

Contact API note

Wazapin public contact APIs are designed around contacts as the canonical CRM resource.
  • Use /v1/contacts and /v1/contacts/{contactID} for stored contact records.
  • Use POST /v1/contacts/resolve as the canonical CRM identity-resolution endpoint across phone, WhatsApp, email, Instagram, or external IDs.
  • POST /v1/contacts/lookup remains available as a compatibility alias for older clients.
  • Avoid channel-specific public path conventions such as /v1/contacts/wa/{wa_id} because they do not scale cleanly once a single contact can own multiple identities across channels.

Snapshot path list

The list below is generated from the checked-in OpenAPI snapshot at docs-site/openapi/openapi.json.
/v1/api-keys
/v1/api-keys/{keyID}
/v1/audit-logs
/v1/auth/email-verification/confirm
/v1/auth/email-verification/request
/v1/auth/fingerprint-events
/v1/auth/login
/v1/auth/logout
/v1/auth/me
/v1/auth/me/preferences
/v1/auth/me/presence
/v1/auth/onboarding
/v1/auth/password/confirm
/v1/auth/password/reset
/v1/auth/register
/v1/cdp/activity-log
/v1/cdp/contact-objects
/v1/cdp/contact-objects/{objectID}
/v1/cdp/contacts/{contactID}/activity
/v1/cdp/contacts/{contactID}/lifecycle-stage
/v1/cdp/custom-fields
/v1/cdp/custom-fields/{fieldID}
/v1/cdp/events
/v1/cdp/lifecycle-stages
/v1/cdp/lifecycle-stages/metrics
/v1/cdp/lifecycle-stages/{stageID}
/v1/cdp/object-types
/v1/cdp/object-types/{objectTypeID}
/v1/cdp/object-types/{objectTypeID}/fields
/v1/cdp/object-types/{objectTypeID}/fields/reorder
/v1/cdp/object-types/{objectTypeID}/fields/{fieldID}
/v1/cdp/segments
/v1/cdp/segments/{segmentID}
/v1/cdp/segments/{segmentID}/members
/v1/cdp/templates
/v1/cdp/templates/{templateID}
/v1/channels
/v1/channels/{channelID}
/v1/channels/{channelID}/capabilities
/v1/channels/{channelID}/connect
/v1/channels/{channelID}/disconnect
/v1/channels/{channelID}/media/{mediaID}
/v1/channels/{channelID}/network/proxy
/v1/channels/{channelID}/pairing-code
/v1/channels/{channelID}/profile/business
/v1/channels/{channelID}/qr
/v1/channels/{channelID}/reconnect
/v1/channels/{channelID}/reconnect/force
/v1/channels/{channelID}/settings/advanced
/v1/channels/{channelID}/settings/phone
/v1/channels/{channelID}/settings/phone/two-step
/v1/channels/{channelID}/settings/phone/two-step/enable
/v1/channels/{channelID}/status
/v1/contact-tags
/v1/contact-tags/{tagID}
/v1/contacts
/v1/contacts/phone/{phone}
/v1/contacts/{contactID}
/v1/contacts/{contactID}/consent/{channel}
/v1/contacts/{contactID}/notes
/v1/contacts/{contactID}/notes/{noteID}
/v1/contacts/{contactID}/suppressions
/v1/contacts/{contactID}/tags
/v1/contacts/{contactID}/tags/{tagID}
/v1/conversations
/v1/conversations/{convID}
/v1/conversations/{convID}/archive
/v1/conversations/{convID}/assign
/v1/conversations/{convID}/close
/v1/conversations/{convID}/history-sync
/v1/conversations/{convID}/labels
/v1/conversations/{convID}/labels/{labelID}
/v1/conversations/{convID}/messages
/v1/conversations/{convID}/mute
/v1/conversations/{convID}/pin
/v1/conversations/{convID}/read
/v1/conversations/{convID}/reopen
/v1/conversations/{convID}/unarchive
/v1/conversations/{convID}/unmute
/v1/conversations/{convID}/unpin
/v1/group-hubs
/v1/group-hubs/{hubID}/groups/add
/v1/group-hubs/{hubID}/groups/remove
/v1/groups
/v1/groups/mine
/v1/groups/{groupID}
/v1/groups/{groupID}/description
/v1/groups/{groupID}/invite-link
/v1/groups/{groupID}/join
/v1/groups/{groupID}/leave
/v1/groups/{groupID}/name
/v1/groups/{groupID}/participants/actions
/v1/groups/{groupID}/photo
/v1/health
/v1/invitations
/v1/invitations/{id}/accept
/v1/invitations/{invitationID}
/v1/labels
/v1/labels/{labelID}
/v1/media/assets
/v1/media/assets/{assetID}
/v1/media/uploads
/v1/members
/v1/members/{userID}
/v1/messages
/v1/messages/uploads/image
/v1/messages/{messageID}
/v1/organization
/v1/organizations
/v1/ready
/v1/settings/billing
/v1/settings/developer/webhooks
/v1/settings/developer/webhooks/alerting-settings
/v1/settings/developer/webhooks/deliveries
/v1/settings/developer/webhooks/deliveries/{messageID}/attempts
/v1/settings/developer/webhooks/deliveries/{messageID}/retry
/v1/settings/developer/webhooks/endpoints
/v1/settings/developer/webhooks/endpoints/{endpointID}
/v1/settings/developer/webhooks/endpoints/{endpointID}/rotate-secret
/v1/settings/developer/webhooks/endpoints/{endpointID}/test
/v1/settings/developer/webhooks/portal-access
/v1/settings/integrations
/v1/settings/notifications
/v1/settings/security
/v1/settings/sessions
/v1/settings/sessions/{sessionID}
/v1/teams
/v1/teams/{teamID}
/v1/teams/{teamID}/members
/v1/teams/{teamID}/members/{userID}
/v1/templates
/v1/templates/library
/v1/templates/library/{libraryItemID}
/v1/templates/sync
/v1/templates/{templateID}
/v1/templates/{templateID}/duplicate
/v1/templates/{templateID}/submit
/v1/users/lookup/check
/v1/users/lookup/info
/v1/users/me/avatar
/v1/users/me/blocklist
/v1/users/me/blocks
/v1/users/me/blocks/{userRef}
/v1/users/me/contacts
/v1/users/me/privacy
/v1/users/me/profile
/v1/version
/v1/waba/errors
/v1/waba/exchange-code
/v1/waba/labels/support
/v1/waba/oauth/start
/v1/waba/progress/{progressID}
/v1/waba/register-phone
/v1/waba/signup-event
/v1/waba/subscribe-webhook
/v1/waba/sync-meta
The checked-in OpenAPI snapshot and the runtime harness can diverge temporarily. If counts or paths disagree, use GET /openapi.json from the running API as the operational source of truth.
For WAGO-backed channels, POST /v1/newsletters/invite-link is currently provider-unsupported and returns a stable 400 client error.
The parity surface now follows a hybrid contract style:
  • reads/detail/config endpoints stay resource-oriented where that is natural
  • command/action endpoints use body-driven POST routes for consistency with the existing Wazapin API style