@bijection/connectors/sendgrid entrypoint to declare Twilio SendGrid resources.
Availability
This page describes the pinned source package. Published availability is unestablished for this artifact. Source build and package availability.Resources and modes
| Resource | Mode | Description |
|---|---|---|
| Suppressions | pull | Suppression entries from a carried start_time, signed Event Webhook hints |
Suppressions
pull: Suppression entries from a carried start_time, signed Event Webhook hints
The following example matches configurationstandard.
import { sendgrid } from "@bijection/connectors/sendgrid";
export const bounces = sendgrid.suppressions.pull({ list: "bounces" });
Inferred record types
Inferred record types
Resource without an operational record table
Configuration: standard
Case:sendgrid/suppressions/pull/standard.
Connection and resource configuration are declared by this exact case.
Credential kind: sendgrid. Keep credential material in the private credential inventory.
| Setting | Type | Required | Owner |
|---|---|---|---|
host | string | Yes | Shared connection |
Complete configuration contract
Complete configuration contract
{
"setup": [],
"resource": {
"access": {},
"defaults": {},
"connector": "sendgrid",
"output": {
"kind": "single",
"collection": "suppressions"
},
"credential_kind": "sendgrid",
"connection_fields": [
"host"
],
"address": {
"kind": "setup",
"field": "host",
"prefix": "https://"
}
},
"connection_setup": {
"type": "object",
"value": {
"host": {
"fieldType": {
"type": "string"
},
"optional": false
}
}
},
"execution": null
}
| Contract | Meaning |
|---|---|
| Initial | Enumeration of observed records |
| Changes | Repeated observations of current records |
| Deletions | Deletion detection unsupported |
| Resume | No continuation |
| Gap | Not applicable |
| Retention | Unspecified |
Complete native profile
Complete native profile
{
"movement": {
"exchanges": {
"page": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
},
"since": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
}
},
"nativeInputLimitBytes": null,
"steps": [
{
"id": "acquire.1",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange page",
"limitBytes": null
}
},
{
"id": "acquire.2",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange since",
"limitBytes": null
}
},
{
"id": "retain.1",
"inputs": [
"acquire.1",
"acquire.2"
],
"action": {
"operation": "retain",
"subject": "acquisition evidence",
"reason": "recovery",
"release": "acquisition_custody"
}
},
{
"id": "interpret.1",
"inputs": [
"retain.1"
],
"action": {
"operation": "interpret",
"subject": "acquired input",
"produces": "records"
}
},
{
"id": "materialize.1",
"inputs": [
"interpret.1"
],
"action": {
"operation": "materialize",
"subject": "source rows",
"reason": "serving",
"release": "replacement"
}
},
{
"id": "publish.1",
"inputs": [
"materialize.1"
],
"action": {
"operation": "publish",
"subject": "source rows",
"visibility": "with_acquisition"
}
}
]
},
"initial": "enumeration",
"changes": "observations",
"deletions": "unsupported",
"resume": "none",
"retentionMs": null,
"gap": "not_applicable",
"limits": {
"http_response_bytes": "524288"
},
"restrictions": [],
"commands": {}
}
Commands, occurrences and artifacts
Commands, occurrences and artifacts
{
"records": {
"suppressions": {
"protocol": "record_observation",
"coverage": "records",
"consistency": "observations",
"atomicity": "record",
"history": "observations",
"recordRefresh": false,
"reconciliation": false,
"notifications": false,
"snapshotMaxRows": null,
"profile": {
"movement": {
"exchanges": {
"page": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
},
"since": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
}
},
"nativeInputLimitBytes": null,
"steps": [
{
"id": "acquire.1",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange page",
"limitBytes": null
}
},
{
"id": "acquire.2",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange since",
"limitBytes": null
}
},
{
"id": "retain.1",
"inputs": [
"acquire.1",
"acquire.2"
],
"action": {
"operation": "retain",
"subject": "acquisition evidence",
"reason": "recovery",
"release": "acquisition_custody"
}
},
{
"id": "interpret.1",
"inputs": [
"retain.1"
],
"action": {
"operation": "interpret",
"subject": "acquired input",
"produces": "records"
}
},
{
"id": "materialize.1",
"inputs": [
"interpret.1"
],
"action": {
"operation": "materialize",
"subject": "source rows",
"reason": "serving",
"release": "replacement"
}
},
{
"id": "publish.1",
"inputs": [
"materialize.1"
],
"action": {
"operation": "publish",
"subject": "source rows",
"visibility": "with_acquisition"
}
}
]
},
"initial": "enumeration",
"changes": "observations",
"deletions": "unsupported",
"resume": "none",
"retentionMs": null,
"gap": "not_applicable",
"limits": {
"http_response_bytes": "524288"
},
"restrictions": [],
"commands": {}
}
}
},
"occurrences": null,
"artifacts": {
"raw_archive": false,
"native_file_transfer_limit_bytes": null,
"external_versions": false,
"files": {}
},
"commands": {}
}
| Requirement | Scope | Evidence | Result |
|---|---|---|---|
| page-publication-recovery | {“kind”:“collection”,“name”:“suppressions”} | Native test: integrations/acquisition/acquisition_windows_preserve_sequences_and_restart_fences_old_work (shared_engine) | Execution result unavailable |
| backoff-stated-wait | {“kind”:“connection”} | Native test: integrations/acquisition/backoff_a_stated_wait_defers_the_next_dispatch_and_then_resumes (shared_engine) | Execution result unavailable |
| identity-account | {“kind”:“connection”} | Fixture: ./src/connectors/sendgrid/fixtures/identity.json | passed (2026-10-24T21:36:12.325Z) |
Configuration: webhooks
Case:sendgrid/suppressions/pull/webhooks.
Connection and resource configuration are declared by this exact case.
Credential kind: sendgrid. Keep credential material in the private credential inventory.
| Setting | Type | Required | Owner |
|---|---|---|---|
host | string | Yes | Shared connection |
Complete configuration contract
Complete configuration contract
{
"setup": [],
"resource": {
"access": {},
"defaults": {},
"connector": "sendgrid",
"output": {
"kind": "single",
"collection": "suppressions"
},
"credential_kind": "sendgrid",
"connection_fields": [
"host"
],
"address": {
"kind": "setup",
"field": "host",
"prefix": "https://"
}
},
"connection_setup": {
"type": "object",
"value": {
"host": {
"fieldType": {
"type": "string"
},
"optional": false
}
}
},
"execution": null
}
| Contract | Meaning |
|---|---|
| Initial | Enumeration of observed records |
| Changes | Repeated observations of current records |
| Deletions | Deletion detection unsupported |
| Resume | No continuation |
| Gap | Not applicable |
| Retention | Unspecified |
Complete native profile
Complete native profile
{
"movement": {
"exchanges": {
"page": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
},
"since": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
}
},
"nativeInputLimitBytes": null,
"steps": [
{
"id": "acquire.1",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange page",
"limitBytes": null
}
},
{
"id": "acquire.2",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange since",
"limitBytes": null
}
},
{
"id": "acquire.3",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "listener changes",
"limitBytes": null
}
},
{
"id": "retain.1",
"inputs": [
"acquire.1",
"acquire.2",
"acquire.3"
],
"action": {
"operation": "retain",
"subject": "acquisition evidence",
"reason": "recovery",
"release": "acquisition_custody"
}
},
{
"id": "interpret.1",
"inputs": [
"retain.1"
],
"action": {
"operation": "interpret",
"subject": "acquired input",
"produces": "records"
}
},
{
"id": "materialize.1",
"inputs": [
"interpret.1"
],
"action": {
"operation": "materialize",
"subject": "source rows",
"reason": "serving",
"release": "replacement"
}
},
{
"id": "publish.1",
"inputs": [
"materialize.1"
],
"action": {
"operation": "publish",
"subject": "source rows",
"visibility": "with_acquisition"
}
}
]
},
"initial": "enumeration",
"changes": "observations",
"deletions": "unsupported",
"resume": "none",
"retentionMs": null,
"gap": "not_applicable",
"limits": {
"http_response_bytes": "524288"
},
"restrictions": [],
"commands": {}
}
Commands, occurrences and artifacts
Commands, occurrences and artifacts
{
"records": {
"suppressions": {
"protocol": "record_observation",
"coverage": "records",
"consistency": "observations",
"atomicity": "record",
"history": "observations",
"recordRefresh": false,
"reconciliation": false,
"notifications": true,
"snapshotMaxRows": null,
"profile": {
"movement": {
"exchanges": {
"page": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
},
"since": {
"200": {
"placement": "retained_bytes",
"interpretation": "json",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"400": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"401": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"403": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"404": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"406": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"429": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"500": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
},
"503": {
"placement": "retained_bytes",
"interpretation": "opaque",
"projectsBeforeRetention": false,
"retainedBodyLimitBytes": "524288",
"fileLimitBytes": null
}
}
},
"nativeInputLimitBytes": null,
"steps": [
{
"id": "acquire.1",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange page",
"limitBytes": null
}
},
{
"id": "acquire.2",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "exchange since",
"limitBytes": null
}
},
{
"id": "acquire.3",
"inputs": [],
"action": {
"operation": "acquire",
"subject": "listener changes",
"limitBytes": null
}
},
{
"id": "retain.1",
"inputs": [
"acquire.1",
"acquire.2",
"acquire.3"
],
"action": {
"operation": "retain",
"subject": "acquisition evidence",
"reason": "recovery",
"release": "acquisition_custody"
}
},
{
"id": "interpret.1",
"inputs": [
"retain.1"
],
"action": {
"operation": "interpret",
"subject": "acquired input",
"produces": "records"
}
},
{
"id": "materialize.1",
"inputs": [
"interpret.1"
],
"action": {
"operation": "materialize",
"subject": "source rows",
"reason": "serving",
"release": "replacement"
}
},
{
"id": "publish.1",
"inputs": [
"materialize.1"
],
"action": {
"operation": "publish",
"subject": "source rows",
"visibility": "with_acquisition"
}
}
]
},
"initial": "enumeration",
"changes": "observations",
"deletions": "unsupported",
"resume": "none",
"retentionMs": null,
"gap": "not_applicable",
"limits": {
"http_response_bytes": "524288"
},
"restrictions": [],
"commands": {}
}
}
},
"occurrences": null,
"artifacts": {
"raw_archive": false,
"native_file_transfer_limit_bytes": null,
"external_versions": false,
"files": {}
},
"commands": {}
}
| Requirement | Scope | Evidence | Result |
|---|---|---|---|
| listener-custody-before-ack | {“kind”:“listener”,“collection”:“suppressions”} | Native test: integrations/listeners/webhook_delivery_commits_responsibility_before_acknowledging (shared_engine) | Execution result unavailable |
| listener-duplicate-delivery | {“kind”:“listener”,“collection”:“suppressions”} | Native test: integrations/providers/shopify_product_hint_is_deduplicated_and_refused_when_unsigned (shared_engine) | Execution result unavailable |
| page-publication-recovery | {“kind”:“collection”,“name”:“suppressions”} | Native test: integrations/acquisition/acquisition_windows_preserve_sequences_and_restart_fences_old_work (shared_engine) | Execution result unavailable |
| backoff-stated-wait | {“kind”:“connection”} | Native test: integrations/acquisition/backoff_a_stated_wait_defers_the_next_dispatch_and_then_resumes (shared_engine) | Execution result unavailable |
| identity-account | {“kind”:“connection”} | Fixture: ./src/connectors/sendgrid/fixtures/identity.json | passed (2026-10-24T21:36:12.325Z) |
Provider guidance
Compiled declaration examples and configuration details are published in the connector reference. The connection’shost is api.sendgrid.com (api.eu.sendgrid.com for EU regional
subusers); the sendgrid credential is an API key written as a bearer token. Identity is
GET /v3/user/username’s user_id. A 429 is honoured until X-RateLimit-Reset, read as epoch
seconds (SendGrid’s example; the unit is not stated).
suppressions.pull reads one list: bounces, blocks, spam_reports, invalid_emails or
the global unsubscribes. Each entry is SendGrid’s statement that an address was suppressed
at created, keyed by address and that second, and never changes. The lists page by offset
in an undocumented order, so the walk is anchored. A finished pass carries the provider
Date of its first page; the next reads start_time (inclusive) ten minutes before it. A
removed suppression is never stated: the collection is the history of suppressions observed.
With updates: "webhooks", a signed Event Webhook delivery requests a read. The platform
verifies ECDSA P-256 with SHA-256 over X-Twilio-Email-Event-Webhook-Timestamp followed by
the raw body, the base64 DER signature in X-Twilio-Email-Event-Webhook-Signature, against
the base64 public key SendGrid shows for the webhook (signing_key: base64), within
webhookToleranceSeconds (default 300; SendGrid states no bound and retries for 24 hours). A
delivery batches events and has no identity; the first event’s sg_event_id deduplicates an
exact repeat only.
Not built: contacts (the export job states its status in a 200 body and hands out storage
URLs outside the base URL in an undocumented format; search answers at most 50 with no
paging), and the email activity feeds (/v3/messages, /v3/logs: no cursor and no offset).
Each Event Webhook event carries an sg_event_id that could make it an occurrence, but a
delivery is one body of many events. Nothing here has run against SendGrid.
Provider references
Provider references and prerequisites are maintained in the connector guidance above. No separate provider-documentation review date is recorded.Source and evidence
Canonical connector source, native analysis and check receipts. Connector artifact:905888ea276a2a28e36981a79e8142b2547ea451c3e63162cb6915ad4a7d1305.
The resource declaration examples above are compiled and compared with exact catalog declarations. Recorded checks apply only to their source, declaration and runtime identities. Configure a connection and inspect its status to establish deployment-specific readiness.