Outcome
Create one manual prospect contact without enrolling or messaging it.
Before you start
- Verify the environment, credential, authorized organization and the published action permission workspace:write.
- Discover an accessible Engage workspace and bind resourceType=workspace and its resourceId separately from action input. Fixture identifiers grant no access.
- Approve the exact mutation and its effects before CLI --confirm or MCP confirm:true. This documentation does not authorize outreach.
Discover the target
- Select the authorized workspace and review the intended email and profile. Use contacts.resolve first to check whether the normalized address already belongs to a contact.
topolo whoami --json
topolo actions get app_topolo_engage.contacts.create --json
topolo workspaces list topolo-engage --json
Input fields
| Field | Required | Meaning and constraints |
|---|---|---|
email | Yes | Required intended email address, trimmed 3–254 characters; runtime normalization can still refuse an invalid address. |
firstName | No | Optional trimmed profile text up to 120 characters; null or blank clears the field. |
lastName | No | Optional trimmed profile text up to 120 characters; null or blank clears the field. |
company | No | Optional trimmed text up to 200 characters; null or blank clears. |
title | No | Optional trimmed text up to 200 characters; null or blank clears. |
website | No | Optional trimmed text up to 500 characters; null or blank clears. |
country | No | Optional trimmed text up to 80 characters; null or blank clears. |
timezone | No | Optional trimmed text up to 80 characters; null or blank clears. |
custom | No | Optional object with trimmed keys of 1–64 characters and string values up to 1,000 characters. On update, supplied keys merge into retained custom fields; this action has no delete-key input. |
Validate, plan and execute
Set ENGAGE_WORKSPACE_ID to the identifier of your selected workspace. Prepare payload.json from the current input schema and discovered identifiers. Use the same payload for validation, planning and execution.
: "${ENGAGE_WORKSPACE_ID:?Set ENGAGE_WORKSPACE_ID to your selected workspace identifier}"
topolo actions validate app_topolo_engage.contacts.create --data @payload.json --json
topolo actions plan app_topolo_engage.contacts.create --resource-type workspace --resource-id "$ENGAGE_WORKSPACE_ID" --data @payload.json --confirm --json
Review the plan and obtain approval for the exact effects before executing the unchanged request.
: "${ENGAGE_WORKSPACE_ID:?Set ENGAGE_WORKSPACE_ID to your selected workspace identifier}"
topolo actions call app_topolo_engage.contacts.create --resource-type workspace --resource-id "$ENGAGE_WORKSPACE_ID" --data @payload.json --confirm --json
For MCP, use topolo_get_action, topolo_validate_action, topolo_plan_action and topolo_call_action. Pass the selected resource context separately; confirm:true is required for mutations.
Worked requests and responses
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: inbound replies thread into the inbox > creates the thread on the first reply with an SLA, the message and its sender hash, and alerts the campaign creator. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": "CTO",
"custom": {
"LinkedIn": "https://www.linkedin.com/in/ada",
"Phone": "+44 20 0000"
}
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": "CTO",
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {
"LinkedIn": "https://www.linkedin.com/in/ada",
"Phone": "+44 20 0000"
},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: task steps in sequences > stores linkedin_task and call_task steps with instructions and a due offset, and copies them into a new version. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "grace@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: the run ledger > records a scheduled pass: the heartbeat and one row per workspace touched. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "alan@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "alan@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: reply inbox actions > threads.list and threads.get > lists the queue with counts, overdue first, and filters it. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "bob@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "bob@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: engagement analytics > reports first-touch rates by campaign: each contact once, bounced never replied, test campaigns excluded. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "cy@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "cy@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: engagement analytics > reports first-touch rates by campaign: each contact once, bounced never replied, test campaigns excluded. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "eve@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "eve@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: engagement analytics > reports first-touch rates by campaign: each contact once, bounced never replied, test campaigns excluded. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "dee@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_5",
"email": "dee@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: engagement analytics > reports first-touch rates by campaign: each contact once, bounced never replied, test campaigns excluded. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "tess@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_6",
"email": "tess@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: engagement analytics > reports first-touch rates by campaign: each contact once, bounced never replied, test campaigns excluded. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"lastName": "Lovelace"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": "Lovelace",
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: the runner on a WhatsApp template step > skips the step (not the enrollment) without a phone, without an opt-in, after a revoke and with an unresolved variable. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@acme.io",
"firstName": "Grace",
"company": "Navy"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "grace@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Grace",
"lastName": null,
"company": "Navy",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: runDueSends > hold order > global cap first: holds once the workspace reached its daily cap, until the next day's window. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "dan@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "dan@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: Notify webhook receiver > resolves the message by idempotency key, then X-Entity-Ref-ID, then email message id, then RFC Message-ID. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"company": "Analytical",
"timezone": "America/New_York"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": null,
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": "America/New_York",
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: runDueSends > hold order > then the recipient-local window, then the warm-up cap. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"timezone": "Asia/Tokyo"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": "Asia/Tokyo",
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: the runner on a WhatsApp template step > holds for quiet hours in the contact's time zone until they end. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: runDueSends > skips a message with an unresolved merge field and never sends it empty. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "zed@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_7",
"email": "zed@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-07T08:30:00.000Z",
"updatedAt": "2026-10-07T08:30:00.000Z",
"archivedAt": null
}
}
Source test: engagement analytics > refreshes one enrollment, drops its fact when it was never sent, and never lets analytics stop a send. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"company": "Acme",
"title": "CTO"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Acme",
"title": "CTO",
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: ICP filters over the published actions > contacts.list filter > filters by ICP fields over GET, backward compatible without one. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "bob@acme.io",
"company": "Acme",
"title": "Sales Manager"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "bob@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Acme",
"title": "Sales Manager",
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: ICP filters over the published actions > contacts.list filter > filters by ICP fields over GET, backward compatible without one. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "cy@globex.com",
"company": "Globex",
"title": "VP Marketing"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "cy@globex.com",
"domain": "globex.com",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Globex",
"title": "VP Marketing",
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: ICP filters over the published actions > contacts.list filter > filters by ICP fields over GET, backward compatible without one. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "Ada@Acme.IO",
"firstName": "Ada",
"lastName": "",
"company": "Analytical",
"custom": {
"tier": "a"
}
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": null,
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {
"tier": "a"
},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > creates, reads, searches, edits and archives a manual contact. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "sales@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "sales@acme.io",
"domain": "acme.io",
"addressType": "role",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > classifies role and generic addresses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "mailto:<Info@Example.org>"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "info@example.org",
"domain": "example.org",
"addressType": "generic",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > classifies role and generic addresses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "postmaster@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "postmaster@acme.io",
"domain": "acme.io",
"addressType": "generic",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > classifies role and generic addresses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > returns 409 with the existing id for a duplicate address, archived or not. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p00@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "p00@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p01@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "p01@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p02@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "p02@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p03@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "p03@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p04@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_5",
"email": "p04@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p05@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_6",
"email": "p05@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p06@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_7",
"email": "p06@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p07@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_8",
"email": "p07@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p08@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_9",
"email": "p08@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p09@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_10",
"email": "p09@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p10@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_11",
"email": "p10@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p11@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_12",
"email": "p11@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p12@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_13",
"email": "p12@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p13@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_14",
"email": "p13@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p14@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_15",
"email": "p14@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p15@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_16",
"email": "p15@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p16@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_17",
"email": "p16@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p17@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_18",
"email": "p17@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p18@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_19",
"email": "p18@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p19@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_20",
"email": "p19@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p20@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_21",
"email": "p20@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p21@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_22",
"email": "p21@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p22@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_23",
"email": "p22@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p23@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_24",
"email": "p23@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p24@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_25",
"email": "p24@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p25@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_26",
"email": "p25@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p26@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_27",
"email": "p26@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p27@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_28",
"email": "p27@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p28@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_29",
"email": "p28@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p29@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_30",
"email": "p29@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p30@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_31",
"email": "p30@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p31@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_32",
"email": "p31@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p32@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_33",
"email": "p32@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p33@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_34",
"email": "p33@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p34@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_35",
"email": "p34@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p35@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_36",
"email": "p35@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p36@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_37",
"email": "p36@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p37@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_38",
"email": "p37@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p38@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_39",
"email": "p38@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p39@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_40",
"email": "p39@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p40@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_41",
"email": "p40@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p41@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_42",
"email": "p41@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p42@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_43",
"email": "p42@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p43@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_44",
"email": "p43@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-05T09:00:00.000Z",
"updatedAt": "2026-10-05T09:00:00.000Z",
"archivedAt": null
}
}
Source test: render ahead for approval > queues a message due tomorrow today, sends it in the window once approved, and never renders twice. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p44@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_45",
"email": "p44@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p45@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_46",
"email": "p45@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p46@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_47",
"email": "p46@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p47@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_48",
"email": "p47@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p48@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_49",
"email": "p48@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p49@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_50",
"email": "p49@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p50@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_51",
"email": "p50@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > pages newest first with an opaque cursor. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > returns 404 for a contact in another workspace or organization. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts > returns 404 for a contact in another workspace or organization. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"custom": {
"crm_contact_id": "crm_1"
}
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {
"crm_contact_id": "crm_1"
},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > contacts.resolve > finds a contact by normalised email or CRM id for a reader, and never creates one. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "grace@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > lists > creates, lists, edits and archives a list. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > imports > updates changed contacts, matches unchanged ones and adds both to the list under a new key. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@acme.io",
"firstName": "Grace"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "grace@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Grace",
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > imports > updates changed contacts, matches unchanged ones and adds both to the list under a new key. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "old@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "old@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: audience routes > imports > updates changed contacts, matches unchanged ones and adds both to the list under a new key. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"lastName": "Lovelace"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": "Lovelace",
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-05T09:00:00.000Z",
"updatedAt": "2026-10-05T09:00:00.000Z",
"archivedAt": null
}
}
Source test: render ahead for approval > fails closed: an incomplete footer or an unresolved merge field is held with its reason, never queued. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@navy.mil",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "grace@navy.mil",
"domain": "navy.mil",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: contacts.export > exports a contact that was never enrolled with empty dependent kinds. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T12:00:00.000Z",
"updatedAt": "2026-10-01T12:00:00.000Z",
"archivedAt": null
}
}
Source test: contactability routes > ledger > records blocks idempotently and resolves the contact status. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@navy.mil"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "grace@navy.mil",
"domain": "navy.mil",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T12:00:00.000Z",
"updatedAt": "2026-10-01T12:00:00.000Z",
"archivedAt": null
}
}
Source test: contactability routes > ledger > blocks an address across workspaces of one organization but not across organizations. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@navy.mil"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "grace@navy.mil",
"domain": "navy.mil",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T12:00:00.000Z",
"updatedAt": "2026-10-01T12:00:00.000Z",
"archivedAt": null
}
}
Source test: contactability routes > ledger > blocks an address across workspaces of one organization but not across organizations. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "grace@navy.mil"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "grace@navy.mil",
"domain": "navy.mil",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T12:00:00.000Z",
"updatedAt": "2026-10-01T12:00:00.000Z",
"archivedAt": null
}
}
Source test: contactability routes > ledger > blocks an address across workspaces of one organization but not across organizations. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"company": "Acme"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Acme",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T09:00:00.000Z",
"updatedAt": "2026-10-01T09:00:00.000Z",
"archivedAt": null
}
}
Source test: sourcing workflows over the published actions > creates, lists, gets, updates and deletes a workflow with audited writes. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "bob@acme.io",
"company": "Acme"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "bob@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Acme",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T09:00:00.000Z",
"updatedAt": "2026-10-01T09:00:00.000Z",
"archivedAt": null
}
}
Source test: sourcing workflows over the published actions > creates, lists, gets, updates and deletes a workflow with audited writes. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "cy@acme.io",
"company": "Acme"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "cy@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Acme",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T09:00:00.000Z",
"updatedAt": "2026-10-01T09:00:00.000Z",
"archivedAt": null
}
}
Source test: sourcing workflows over the published actions > creates, lists, gets, updates and deletes a workflow with audited writes. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "dee@globex.com",
"company": "Globex"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "dee@globex.com",
"domain": "globex.com",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Globex",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T09:00:00.000Z",
"updatedAt": "2026-10-01T09:00:00.000Z",
"archivedAt": null
}
}
Source test: sourcing workflows over the published actions > creates, lists, gets, updates and deletes a workflow with audited writes. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "opt.out@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "opt.out@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T12:00:00.000Z",
"updatedAt": "2026-10-01T12:00:00.000Z",
"archivedAt": null
}
}
Source test: contactability routes > ledger > stops outreach after a global unsubscribe. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "old@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "old@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases only archived contacts past the period in workspaces that set one, and they stay suppressed. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "recent@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "recent@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases only archived contacts past the period in workspaces that set one, and they stay suppressed. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "active@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "active@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases only archived contacts past the period in workspaces that set one, and they stay suppressed. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "else@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "else@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases only archived contacts past the period in workspaces that set one, and they stay suppressed. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ok@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ok@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: enrollment routes > enrolls a list and reports every contact it skipped and why. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "blocked@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "blocked@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: enrollment routes > enrolls a list and reports every contact it skipped and why. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "gone@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "gone@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: enrollment routes > enrolls a list and reports every contact it skipped and why. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "alan@turing.org"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "alan@turing.org",
"domain": "turing.org",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T12:00:00.000Z",
"updatedAt": "2026-10-01T12:00:00.000Z",
"archivedAt": null
}
}
Source test: contactability routes > eligibility > checks recipients: eligible, blocked, undeliverable and without a contact point. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "old@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_5",
"email": "old@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases only archived contacts past the period in workspaces that set one, and they stay suppressed. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p0@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "p0@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p1@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "p1@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p2@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "p2@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p3@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "p3@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p4@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_5",
"email": "p4@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p5@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_6",
"email": "p5@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p6@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_7",
"email": "p6@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p7@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_8",
"email": "p7@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p8@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_9",
"email": "p8@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p9@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_10",
"email": "p9@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p10@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_11",
"email": "p10@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p11@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_12",
"email": "p11@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p12@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_13",
"email": "p12@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p13@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_14",
"email": "p13@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p14@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_15",
"email": "p14@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p15@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_16",
"email": "p15@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p16@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_17",
"email": "p16@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p17@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_18",
"email": "p17@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p18@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_19",
"email": "p18@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p19@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_20",
"email": "p19@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p20@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_21",
"email": "p20@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p21@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_22",
"email": "p21@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p22@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_23",
"email": "p22@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p23@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_24",
"email": "p23@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p24@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_25",
"email": "p24@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p25@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_26",
"email": "p25@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: archived contact retention > erases at most one batch per workspace per run. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": "Lovelace",
"company": "Analytical",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-06T08:30:00.000Z",
"updatedAt": "2026-10-06T08:30:00.000Z",
"archivedAt": null
}
}
Source test: contacts.erase > keeps the same email suppressed for every purpose when it is added again as a new contact. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "ada@acme.io",
"firstName": "Ada",
"company": "Acme",
"title": "CTO",
"country": "UK",
"custom": {
"industry": "Fintech"
}
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "ada@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": "Ada",
"lastName": null,
"company": "Acme",
"title": "CTO",
"website": null,
"country": "UK",
"timezone": null,
"source": "manual",
"custom": {
"industry": "Fintech"
},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > scores the given contacts as the person, stores the latest result and audits counts and the brief hash only. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "good@acme.io",
"company": "Good"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "good@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Good",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > isolates per-contact failures: unusable replies and upstream errors fail only that contact; unknown and archived ones are skipped. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "junk@acme.io",
"company": "Junk"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "junk@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Junk",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > isolates per-contact failures: unusable replies and upstream errors fail only that contact; unknown and archived ones are skipped. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "flaky@acme.io",
"company": "Flaky"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "flaky@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": "Flaky",
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > isolates per-contact failures: unusable replies and upstream errors fail only that contact; unknown and archived ones are skipped. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "gone@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "gone@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > isolates per-contact failures: unusable replies and upstream errors fail only that contact; unknown and archived ones are skipped. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p0@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "p0@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p1@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "p1@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p2@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "p2@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p3@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "p3@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p4@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_5",
"email": "p4@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p5@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_6",
"email": "p5@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p6@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_7",
"email": "p6@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p7@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_8",
"email": "p7@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p8@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_9",
"email": "p8@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "p9@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_10",
"email": "p9@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > qualifies a list's first unqualified or stale active members, bounded to 25. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "a@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_1",
"email": "a@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > stops the run when Nexus refuses the person or the organization, auditing nothing. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "b@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_2",
"email": "b@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > stops the run when Nexus refuses the person or the organization, auditing nothing. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "c@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_3",
"email": "c@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > stops the run when Nexus refuses the person or the organization, auditing nothing. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 201
Action input
{
"email": "d@acme.io"
}
Actual local response
{
"contact": {
"id": "contact_4",
"email": "d@acme.io",
"domain": "acme.io",
"addressType": "person",
"verificationStatus": "unknown",
"firstName": null,
"lastName": null,
"company": null,
"title": null,
"website": null,
"country": null,
"timezone": null,
"source": "manual",
"custom": {},
"createdAt": "2026-10-01T00:00:00.000Z",
"updatedAt": "2026-10-01T00:00:00.000Z",
"archivedAt": null
}
}
Source test: contacts.qualify > stops the run when Nexus refuses the person or the organization, auditing nothing. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Effects and response meaning
- Normalizes the email, classifies person/role/generic, and atomically stores a manual-source contact and primary email point. Returns contact with HTTP 201. This does not verify the address, enroll the contact or send outreach.
- An address held by an active or archived contact in this workspace returns duplicate_contact with details.contactId. No idempotency key is accepted; email uniqueness prevents a second record for the same normalized address.
Verify the result
- Read contacts.get with returned contact.id in the same workspace and compare normalized email, intended profile and custom values. Inspect archivedAt when resolving a duplicate.
Recover
After an uncertain response, call contacts.resolve for the exact intended email and then contacts.get. Compare the retained record before retrying; a duplicate refusal is not proof the original payload matches. Do not replace the email to bypass uniqueness. If an unwanted contact was created, archiving is a separate approved mutation and retains its address reservation.
Refused responses
Captured contacts.create · HTTP 503
Refused input; do not execute
{}
Actual local response
{
"error": {
"code": "address_hashing_unconfigured",
"message": "Contact storage is unavailable: the address hashing secret is not configured."
}
}
Source test: audience routes > fails closed with 503 when the address hashing secret is missing. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 409
Action input
{
"email": "ADA@acme.io"
}
Actual local response
{
"error": {
"code": "duplicate_contact",
"message": "A contact with this email already exists in this workspace.",
"details": {
"contactId": "contact_1"
}
}
}
Source test: audience routes > contacts > returns 409 with the existing id for a duplicate address, archived or not. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 422
Action input
{
"email": "no-at-sign"
}
Actual local response
{
"error": {
"code": "invalid_email",
"message": "The email address is not valid.",
"details": {
"reason": "missing_at"
}
}
}
Source test: audience routes > contacts > returns 422 for an invalid email and for input the contract refuses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 422
Refused input; do not execute
{
"firstName": "x"
}
Actual local response
{
"error": {
"code": "invalid_action_input",
"message": "Input for contacts.create is invalid.",
"details": [
{
"expected": "string",
"code": "invalid_type",
"path": [
"email"
],
"message": "Invalid input: expected string, received undefined"
}
]
}
}
Source test: audience routes > contacts > returns 422 for an invalid email and for input the contract refuses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 403
Refused input; do not execute
{}
Actual local response
{
"error": {
"code": "permission_denied",
"message": "The credential lacks workspace:write.",
"details": {
"requiredPermission": "workspace:write"
}
}
}
Source test: audience routes > permissions > allows reads with workspace:read and refuses writes without workspace:write. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 409
Action input
{
"email": "ada@acme.io"
}
Actual local response
{
"error": {
"code": "duplicate_contact",
"message": "A contact with this email already exists in this workspace.",
"details": {
"contactId": "contact_1"
}
}
}
Source test: audience routes > contacts > returns 409 with the existing id for a duplicate address, archived or not. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 422
Refused input; do not execute
{
"email": "a@b.co",
"workspaceId": "ws_2"
}
Actual local response
{
"error": {
"code": "invalid_action_input",
"message": "Input for contacts.create is invalid.",
"details": [
{
"code": "unrecognized_keys",
"keys": [
"workspaceId"
],
"path": [],
"message": "Unrecognized key: \"workspaceId\""
}
]
}
}
Source test: audience routes > contacts > returns 422 for an invalid email and for input the contract refuses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Captured contacts.create · HTTP 422
Refused input; do not execute
{}
Actual local response
{
"error": {
"code": "invalid_action_input",
"message": "Input for contacts.create is invalid.",
"details": []
}
}
Source test: audience routes > contacts > returns 422 for an invalid email and for input the contract refuses. Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
Error recovery
- HTTP 403
permission_denied: Stop and inspect the permission required by this action in the current credential. Do not broaden permissions or switch organization automatically. - HTTP 422
invalid_action_input: Correct the request against the current input schema and validate it again before planning. - HTTP 503
address_hashing_unconfigured: Stop and report the missing address-hashing configuration to the application operator. This read cannot provision it; do not switch context or modify credentials to bypass the refusal. - HTTP 409
duplicate_contact: Use the returned details.contactId or contacts.resolve for the normalized email in the same workspace, then contacts.get. Compare the existing record before deciding whether any separate edit is needed; never treat a duplicate as a new creation. - HTTP 422
invalid_email: Correct the address according to the email normalization refusal, then validate again. Do not guess a replacement address or silently change the intended recipient.
Related actions
Evidence and limits
-
contracts/audience.mjs -
contracts/audience-filter.mjs -
apps/api/src/audience/audience-routes.ts -
apps/api/src/audience/contacts-handlers.ts -
apps/api/src/audience/contact-search.ts -
apps/api/src/audience/contacts-repository.ts -
apps/api/src/audience/lists-handlers.ts -
apps/api/src/audience/lists-repository.ts -
apps/api/src/audience/filter-source.ts -
apps/api/test/audience-routes.test.ts -
apps/api/test/segments-routes.test.ts -
Actual route handlers with SQLite repositories; synthetic identity/workspace grants and provider ports.
-
Widget/bootstrap use actual app handler but mocked worker runtime and app identity.
-
No gateway execution, live permissions, external delivery or deployed proof.
The examples are local route captures with synthetic context and simulated providers. They do not prove live authorization, CLI/MCP gateway execution, production state or delivery.