AsyncAPI Specification
generated: '2026-08-13'
method: derived
source: >-
openapi/constant-contact-technology-partners-webhooks-api-openapi.yml +
openapi/_original/constant-contact-v3-openapi.yml (build 3.0.178)
provider: Constant Contact
providerId: constant-contact
description: >-
Constant Contact's only event surface: four partner BILLING webhook topics, managed through
the V3 REST API. There is no AsyncAPI document, no contact- or campaign-event webhook, and no
streaming surface. This catalog is derived from the operation descriptions in the published
Swagger, which are the provider's own words.
asyncapi_published: false
asyncapi_note: >-
No AsyncAPI document is served on any Constant Contact host. The event surface is small enough
and REST-managed enough that none is expected; recorded as absent rather than fabricated.
transport: HTTPS POST callback
audience: technology partners only
scope_required: v3api/general.partner
management:
base_url: https://api.cc.email/v3
operations:
- operationId: getWebhooksCollection
method: GET
path: /partner/webhooks/subscriptions
description: List your application's webhook topic subscriptions.
- operationId: getWebhooksTopic
method: GET
path: /partner/webhooks/subscriptions/{topic_id}
description: Get the subscription for one topic.
- operationId: putWebhooksTopic
method: PUT
path: /partner/webhooks/subscriptions/{topic_id}
description: Subscribe to a topic, or update the callback URI of an existing subscription.
- operationId: deleteWebhooksSubscriptions
method: DELETE
path: /partner/webhooks/subscriptions/{topic_id}
description: Delete a topic subscription.
- operationId: testSendWebhooksTopic
method: POST
path: /partner/webhooks/subscriptions/{topic_id}/tests
description: Trigger a test notification to your callback URI for that topic.
subscription_body:
hook_uri: The callback URI Constant Contact POSTs notifications to.
topics:
- topic_id: 1
name: Billing Tier Upgrade
description: Executes when an account's billing tier is upgraded.
- topic_id: 2
name: Billing Tier Downgrade
description: Executes when an account's billing tier is downgraded.
- topic_id: 3
name: Account Cancelled
description: Executes when a partner-managed account is cancelled.
- topic_id: 4
name: Account Disabled
description: Executes when a partner-managed account is disabled.
payload:
media_type: application/json
example: |
{"url":"https://api.cc.email/v3/partner/accounts/a07e1my9tbw0/plan",
"api_key":"REDACTED_EXAMPLE_UUID",
"event_type":"tier.increase"}
fields:
- name: url
description: A V3 API URL the partner should call to read the account's new state.
- name: api_key
description: The partner application API key associated with the notification.
- name: event_type
description: 'The event discriminator, e.g. tier.increase.'
note: >-
The notification is a POINTER, not a state payload — it tells the partner which resource
changed and expects a follow-up GET. The example payload in the provider's own spec carries
an api_key value in the body; the placeholder above is redacted.
delivery:
retry: >-
"If your application does not return a success response after receiving a notification,
Constant Contact will retry sending the POST notification at 1 minute intervals for up to an
hour." — verbatim from the putWebhooksTopic description.
max_retry_window: 1 hour
retry_interval: 60 seconds
ordering: not documented
deduplication: not documented
signature_verification: none documented
security_note: >-
No HMAC signature header, no shared secret, and no mTLS is documented for the callback. The
only thing distinguishing a genuine notification is the api_key value carried in the body,
which is a bearer-style secret in a request body rather than a verifiable signature. A
receiver should treat the payload as untrusted and re-read state from the API using its own
credentials.
gaps:
- >-
No webhooks exist for the surfaces most integrations want: contact created/updated/
unsubscribed, campaign sent, bounce, open, click. Those are poll-only through the reporting
endpoints, and the reporting endpoints are subject to the same 4 req/sec, 10,000 req/day cap.
- >-
Webhook docs pages (api_guide/webhooks.html, webhooks_overview.html) return 403; everything
recorded here comes from the OpenAPI operation descriptions.
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/constant-contact-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.