# API reference · Startwave

Developers

Exact requests, responses and recovery paths for your Startwave workspace.

Schema 259 231 operations 492 models Workspace API keys

## Your first request

Start with a read of your workspace Lists. You need an existing workspace and an API key with `contacts:read`, created in [Settings → API keys](https://startwave.io/app/#/settings/api-keys). Make the request from your server or terminal with `STARTWAVE_API_KEY` supplied by your environment.

cURL · read active Lists

```
curl --fail-with-body 'https://api.startwave.io/v1/lists?limit=20&state=active&sort=updated_at&order=desc' \
  --header "Authorization: Bearer $STARTWAVE_API_KEY"
```

A successful response contains `items` and `next_cursor`. This illustrative empty result uses the exact [`Page_ListView_`](https://startwave.io/docs/api/#schema-Page_ListView_) shape:

JSON · illustrative empty result

```
{"items": [], "next_cursor": null}
```

Lists are returned in the requested order, most recently updated first. Continue with the returned cursor when present, keeping the same filters. See [GET /v1/lists](https://startwave.io/docs/api/#operation-lists_v1_lists_get) for every parameter and the complete response model.

[Download OpenAPI](https://startwave.io/docs/customer-api.openapi.json) · [Response examples](https://startwave.io/docs/customer-api-examples.json) · [Markdown](https://startwave.io/docs/api.md)

Examples are documentation only. This page never sends API requests. Supplied response examples use synthetic records.

## Authentication

Base URL: `https://api.startwave.io`. Send `Authorization: Bearer <workspace-key>` with each request. A key belongs to one workspace; grant only the scopes listed on the endpoints you use. Keep it out of browser code, URLs and source control.

These are public API-key endpoints. The signed-in customer app uses its separate customer browser contract, sessions and CSRF. Use the contract for the surface you are integrating.

## Pagination & errors

On GET collections that declare a `cursor` query parameter, pass `next_cursor` back exactly as returned, with the same filters and ordering. A filtered page can be empty and still have a next cursor. Stop when the cursor is null or absent; row count does not tell you whether more results remain.

[POST /v1/search](https://startwave.io/docs/api/#operation-search_v1_search_post) continues with a [`SearchNext`](https://startwave.io/docs/api/#schema-SearchNext) JSON body containing `cursor`, the same `data_source` and an optional bounded `size`. It does not take a cursor query parameter or repeat the original search filters; additional body fields are rejected.

[GET /suppressions/export](https://startwave.io/docs/api/#operation-export_suppressions_export_get) returns bounded CSV pages. Pass its `X-Next-Cursor` response header as the `after` query parameter, keeping the same `scope`; an empty header ends traversal. `X-Export-Consistency: live-keyset` identifies a live traversal, not a frozen snapshot. Follow each endpoint’s own continuation contract.

Check the HTTP status before consuming a response. Declared `422` responses link to the validation model. Authentication, authorization, rate limits and operation conflicts can also be reported by the service. Inspect the returned body; do not treat a failure or timeout as a successful write.

Required fields, query limits, allowed values, response headers and response models appear on each endpoint. Open Complete schema  within a model for nested constraints and unions.

## Recovering a write

Persist the operation identity and intent before a write. Where the endpoint requires it, reuse the same `Idempotency-Key` for that intent. If a response is lost, read its documented original or by-key endpoint before deciding what to do next.

A receipt records the original outcome. Current state and background progress are separate reads. An accepted job can still be pending; reading history does not authorize a new purchase, launch or send. Never invent a new identity just to repeat an uncertain effect.

## Campaign sending pool

`sending_pool` is `mailbox` (Mailboxes, the default), `transactional` (Transactional), or `all` (All). Read `GET /capacity/limit` and its `sending_pools` choices before editing. Transactional and All require workspace enrollment; the selection describes authorized capacity and preserves all content and sending safeguards.

With `campaigns:write`, use the current campaign revision and a new operation ID to save the selection through [PATCH /campaigns/{cid}](https://startwave.io/docs/api/#operation-update_campaigns__cid__patch):

JSON body · PATCH /campaigns/your-campaign-id

```
{
  "operation_id": "select-transactional-1",
  "expected_revision": 7,
  "sending_pool": "transactional"
}
```

Saving does not launch the campaign. After a lost response, recover [GET /campaigns/{cid}/saves/{identity}](https://startwave.io/docs/api/#operation-original_campaigns__cid__saves__identity__get) with the same operation ID. A revoked saved choice remains visible; explicitly save Mailboxes to change it.

`POST /campaigns/schedule-advice` accepts `sending_pool` on draft items and as an optional saved-item override. Omission on a saved item uses its current pool. The result echoes the selected pool and binds it in `input_fingerprint`; previewing an unsaved choice does not save it or reserve capacity.

## Integration notes

| Area | Integration detail |
| --- | --- |
| Uploaded company domains | Schema 255 adds immutable, workspace-scoped domain sets. Upload one-column CSV or one domain per line with `POST /v1/search-sets`. Its operation receipt returns `resource_id`; read `GET /v1/search-sets/{resource_id}` for the metadata. Use that metadata’s `id` and `digest` in `SearchQuery.domain_sets.include` or `exclude`. These are Search filters, not sending opt-outs. The catalogue advertises availability and limits. |
| Exact filter behavior | Domains or website URLs only; email addresses are rejected. Values within one set are ORed, inclusion is ANDed with the other Search filters, and exclusion wins overlaps. A stale, archived or incompatible reference fails closed. Detail reads return metadata and a bounded sample, never the full values or raw upload. |
| Browser-session verification | Agent and Notification verification belong to the separate customer browser contract, not the API-key endpoints below. They submit an attempt `id` with `code` and recover through the corresponding attempt GET. Never persist codes or their hashes. A receipt snapshot records the outcome, not current destination authority. |
| Calendar | Use `item_id` for row identity. Keep `event` for the accepted original-message lookup. Calendar and estimated sending-outlook reads can return `503` with `Retry-After: 1`. Inspect `detail.code`: `projection_reads_busy`, `projection_reads_unavailable`, `projection_read_deadline` or `storage_schema_unavailable`. Keep unavailable separate from zero capacity. Refreshing a read never authorizes replaying a write. |
| Daily analytics | Validate the returned campaign, interval and timezone against the requested scope before presenting a report. |
| Replies | Human replies admit literal plain text. Nonempty HTML and outgoing attachments are not supported. |

## Current availability

The supplied release notes identify Native 6.0.43 / schema 259 in TEST. Registration is closed, Stripe is TEST and automatic replies are Off. Uploaded company-domain filters are available when advertised by the selected dataset. Search Agent is a homepage-only preview, not an app feature or execution API. Outgoing attachments, leaderboards, exact analytics drilldowns, new entitlement summaries, atomic List Move and drag-to-reschedule remain deferred.

Read the [Guide](https://startwave.io/guide/) for the workflow and vocabulary before choosing an integration.

## Endpoints

231 operations

### Accounts9 operations

GET `/v1/accounts`Companies

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `state`Optional query  | `"active" \| "archived"` Default: `"active"`  |
| `name_prefix`Optional query  | `string` Default: `""` · Max length: `200`  |
| `sort`Optional query  | `"id" \| "name" \| "updated_at"` Default: `"id"`  |
| `order`Optional query  | `"asc" \| "desc"` Default: `"asc"`  |
| `ownership`Optional query  | `"all" \| "net_new" \| "saved"` Default: `"all"`  |
| `list_id`Optional query  | `string` \| `null` |
| `data_access`Optional query  | `"licensed"` \| `null` Only records with a selected licensed snapshot in this workspace; email availability is irrelevant. |
| `source_freshness`Optional query  | `"current" \| "update_available" \| "unavailable"` \| `null` |
| `q`Optional query  | `string` Literal Unicode-folded substring over permitted saved or selected owned fields. Examines at most 1000 indexed candidates; follow next_cursor even on empty pages. Default: `""` · Max length: `200`  |
| `COMPANY_DOMAIN`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Page_CompanyView_`](https://startwave.io/docs/api/#schema-Page_CompanyView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-companies_v1_accounts_get)

POST `/v1/accounts`Create Company

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`CompanyData`](https://startwave.io/docs/api/#schema-CompanyData)

| Field | Type and constraints |
| --- | --- |
| `COMPANY_ID`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_company_v1_accounts_post)

POST `/v1/accounts/from-search`Save Company

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SaveCompanySource`](https://startwave.io/docs/api/#schema-SaveCompanySource)

| Field | Type and constraints |
| --- | --- |
| `COMPANY_ID`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `target`Optional  | [`SourceTarget`](https://startwave.io/docs/api/#schema-SourceTarget) \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-save_company_v1_accounts_from_search_post)

POST `/v1/accounts/lookup`Lookup Companies

Required scopes: `contacts:read`

#### Request body Required

application/json

[`RecordLookup`](https://startwave.io/docs/api/#schema-RecordLookup)

| Field | Type and constraints |
| --- | --- |
| `ids`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `id_type`Optional  | `"source" \| "record"` Default: `"record"`  |

#### Responses

`200` Successful Response

application/json

[`LookupResult_CompanyView_`](https://startwave.io/docs/api/#schema-LookupResult_CompanyView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-lookup_companies_v1_accounts_lookup_post)

GET `/v1/accounts/{identity}`Company

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `id_type`Optional query  | `"source" \| "record"` Default: `"record"`  |

#### Responses

`200` Successful Response

application/json

[`CompanyView`](https://startwave.io/docs/api/#schema-CompanyView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-company_v1_accounts__identity__get)

PATCH `/v1/accounts/{identity}`Edit Company

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`CompanyEdit`](https://startwave.io/docs/api/#schema-CompanyEdit)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `COMPANY_ID`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `remove_overrides`Optional  | array of `"COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_LOGO_URL"` Remove selected provided overrides and use the selected owned snapshot values. Requires a catalogue-backed licensed record; omission preserves overrides, null still masks a value. No purchase or source refresh. Min items: `1` · Max items: `64`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-edit_company_v1_accounts__identity__patch)

POST `/v1/accounts/{identity}/preview-refreshes`Refresh Company

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`PreviewRefresh`](https://startwave.io/docs/api/#schema-PreviewRefresh)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `expected_check_revision`Required  | `integer` |
| `version_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `reset_overrides`Optional  | array of `"FIRST_NAME" \| "LAST_NAME" \| "MIDDLE_NAME" \| "JOB_TITLE" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT" \| "COMPANY_ID" \| "COMPANY_LOGO_URL" \| "UUID" \| "PHOTO_URL"` Max items: `64`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-refresh_company_v1_accounts__identity__preview_refreshes_post)

GET `/v1/accounts/{identity}/source-checks`Company History

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`SourceCheckHistory`](https://startwave.io/docs/api/#schema-SourceCheckHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-company_history_v1_accounts__identity__source_checks_get)

POST `/v1/accounts/{identity}/source-checks`Check Company

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SourceCheck`](https://startwave.io/docs/api/#schema-SourceCheck)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `expected_check_revision`Required  | `integer` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-check_company_v1_accounts__identity__source_checks_post)

### Analytics3 operations

GET `/analytics/delivery`Delivery Analytics

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `start`Optional query  | `number` \| `null` |
| `end`Optional query  | `number` \| `null` |
| `campaign_id`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`DeliverySummary`](https://startwave.io/docs/api/#schema-DeliverySummary)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-delivery_analytics_analytics_delivery_get)

GET `/analytics/delivery-days`Daily Delivery Analytics

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `start`Required query  | `number` |
| `end`Required query  | `number` |
| `timezone`Optional query  | `string` Default: `""` · Max length: `128`  |
| `campaign_id`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`DailyDeliveryDays`](https://startwave.io/docs/api/#schema-DailyDeliveryDays)

`409` Invalid cohort window/timezone or unavailable campaign; inspect detail.code

application/json

[`ProjectionConflict`](https://startwave.io/docs/api/#schema-ProjectionConflict)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-daily_delivery_analytics_analytics_delivery_days_get)

GET `/analytics/verification`Verification Analytics

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `start`Optional query  | `number` \| `null` |
| `end`Optional query  | `number` \| `null` |

#### Responses

`200` Successful Response

application/json

[`VerificationCohorts`](https://startwave.io/docs/api/#schema-VerificationCohorts)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-verification_analytics_analytics_verification_get)

### Billing30 operations

POST `/billing/card-setups`Setup

Required scopes: `spending:write`

#### Request body Required

application/json

[`CardRequest`](https://startwave.io/docs/api/#schema-CardRequest)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |

#### Responses

`200` Successful Response

application/json

[`CardSetupResult`](https://startwave.io/docs/api/#schema-CardSetupResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-setup_billing_card_setups_post)

POST `/billing/card-setups/{identity}/complete`Complete

Required scopes: `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CardChangeResult`](https://startwave.io/docs/api/#schema-CardChangeResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-complete_billing_card_setups__identity__complete_post)

GET `/billing/cards`Cards

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`SavedCards`](https://startwave.io/docs/api/#schema-SavedCards)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cards_billing_cards_get)

POST `/billing/cards/{method}/remove`Remove

Required scopes: `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `method`Required path  | `string` |

#### Request body Required

application/json

[`CardRequest`](https://startwave.io/docs/api/#schema-CardRequest)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |

#### Responses

`200` Successful Response

application/json

[`CardChangeResult`](https://startwave.io/docs/api/#schema-CardChangeResult) | [`CardRemovalRejected`](https://startwave.io/docs/api/#schema-CardRemovalRejected)

##### Original removal rejected before any effect; select another primary separately

Supplied JSON example

```
{
  "id": "example-remove-required",
  "method": "pm_exampleRequired",
  "revision": 7,
  "completed": false,
  "outcome": "rejected_no_effect",
  "reason": "subscription_replace_default_card_first",
  "replayed": false
}
```

##### Same original remains rejected; replay does not attempt detachment

Supplied JSON example

```
{
  "id": "example-remove-required",
  "method": "pm_exampleRequired",
  "revision": 7,
  "completed": false,
  "outcome": "rejected_no_effect",
  "reason": "subscription_replace_default_card_first",
  "replayed": true
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-remove_billing_cards__method__remove_post)

GET `/billing/history`Customer History

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `start`Required query  | `number` |
| `end`Required query  | `number` |
| `before`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `kind`Optional query  | `string` \| `null` |
| `campaign`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`BillingHistoryPage`](https://startwave.io/docs/api/#schema-BillingHistoryPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-customer_history_billing_history_get)

PATCH `/billing/preferences`Preferences

Required scopes: `spending:write`

#### Request body Required

application/json

[`DefaultCard`](https://startwave.io/docs/api/#schema-DefaultCard)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `method`Required  | `string` Max length: `128` · Pattern: `"^pm_[A-Za-z0-9]+$"`  |

#### Responses

`200` Successful Response

application/json

[`CardChangeResult`](https://startwave.io/docs/api/#schema-CardChangeResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-preferences_billing_preferences_patch)

GET `/billing/subscription`Status

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `changes_after`Optional query  | `string` Default: `""` · Max length: `128`  |
| `invoices_after`Optional query  | `string` Default: `""` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`SubscriptionSnapshot`](https://startwave.io/docs/api/#schema-SubscriptionSnapshot)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_billing_subscription_get)

POST `/billing/subscription/changes`Review

Required scopes: `spending:write`

#### Request body Required

application/json

[`Review`](https://startwave.io/docs/api/#schema-Review)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `daily_sends`Required  | `integer` Minimum: `0.0` · Maximum: `900.0`  |
| `provisioning_policy`Optional  | `"inboxkit-provisioning-v1"` \| `null` |

#### Responses

`200` Successful Response

application/json

[`SubscriptionChange`](https://startwave.io/docs/api/#schema-SubscriptionChange)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-review_billing_subscription_changes_post)

GET `/billing/subscription/changes/{identity}`Change

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`SubscriptionChangeStatus`](https://startwave.io/docs/api/#schema-SubscriptionChangeStatus)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-change_billing_subscription_changes__identity__get)

POST `/billing/subscription/changes/{identity}/cancel`Cancel

Required scopes: `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`SubscriptionSnapshot`](https://startwave.io/docs/api/#schema-SubscriptionSnapshot)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_billing_subscription_changes__identity__cancel_post)

POST `/billing/subscription/changes/{identity}/confirm`Confirm

Required scopes: `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`Confirmation`](https://startwave.io/docs/api/#schema-Confirmation)

| Field | Type and constraints |
| --- | --- |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `maximum_cents`Required  | `integer` Minimum: `0.0`  |
| `policy`Required  | `string` Max length: `64`  |
| `provisioning_policy`Optional  | `"inboxkit-provisioning-v1"` \| `null` |

#### Responses

`200` Successful Response

application/json

[`SubscriptionConfirmation`](https://startwave.io/docs/api/#schema-SubscriptionConfirmation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_billing_subscription_changes__identity__confirm_post)

POST `/billing/subscription/changes/{identity}/recover`Recover

Required scopes: `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`Recovery`](https://startwave.io/docs/api/#schema-Recovery)

| Field | Type and constraints |
| --- | --- |
| `maximum_cents`Required  | `integer` Minimum: `0.0`  |

#### Responses

`200` Successful Response

application/json

[`SubscriptionRecovery`](https://startwave.io/docs/api/#schema-SubscriptionRecovery)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-recover_billing_subscription_changes__identity__recover_post)

GET `/billing/top-ups`Top Ups

Required scopes: `usage:read`

Historical sending-wallet funding, not subscription capacity or metered data funds. New authority is disabled after subscription cutover; retain original read/cancel recovery. Use /billing/subscription for capacity and /v1/billing/data-fundings for metered data.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`LegacyFundingHistory`](https://startwave.io/docs/api/#schema-LegacyFundingHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-top_ups_billing_top_ups_get)

GET `/billing/top-ups/{identity}`Top Up Status

Required scopes: `usage:read`

Historical sending-wallet funding, not subscription capacity or metered data funds. New authority is disabled after subscription cutover; retain original read/cancel recovery. Use /billing/subscription for capacity and /v1/billing/data-fundings for metered data.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`LegacyFundingResult`](https://startwave.io/docs/api/#schema-LegacyFundingResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-top_up_status_billing_top_ups__identity__get)

POST `/billing/top-ups/{identity}/cancel`Cancel Top Up

Required scopes: `spending:write`

Historical sending-wallet funding, not subscription capacity or metered data funds. New authority is disabled after subscription cutover; retain original read/cancel recovery. Use /billing/subscription for capacity and /v1/billing/data-fundings for metered data.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`LegacyFundingResult`](https://startwave.io/docs/api/#schema-LegacyFundingResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_top_up_billing_top_ups__identity__cancel_post)

POST `/billing/top-ups/{identity}/confirm`Confirm Top Up

Required scopes: `spending:write`

Historical sending-wallet funding, not subscription capacity or metered data funds. New authority is disabled after subscription cutover; retain original read/cancel recovery. Use /billing/subscription for capacity and /v1/billing/data-fundings for metered data.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`LegacyFundingResult`](https://startwave.io/docs/api/#schema-LegacyFundingResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_top_up_billing_top_ups__identity__confirm_post)

GET `/billing/verification-usage`Customer Verification Usage

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `start`Required query  | `number` |
| `end`Required query  | `number` |
| `campaign`Optional query  | `string` \| `null` |
| `before`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`VerificationUsagePage`](https://startwave.io/docs/api/#schema-VerificationUsagePage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-customer_verification_usage_billing_verification_usage_get)

GET `/v1/billing/data-autopay`Get

Required scopes: `billing:read`

#### Responses

`200` Successful Response

application/json

[`MandateView`](https://startwave.io/docs/api/#schema-MandateView)

[Link to this endpoint](https://startwave.io/docs/api/#operation-get_v1_billing_data_autopay_get)

PATCH `/v1/billing/data-autopay`Update

Required scopes: `billing:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`MandateChange`](https://startwave.io/docs/api/#schema-MandateChange)

| Field | Type and constraints |
| --- | --- |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `enabled`Required  | `boolean` |
| `policy_id`Required  | `"data-autopay-test-v1" \| "data-autopay-live-v1"` |
| `billing_revision`Required  | `integer` Minimum: `0.0`  |
| `low_water_minor`Required  | `integer` Minimum: `0.0` · Maximum: `100000.0`  |
| `refill_minor`Required  | `integer` Minimum: `500.0` · Maximum: `100000.0`  |
| `max_charge_minor`Required  | `integer` Minimum: `500.0` · Maximum: `100000.0`  |
| `max_month_minor`Required  | `integer` Minimum: `500.0` · Maximum: `10000000.0`  |
| `expires_at`Optional  | `number` \| `null` |

#### Responses

`200` Successful Response

application/json

[`MandateView`](https://startwave.io/docs/api/#schema-MandateView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-update_v1_billing_data_autopay_patch)

GET `/v1/billing/data-balance`Balance

Required scopes: `billing:read`

#### Responses

`200` Successful Response

application/json

[`DataBalance`](https://startwave.io/docs/api/#schema-DataBalance)

##### Only available money is spendable; adding a verified card earns the separate bonus without enabling top-up

Supplied JSON example

```
{
  "currency": "usd",
  "available_minor": 500,
  "promotional_minor": 500,
  "debt_minor": 0,
  "purchase_blocked": false,
  "signup_bonus": {
    "card_bonus_minor": 500,
    "card_bonus_state": "pending"
  }
}
```

[Link to this endpoint](https://startwave.io/docs/api/#operation-balance_v1_billing_data_balance_get)

POST `/v1/billing/data-funding-reviews`Review

Required scopes: `billing:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`FundingAmount`](https://startwave.io/docs/api/#schema-FundingAmount)

| Field | Type and constraints |
| --- | --- |
| `amount_minor`Required  | `integer` Minimum: `500.0` · Maximum: `100000.0`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `billing_revision`Required  | `integer` Minimum: `0.0`  |

#### Responses

`200` Successful Response

application/json

[`FundingReview`](https://startwave.io/docs/api/#schema-FundingReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-review_v1_billing_data_funding_reviews_post)

GET `/v1/billing/data-funding-reviews/by-key`Review By Key

Required scopes: `billing:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`FundingReview`](https://startwave.io/docs/api/#schema-FundingReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-review_by_key_v1_billing_data_funding_reviews_by_key_get)

GET `/v1/billing/data-funding-reviews/{identity}`Review Original

Required scopes: `billing:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`FundingReview`](https://startwave.io/docs/api/#schema-FundingReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-review_original_v1_billing_data_funding_reviews__identity__get)

GET `/v1/billing/data-fundings`History

Required scopes: `billing:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `32`  |

#### Responses

`200` Successful Response

application/json

[`FundingHistory`](https://startwave.io/docs/api/#schema-FundingHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_v1_billing_data_fundings_get)

POST `/v1/billing/data-fundings`Confirm

Required scopes: `billing:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`FundingConfirmation`](https://startwave.io/docs/api/#schema-FundingConfirmation)

| Field | Type and constraints |
| --- | --- |
| `review_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |

#### Responses

`200` Successful Response

application/json

[`FundingView`](https://startwave.io/docs/api/#schema-FundingView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_v1_billing_data_fundings_post)

GET `/v1/billing/data-fundings/by-key`By Key

Required scopes: `billing:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`FundingView`](https://startwave.io/docs/api/#schema-FundingView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_v1_billing_data_fundings_by_key_get)

GET `/v1/billing/data-fundings/{identity}`Original

Required scopes: `billing:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`FundingView`](https://startwave.io/docs/api/#schema-FundingView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_billing_data_fundings__identity__get)

POST `/v1/billing/data-fundings/{identity}/cancel`Cancel

Required scopes: `billing:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`FundingView`](https://startwave.io/docs/api/#schema-FundingView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_v1_billing_data_fundings__identity__cancel_post)

POST `/v1/billing/data-fundings/{identity}/confirm`Confirmation

Required scopes: `billing:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Request body Required

application/json

[`FundingConfirmation`](https://startwave.io/docs/api/#schema-FundingConfirmation)

| Field | Type and constraints |
| --- | --- |
| `review_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |

#### Responses

`200` Successful Response

application/json

[`FundingView`](https://startwave.io/docs/api/#schema-FundingView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirmation_v1_billing_data_fundings__identity__confirm_post)

GET `/v1/billing/data-usage`Usage

Required scopes: `billing:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`DataUsage`](https://startwave.io/docs/api/#schema-DataUsage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-usage_v1_billing_data_usage_get)

### Campaign copy policy1 operations

GET `/campaign-copy-policy`Copy Policy

Required scopes: `campaigns:read`

#### Responses

`200` Successful Response

application/json

[`CopyPolicy`](https://startwave.io/docs/api/#schema-CopyPolicy)

[Link to this endpoint](https://startwave.io/docs/api/#operation-copy_policy_campaign_copy_policy_get)

### Campaign copy preview1 operations

POST `/campaign-copy-preview`Copy Preview

Required scopes: `campaigns:write`

#### Request body Required

application/json

[`CopyPreviewIn`](https://startwave.io/docs/api/#schema-CopyPreviewIn)

| Field | Type and constraints |
| --- | --- |
| `template_format`Optional  | `integer` Default: `1` · Minimum: `1.0` · Maximum: `2.0`  |
| `campaign`Required  | `string` Min length: `1` · Max length: `128`  |
| `recipient`Required  | `string` Min length: `1` · Max length: `320`  |
| `fields`Optional  | `object` |
| `subject`Optional  | `string` \| `null` |
| `body`Required  | `string` Min length: `1` · Max length: `100000`  |
| `step`Required  | `integer` Minimum: `0.0`  |
| `variation`Required  | `integer` Minimum: `0.0` · Maximum: `999999.0`  |
| `sender_mailbox`Optional  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`CopyPreview`](https://startwave.io/docs/api/#schema-CopyPreview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-copy_preview_campaign_copy_preview_post)

### Campaigns50 operations

GET `/campaigns`Campaigns

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `4096`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `1000`  |
| `archive`Optional query  | `"current" \| "archived" \| "all"` Default: `"current"`  |
| `name_prefix`Optional query  | `string` Literal ASCII-case-insensitive prefix. A nonempty prefix orders by normalized name then ID ascending; otherwise newest first. Default: `""` · Max length: `200`  |
| `state`Optional query  | `"draft" \| "active" \| "paused" \| "complete"` \| `null` Filter by current Campaign state. |

#### Responses

`200` Successful Response

application/json

[`CampaignListPage`](https://startwave.io/docs/api/#schema-CampaignListPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-campaigns_campaigns_get)

POST `/campaigns`Create

Required scopes: `campaigns:write`

#### Request body Required

application/json

[`CampaignIn`](https://startwave.io/docs/api/#schema-CampaignIn)

| Field | Type and constraints |
| --- | --- |
| `list_ids`Optional  | array of `string` Max items: `50`  |
| `operation_id`Optional  | `string` \| `null` |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `offer`Optional  | `string` Default: `""` · Max length: `10000`  |
| `audience_prompt`Optional  | `string` Default: `""` · Max length: `10000`  |
| `steps`Required  | array of [`Step`](https://startwave.io/docs/api/#schema-Step) Min items: `1` · Max items: `10`  |
| `schedule`Optional  | [`Window`](https://startwave.io/docs/api/#schema-Window) |
| `daily_limit`Optional  | `integer` Finite campaign outbound sends per local sending day. Zero means unallocated: no new outbound sends or automatic preparation. The selected sending pool, shared capacity and current safeguards still apply. Default: `0` · Minimum: `0.0` · Maximum: `15000.0`  |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` Authorized sending capacity: mailbox by default, transactional or all only with an admin grant. Does not classify message content. Default: `"mailbox"`  |
| `allow_catch_all`Optional  | `boolean` Default: `false`  |
| `template_format`Optional  | `integer` Default: `1` · Minimum: `1.0` · Maximum: `2.0`  |
| `name_cleaning`Optional  | [`NameMapping`](https://startwave.io/docs/api/#schema-NameMapping) \| `null` |
| `import_digest`Optional  | `string` Default: `""` · Pattern: `"^(?:[0-9a-f]{64})?$"`  |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `contacts`Optional  | array of [`Contact`](https://startwave.io/docs/api/#schema-Contact) Max items: `1000`  |
| `expected_contacts`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `100000.0`  |

#### Responses

`200` With operation_id: immutable Result, identical to the draft-operation original. Without it: CampaignCreated stored row; no keyed recovery.

application/json

[`Result`](https://startwave.io/docs/api/#schema-Result) | [`CampaignCreated`](https://startwave.io/docs/api/#schema-CampaignCreated)

##### Synthetic empty draft created with operation_id=create-empty. No contact, charge or send. After response loss, GET the original; an exact keyed replay returns this same receipt.

Supplied JSON example

```
{
  "operation": {
    "id": "create-empty",
    "workspace": "workspace",
    "campaign": "empty-draft",
    "action": "create",
    "request_digest": "48a409ab38799ab2dd66fc587789befc87153409b62f0029f32e6224e74928e5",
    "actor": "service:1074c3d56ba74f8c5bc2e4d260925e5fc9ec104cc000848b66289d0897c4942a",
    "expected_revision": null,
    "before_revision": null,
    "after_revision": 1,
    "outcome": "recorded",
    "state_after": "draft",
    "counts": {
      "contacts": 0,
      "added": 0,
      "excluded": 0
    },
    "recorded_at": 1791763200
  }
}
```

`409` Conflict

application/json

[`CampaignConflict`](https://startwave.io/docs/api/#schema-CampaignConflict)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_campaigns_post)

PATCH `/campaigns/allocations`Update

Required scopes: `campaigns:write` `spending:write`

#### Request body Required

application/json

[`AllocationApply`](https://startwave.io/docs/api/#schema-AllocationApply)

| Field | Type and constraints |
| --- | --- |
| `operation_id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[A-Za-z0-9][A-Za-z0-9._~-]*$"`  |
| `configuration`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `changes`Required  | array of [`AllocationChange`](https://startwave.io/docs/api/#schema-AllocationChange) Min items: `1` · Max items: `100`  |

#### Responses

`200` Successful Response

application/json

[`AllocationResult`](https://startwave.io/docs/api/#schema-AllocationResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-update_campaigns_allocations_patch)

POST `/campaigns/allocations/preview`Inspect

Required scopes: `campaigns:read`

#### Request body Required

application/json

[`AllocationPreviewIn`](https://startwave.io/docs/api/#schema-AllocationPreviewIn)

| Field | Type and constraints |
| --- | --- |
| `timezone`Optional  | `string` Default: `"UTC"` · Max length: `128`  |
| `changes`Optional  | array of [`AllocationChange`](https://startwave.io/docs/api/#schema-AllocationChange) Max items: `100`  |

#### Responses

`200` Successful Response

application/json

[`AllocationPreview`](https://startwave.io/docs/api/#schema-AllocationPreview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inspect_campaigns_allocations_preview_post)

GET `/campaigns/allocations/{operation_id}`Original

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `operation_id`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`AllocationResult`](https://startwave.io/docs/api/#schema-AllocationResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_campaigns_allocations__operation_id__get)

POST `/campaigns/schedule-advice`Read

Required scopes: `campaigns:read`

#### Request body Required

application/json

[`ScheduleAdviceRequest`](https://startwave.io/docs/api/#schema-ScheduleAdviceRequest)

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ScheduleAdviceDraft`](https://startwave.io/docs/api/#schema-ScheduleAdviceDraft) \| [`ScheduleAdviceSaved`](https://startwave.io/docs/api/#schema-ScheduleAdviceSaved) Min items: `1` · Max items: `50`  |

#### Responses

`200` Successful Response

application/json

[`ScheduleAdviceResponse`](https://startwave.io/docs/api/#schema-ScheduleAdviceResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_campaigns_schedule_advice_post)

GET `/campaigns/{cid}`Campaign

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `1000`  |

#### Responses

`200` Successful Response

application/json

[`CampaignDetail`](https://startwave.io/docs/api/#schema-CampaignDetail)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-campaign_campaigns__cid__get)

PATCH `/campaigns/{cid}`Update

Required scopes: `campaigns:write`

Conditional scopes

`sources` requires `contacts:read`.

`published_behavior` requires `spending:write`.

Atomically save changed fields; published behavior also requires owner and spending:write.

Omission preserves values. Only name_cleaning accepts null (clear). Steps, schedule and
recipient field maps replace their respective values. Source selection additionally
requires contacts:read. Published behavior includes copy, schedule, policy, recipients
and source selection. Retained steps keep their IDs; new follow-ups omit id. Array
order defines the current sequence. Omit a follow-up to remove future mutable work;
accepted and uncertain originals remain. Step zero stays first. Recent finished people
join new follow-ups only while the new wait is still prospective (at most 30 days since
their last accepted touch); completed campaigns still require explicit Resume.
Save never launches or buys. Later saves coalesce propagation without erasing originals.
Recover the exact original operation_id after a lost response; do not mint another ID.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Request body Required

application/json

[`CampaignSave`](https://startwave.io/docs/api/#schema-CampaignSave)

| Field | Type and constraints |
| --- | --- |
| `operation_id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[A-Za-z0-9][A-Za-z0-9._~-]*$"`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `name`Optional  | `string` \| `null` |
| `offer`Optional  | `string` \| `null` |
| `audience_prompt`Optional  | `string` \| `null` |
| `steps`Optional  | array of [`Step`](https://startwave.io/docs/api/#schema-Step) \| `null` |
| `schedule`Optional  | [`Window`](https://startwave.io/docs/api/#schema-Window) \| `null` |
| `daily_limit`Optional  | `integer` \| `null` Finite daily allocation; zero stops new campaign outbound work without cancelling queued originals. Omission preserves the current allocation; null is invalid. |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` \| `null` |
| `allow_catch_all`Optional  | `boolean` \| `null` |
| `template_format`Optional  | `integer` \| `null` |
| `name_cleaning`Optional  | [`NameMapping`](https://startwave.io/docs/api/#schema-NameMapping) \| `null` |
| `recipients`Optional  | array of [`RecipientFields`](https://startwave.io/docs/api/#schema-RecipientFields) Max items: `25`  |
| `sources`Optional  | [`SourceSelection`](https://startwave.io/docs/api/#schema-SourceSelection) \| `null` |

#### Responses

`200` Successful Response

application/json

[`SaveResult`](https://startwave.io/docs/api/#schema-SaveResult)

`409` Conflict

application/json

[`CampaignConflict`](https://startwave.io/docs/api/#schema-CampaignConflict)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-update_campaigns__cid__patch)

GET `/campaigns/{cid}/audience`Audience

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `1000`  |
| `refill`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`CampaignAudiencePage`](https://startwave.io/docs/api/#schema-CampaignAudiencePage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-audience_campaigns__cid__audience_get)

POST `/campaigns/{cid}/contacts`Append Contacts

Required scopes: `audiences:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Request body Required

application/json

[`ContactsIn`](https://startwave.io/docs/api/#schema-ContactsIn)

| Field | Type and constraints |
| --- | --- |
| `operation_id`Optional  | `string` \| `null` |
| `contacts`Required  | array of [`Contact`](https://startwave.io/docs/api/#schema-Contact) Min items: `1` · Max items: `1000`  |
| `expected_revision`Optional  | `integer` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Result`](https://startwave.io/docs/api/#schema-Result) | [`AppendCounts`](https://startwave.io/docs/api/#schema-AppendCounts)

##### Synthetic keyed append. Recover this same receipt through draft-operations before replay; current contact totals are not this original.

Supplied JSON example

```
{
  "operation": {
    "id": "append-original",
    "workspace": "workspace",
    "campaign": "campaign",
    "action": "append",
    "request_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "actor": "service:example",
    "expected_revision": 1,
    "before_revision": 1,
    "after_revision": 2,
    "outcome": "recorded",
    "state_after": "draft",
    "counts": {
      "contacts": 2,
      "added": 1,
      "excluded": 0
    },
    "recorded_at": 1791763200
  }
}
```

##### Unkeyed append has counts, not an original operation. New clients should use operation_id.

Supplied JSON example

```
{
  "added": 1,
  "contacts": 2,
  "revision": 2
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-append_contacts_campaigns__cid__contacts_post)

GET `/campaigns/{cid}/copy-changes/{identity}`Inspect

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CopyChangeReceipt`](https://startwave.io/docs/api/#schema-CopyChangeReceipt)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inspect_campaigns__cid__copy_changes__identity__get)

GET `/campaigns/{cid}/draft-operations/{identity}`Original

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`Result`](https://startwave.io/docs/api/#schema-Result)

##### GET /campaigns/empty-draft/draft-operations/create-empty after lost Create response. Matches the original POST receipt, not current Campaign state. Missing original stays unknown; do not generate another operation ID.

Supplied JSON example

```
{
  "operation": {
    "id": "create-empty",
    "workspace": "workspace",
    "campaign": "empty-draft",
    "action": "create",
    "request_digest": "48a409ab38799ab2dd66fc587789befc87153409b62f0029f32e6224e74928e5",
    "actor": "service:1074c3d56ba74f8c5bc2e4d260925e5fc9ec104cc000848b66289d0897c4942a",
    "expected_revision": null,
    "before_revision": null,
    "after_revision": 1,
    "outcome": "recorded",
    "state_after": "draft",
    "counts": {
      "contacts": 0,
      "added": 0,
      "excluded": 0
    },
    "recorded_at": 1791763200
  }
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_campaigns__cid__draft_operations__identity__get)

GET `/campaigns/{cid}/eligibility`Campaign Eligibility

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `limit`Optional query  | `integer` Default: `100000` · Minimum: `1` · Maximum: `100000`  |

#### Responses

`200` Successful Response

application/json

[`CampaignEligibilityBreakdown`](https://startwave.io/docs/api/#schema-CampaignEligibilityBreakdown)

##### First-email qualification is not sending capacity or confirmed delivery

Supplied JSON example

```
{
  "observed_at": 1767240000.0,
  "complete": true,
  "inspected": 3,
  "total": 3,
  "counts": {
    "qualified": 1,
    "preparing": 0,
    "waiting": 1,
    "ineligible": 1,
    "contacted": 0,
    "stopped": 0,
    "needs_review": 0
  },
  "reason_counts": {
    "recontact_cooldown": 1,
    "catch_all_not_allowed": 1
  },
  "contacted_total": 0,
  "queued_followups": 0,
  "qualified_upper_bound": 1,
  "recontact_days": 30,
  "semantics": "first_email_qualification_not_send_capacity"
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-campaign_eligibility_campaigns__cid__eligibility_get)

POST `/campaigns/{cid}/launch`Launch Campaign

Required scopes: `campaigns:write` `spending:write`

Conditional scopes

`review.source_intake` requires `contacts:read`, `contacts:write`, `audiences:write`, `data:purchase`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Request body Required

application/json

[`LaunchIn`](https://startwave.io/docs/api/#schema-LaunchIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `review_id`Required  | `string` Min length: `1` · Max length: `128`  |
| `capacity_operation`Required  | `string` Min length: `1` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`LaunchResult`](https://startwave.io/docs/api/#schema-LaunchResult)

##### Synthetic original launch receipt; started is not delivery.

Supplied JSON example

```
{
  "id": "launch-original",
  "campaign": "campaign",
  "state": "started",
  "campaign_revision": 3,
  "capacity_operation": "in_original",
  "send_price_cents": 0,
  "send_budget_cents": 0,
  "commercial_policy_version": "startwave-core-v1",
  "started_at": 1791633600
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-launch_campaign_campaigns__cid__launch_post)

GET `/campaigns/{cid}/launches/{identity}`Launch Receipt

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`LaunchResult`](https://startwave.io/docs/api/#schema-LaunchResult)

##### Recovery returns the same original, not a new launch.

Supplied JSON example

```
{
  "id": "launch-original",
  "campaign": "campaign",
  "state": "started",
  "campaign_revision": 3,
  "capacity_operation": "in_original",
  "send_price_cents": 0,
  "send_budget_cents": 0,
  "commercial_policy_version": "startwave-core-v1",
  "started_at": 1791633600
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-launch_receipt_campaigns__cid__launches__identity__get)

GET `/campaigns/{cid}/materialization`Status

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`MaterializationStatus`](https://startwave.io/docs/api/#schema-MaterializationStatus)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_campaigns__cid__materialization_get)

GET `/campaigns/{cid}/name-quality`Read

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `128`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `200`  |
| `state`Optional query  | `"unchecked" \| "ready" \| "pending" \| "held" \| "unavailable"` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Quality`](https://startwave.io/docs/api/#schema-Quality)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_campaigns__cid__name_quality_get)

GET `/campaigns/{cid}/refills`History

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`RefillHistory`](https://startwave.io/docs/api/#schema-RefillHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_campaigns__cid__refills_get)

GET `/campaigns/{cid}/refills/{identity}`Detail

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `1000`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`RefillResult`](https://startwave.io/docs/api/#schema-RefillResult)

##### Original after response loss; identical to POST, not another append. Invalid row content is absent.

Supplied JSON example

```
{
  "id": "refill-original",
  "campaign": "campaign",
  "added": 1,
  "duplicates": 1,
  "suppressed": 0,
  "conflicting": 0,
  "invalid": 1,
  "submitted": 3,
  "errors": [
    {
      "index": 2,
      "reason": "invalid_email"
    }
  ],
  "next_error_cursor": null,
  "audience_revision": 2,
  "send_budget_added_cents": 0,
  "send_budget_cents": null,
  "actor": "service:example",
  "created_at": 1791763200
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-detail_campaigns__cid__refills__identity__get)

POST `/campaigns/{cid}/reply-budget`Reply Budget

Required scopes: `inbox:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Request body Required

application/json

[`ReplyBudgetIn`](https://startwave.io/docs/api/#schema-ReplyBudgetIn)

Owner-authorized reply-only ceiling; never spends or changes cold campaign allowance.

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_send_price_cents`Required  | `integer` Minimum: `0.0` · Maximum: `1000000.0`  |
| `reply_budget_cents`Required  | `integer` Minimum: `0.0` · Maximum: `1000000000.0`  |

#### Responses

`200` Successful Response

application/json

[`ReplyBudgetOriginal`](https://startwave.io/docs/api/#schema-ReplyBudgetOriginal)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-reply_budget_campaigns__cid__reply_budget_post)

GET `/campaigns/{cid}/reply-budget-reviews`Reply Budget Reviews

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `128`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`ReplyBudgetPage`](https://startwave.io/docs/api/#schema-ReplyBudgetPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-reply_budget_reviews_campaigns__cid__reply_budget_reviews_get)

GET `/campaigns/{cid}/saves/{identity}`Original

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`SaveResult`](https://startwave.io/docs/api/#schema-SaveResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_campaigns__cid__saves__identity__get)

GET `/campaigns/{cid}/schedule-changes/{identity}`Inspect

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`ScheduleChangeReceipt`](https://startwave.io/docs/api/#schema-ScheduleChangeReceipt)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inspect_campaigns__cid__schedule_changes__identity__get)

GET `/campaigns/{cid}/send-events/{event}`Inspect Event

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `event`Required path  | `integer` |

#### Responses

`200` Successful Response

application/json

[`RecordedSend`](https://startwave.io/docs/api/#schema-RecordedSend)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inspect_event_campaigns__cid__send_events__event__get)

GET `/campaigns/{cid}/send-plan/{identity}`Inspect

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`SendDetail`](https://startwave.io/docs/api/#schema-SendDetail)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inspect_campaigns__cid__send_plan__identity__get)

GET `/campaigns/{cid}/send-readiness`Readiness

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `4096`  |
| `limit`Optional query  | `integer` Default: `25` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`ReadinessPage`](https://startwave.io/docs/api/#schema-ReadinessPage)

`409` Invalid or expired readiness cursor, or unavailable campaign; inspect detail.code

application/json

[`ProjectionConflict`](https://startwave.io/docs/api/#schema-ProjectionConflict)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-readiness_campaigns__cid__send_readiness_get)

GET `/campaigns/{cid}/source-admission-reviews/by-key`Review By Key

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`AdmissionReview`](https://startwave.io/docs/api/#schema-AdmissionReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-review_by_key_campaigns__cid__source_admission_reviews_by_key_get)

GET `/campaigns/{cid}/source-admission-reviews/{identity}`Review Original

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`AdmissionReview`](https://startwave.io/docs/api/#schema-AdmissionReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-review_original_campaigns__cid__source_admission_reviews__identity__get)

GET `/campaigns/{cid}/source-admissions`History

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `20` · Minimum: `1` · Maximum: `50`  |

#### Responses

`200` Successful Response

application/json

[`AdmissionHistoryPage`](https://startwave.io/docs/api/#schema-AdmissionHistoryPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_campaigns__cid__source_admissions_get)

POST `/campaigns/{cid}/source-admissions`Confirm

Required scopes: `audiences:write` `spending:write` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`AdmissionConfirmIn`](https://startwave.io/docs/api/#schema-AdmissionConfirmIn)

| Field | Type and constraints |
| --- | --- |
| `review_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`AdmissionResult`](https://startwave.io/docs/api/#schema-AdmissionResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_campaigns__cid__source_admissions_post)

GET `/campaigns/{cid}/source-admissions/by-key`Result By Key

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`AdmissionResult`](https://startwave.io/docs/api/#schema-AdmissionResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-result_by_key_campaigns__cid__source_admissions_by_key_get)

GET `/campaigns/{cid}/source-admissions/{identity}`Result Original

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`AdmissionResult`](https://startwave.io/docs/api/#schema-AdmissionResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-result_original_campaigns__cid__source_admissions__identity__get)

GET `/campaigns/{cid}/source-operations/by-key`By Key

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`SourceOperation`](https://startwave.io/docs/api/#schema-SourceOperation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_campaigns__cid__source_operations_by_key_get)

GET `/campaigns/{cid}/source-operations/{identity}`Original

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`SourceOperation`](https://startwave.io/docs/api/#schema-SourceOperation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_campaigns__cid__source_operations__identity__get)

GET `/campaigns/{cid}/source-refills`History

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `after`Optional query  | `string` Default: `""`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`RefillPage`](https://startwave.io/docs/api/#schema-RefillPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_campaigns__cid__source_refills_get)

POST `/campaigns/{cid}/source-refills`Create

Required scopes: `campaigns:write` `spending:write` `audiences:write` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`RefillConsentIn`](https://startwave.io/docs/api/#schema-RefillConsentIn)

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `source_ids`Required  | array of `string` Min items: `1` · Max items: `50`  |
| `max_people`Required  | `integer` Minimum: `1.0` · Maximum: `1000000.0`  |
| `max_memberships`Required  | `integer` Minimum: `1.0` · Maximum: `50000000.0`  |
| `expires_at`Required  | `number` |
| `max_send_budget_added_cents`Required  | `integer` Minimum: `0.0` · Maximum: `1000000000.0`  |
| `included_preparation`Optional  | [`IncludedPreparationTerms`](https://startwave.io/docs/api/#schema-IncludedPreparationTerms) \| `null` |

#### Responses

`200` Successful Response

application/json

[`RefillConsent`](https://startwave.io/docs/api/#schema-RefillConsent)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_campaigns__cid__source_refills_post)

GET `/campaigns/{cid}/source-refills/by-key`Original

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`RefillConsent`](https://startwave.io/docs/api/#schema-RefillConsent)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_campaigns__cid__source_refills_by_key_get)

GET `/campaigns/{cid}/source-refills/{identity}`Status

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`RefillConsent`](https://startwave.io/docs/api/#schema-RefillConsent)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_campaigns__cid__source_refills__identity__get)

POST `/campaigns/{cid}/source-refills/{identity}/cancel`Cancel

Required scopes: `campaigns:write` `audiences:write` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`RefillConsent`](https://startwave.io/docs/api/#schema-RefillConsent)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_campaigns__cid__source_refills__identity__cancel_post)

GET `/campaigns/{cid}/sources`Sources

Required scopes: `campaigns:read` `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`SourceCollection`](https://startwave.io/docs/api/#schema-SourceCollection)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-sources_campaigns__cid__sources_get)

POST `/campaigns/{cid}/sources`Connect

Required scopes: `campaigns:write` `contacts:read`

Conditional scopes

`published_campaign` requires `spending:write`.

Connect a List; published campaigns require owner authority and key spending:write.

Connections do not authorize intake, purchases or sends. Recover an exact original
before repeating a mutation; original reads do not require new-change authority.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SourceConnect`](https://startwave.io/docs/api/#schema-SourceConnect)

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `list_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`SourceOperation`](https://startwave.io/docs/api/#schema-SourceOperation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-connect_campaigns__cid__sources_post)

PATCH `/campaigns/{cid}/sources/{identity}`Edit

Required scopes: `campaigns:write` `contacts:read`

Conditional scopes

`published_campaign` requires `spending:write`.

Edit a List connection; published campaigns require owner authority and key spending:write.

Draft operators retain connection editing. Existing original-operation reads remain
available under their ordinary scopes; this change never launches or broadens consent.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SourceEdit`](https://startwave.io/docs/api/#schema-SourceEdit)

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `state`Required  | `"connected" \| "disconnected"` |

#### Responses

`200` Successful Response

application/json

[`SourceOperation`](https://startwave.io/docs/api/#schema-SourceOperation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-edit_campaigns__cid__sources__identity__patch)

GET `/campaigns/{cid}/start`Current Start

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CurrentCampaignStart`](https://startwave.io/docs/api/#schema-CurrentCampaignStart)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-current_start_campaigns__cid__start_get)

POST `/campaigns/{cid}/start-review`Start Review

Required scopes: `campaigns:write`

Conditional scopes

`source_refill` requires `contacts:read`, `contacts:write`, `audiences:write`, `data:purchase`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Request body Required

application/json

[`StartReviewIn`](https://startwave.io/docs/api/#schema-StartReviewIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `spending_mode`Optional  | `"finite" \| "capacity"` Default: `"finite"`  |
| `quote_id`Optional  | `string` \| `null` |
| `capacity_operation`Optional  | `string` \| `null` |
| `source_refill`Optional  | [`RefillScope`](https://startwave.io/docs/api/#schema-RefillScope) \| `null` |

#### Responses

`200` Successful Response

application/json

[`StartReview`](https://startwave.io/docs/api/#schema-StartReview)

##### Synthetic funded subscription review; values are observations, not client constants.

Supplied JSON example

```
{
  "id": "review-original",
  "kind": "start",
  "commercial_policy_version": "startwave-core-v1",
  "spending_mode": "capacity",
  "schedule": {
    "definition": "campaign-pacing-upper-bound-v1",
    "observed_at": 1791633600,
    "local_date": "2026-10-10",
    "timezone": "America/New_York",
    "first_eligible_at": 1791633600,
    "opens_at": 1791604800,
    "closes_at": 1791691200,
    "nominal_gap_seconds": 1920,
    "daily_limit": 45,
    "quota_used": 0,
    "quota_remaining": 45,
    "pacing_slots_upper_bound": 30,
    "completion_guaranteed": false
  },
  "campaign": "campaign",
  "campaign_revision": 2,
  "capacity": {
    "quote_id": null,
    "capacity_operation": "in_original",
    "period_seconds": 2592000,
    "rate_cents_per_block": 3750,
    "rate_version": "subscription-30d-v1",
    "maximum_new_capacity_cents": 0,
    "daily_capacity": 90,
    "expires_at": 1794225540,
    "billing_mode": "subscription-30d-v1",
    "renewal": {
      "revision": 1,
      "enabled": true,
      "recurring_max_cents": 7500
    }
  },
  "audience_revision": 1,
  "remaining_send_count": 4,
  "state": "reviewed",
  "send_price_cents": 0,
  "send_budget_cents": 0,
  "audience_count": 2,
  "sequence_steps": 2,
  "send_committed_cents": 0,
  "reviewed_at": 1791633600,
  "reviewed_by": "service:example"
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-start_review_campaigns__cid__start_review_post)

GET `/campaigns/{cid}/start-reviews`Start Reviews

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `128`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`StartReviewPage`](https://startwave.io/docs/api/#schema-StartReviewPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-start_reviews_campaigns__cid__start_reviews_get)

POST `/campaigns/{cid}/state`State

Required scopes: `campaigns:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Request body Required

application/json

[`CampaignState`](https://startwave.io/docs/api/#schema-CampaignState)

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"active" \| "paused"` |

#### Responses

`200` Current Campaign after the requested state change; not an immutable Pause original. Resume requires the reviewed Launch owner under paid configuration.

application/json

[`CampaignCreated`](https://startwave.io/docs/api/#schema-CampaignCreated)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-state_campaigns__cid__state_post)

GET `/campaigns/{cid}/summary`Read Campaign Summary

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CampaignSummary`](https://startwave.io/docs/api/#schema-CampaignSummary)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_campaign_summary_campaigns__cid__summary_get)

GET `/campaigns/{cid}/verification`Verification Status

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `1000`  |

#### Responses

`200` Successful Response

application/json

[`CampaignVerificationPage`](https://startwave.io/docs/api/#schema-CampaignVerificationPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-verification_status_campaigns__cid__verification_get)

GET `/campaigns/{cid}/verification/batches`Current

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CurrentVerificationBatch`](https://startwave.io/docs/api/#schema-CurrentVerificationBatch)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-current_campaigns__cid__verification_batches_get)

GET `/campaigns/{cid}/windows`Campaign Windows

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cid`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `7` · Minimum: `1` · Maximum: `31`  |

#### Responses

`200` Successful Response

application/json

[`CampaignWindowsPage`](https://startwave.io/docs/api/#schema-CampaignWindowsPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-campaign_windows_campaigns__cid__windows_get)

### Capacity15 operations

GET `/capacity/current`Current Capacity

Required scopes: `usage:read`

#### Responses

`200` Successful Response

application/json

[`CurrentCapacity`](https://startwave.io/docs/api/#schema-CurrentCapacity)

[Link to this endpoint](https://startwave.io/docs/api/#operation-current_capacity_capacity_current_get)

GET `/capacity/expansions/{identity}`Status

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityExpansionResponse`](https://startwave.io/docs/api/#schema-CapacityExpansionResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_capacity_expansions__identity__get)

POST `/capacity/expansions/{identity}/cancel`Cancel

Required scopes: `campaigns:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityExpansionResponse`](https://startwave.io/docs/api/#schema-CapacityExpansionResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_capacity_expansions__identity__cancel_post)

POST `/capacity/expansions/{identity}/confirm`Confirm

Required scopes: `campaigns:write` `spending:write`

New legacy expansion confirmation is retired under subscription billing. An already-submitted original continues its recovery on replay.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityExpansionResponse`](https://startwave.io/docs/api/#schema-CapacityExpansionResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_capacity_expansions__identity__confirm_post)

GET `/capacity/lease-health`Customer

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `operation`Optional query  | `string` Default: `""` · Max length: `128`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `25` · Minimum: `1` · Maximum: `50`  |

#### Responses

`200` Successful Response

application/json

[`LeaseHealthPage`](https://startwave.io/docs/api/#schema-LeaseHealthPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-customer_capacity_lease_health_get)

GET `/capacity/limit`Read

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`AccountLimit`](https://startwave.io/docs/api/#schema-AccountLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_capacity_limit_get)

GET `/capacity/operations`Capacity Operations

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `before`Optional query  | `string` Default: `""` · Max length: `1024`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`CapacityPage_CapacityOperation_`](https://startwave.io/docs/api/#schema-CapacityPage_CapacityOperation_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-capacity_operations_capacity_operations_get)

GET `/capacity/operations/{activation}/expansions`History

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `activation`Required path  | `string` |
| `cursor`Optional query  | `string` Default: `""` · Max length: `128`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`CapacityPage_CapacityExpansionResponse_`](https://startwave.io/docs/api/#schema-CapacityPage_CapacityExpansionResponse_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_capacity_operations__activation__expansions_get)

GET `/capacity/operations/{operation}`Capacity Operation

Required scopes: `usage:read`

Read the original funded term and its recovery state, including retired legacy operations.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `operation`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityOperation`](https://startwave.io/docs/api/#schema-CapacityOperation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-capacity_operation_capacity_operations__operation__get)

GET `/capacity/operations/{operation}/reactivations`List Reactivations

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `operation`Required path  | `string` |
| `before`Optional query  | `string` Default: `""` · Max length: `128`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`CapacityPage_CapacityReactivationResponse_`](https://startwave.io/docs/api/#schema-CapacityPage_CapacityReactivationResponse_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-list_reactivations_capacity_operations__operation__reactivations_get)

GET `/capacity/reactivations/{identity}`Get Reactivation

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityReactivationResponse`](https://startwave.io/docs/api/#schema-CapacityReactivationResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-get_reactivation_capacity_reactivations__identity__get)

POST `/capacity/reactivations/{identity}/cancel`Cancel Reactivation

Required scopes: `campaigns:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityReactivationResponse`](https://startwave.io/docs/api/#schema-CapacityReactivationResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_reactivation_capacity_reactivations__identity__cancel_post)

POST `/capacity/reactivations/{identity}/confirm`Confirm Reactivation

Required scopes: `campaigns:write` `spending:write`

New legacy confirmation is retired under subscription billing. An already-submitted original continues its recovery on replay.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityReactivationResponse`](https://startwave.io/docs/api/#schema-CapacityReactivationResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_reactivation_capacity_reactivations__identity__confirm_post)

GET `/capacity/requests/{identity}`Read Request

Required scopes: `usage:read`

Read an immutable legacy review, preparation blocker or original confirmation recovery state.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityRequestReview`](https://startwave.io/docs/api/#schema-CapacityRequestReview) | [`CapacityRequestConfirmation`](https://startwave.io/docs/api/#schema-CapacityRequestConfirmation) | [`CapacityRequestIncomplete`](https://startwave.io/docs/api/#schema-CapacityRequestIncomplete)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_request_capacity_requests__identity__get)

POST `/capacity/requests/{identity}/confirm`Confirm Request

Required scopes: `campaigns:write` `spending:write`

New legacy confirmation is retired under subscription billing. Replay of an already-confirmed original continues its recovery.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body

application/json

[`CapacityConsentIn`](https://startwave.io/docs/api/#schema-CapacityConsentIn)

| Field | Type and constraints |
| --- | --- |
| `recurring_consent`Optional  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`CapacityRequestConfirmation`](https://startwave.io/docs/api/#schema-CapacityRequestConfirmation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_request_capacity_requests__identity__confirm_post)

### Companies3 operations

POST `/v1/companies/lookup`Lookup Companies

Required scopes: `search:read`

#### Request body Required

application/json

[`SourceLookup`](https://startwave.io/docs/api/#schema-SourceLookup)

| Field | Type and constraints |
| --- | --- |
| `ids`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `id_type`Optional  | `"source" \| "record"` Default: `"source"`  |

#### Responses

`200` Successful Response

application/json

[`LookupResult_CompanyPreview_`](https://startwave.io/docs/api/#schema-LookupResult_CompanyPreview_)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1.0`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-lookup_companies_v1_companies_lookup_post)

POST `/v1/companies/resolve`Resolve Companies

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Optional header  | `string` \| `null` Required for multiple inputs; preserves the frozen result across retries. |

#### Request body Required

application/json

[`ResolveRequest`](https://startwave.io/docs/api/#schema-ResolveRequest)

| Field | Type and constraints |
| --- | --- |
| `inputs`Required  | array of [`ResolveInput`](https://startwave.io/docs/api/#schema-ResolveInput) Min items: `1` · Max items: `100`  |

#### Responses

`200` Successful Response

application/json

[`ResolvePage`](https://startwave.io/docs/api/#schema-ResolvePage)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`202` Matching continues on the same result set. Repeat the same body and Idempotency-Key to read progress without starting another lookup.

application/json

[`ResolvePage`](https://startwave.io/docs/api/#schema-ResolvePage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-resolve_companies_v1_companies_resolve_post)

GET `/v1/companies/{identity}`Company

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `id_type`Optional query  | `"source" \| "record"` Default: `"source"`  |

#### Responses

`200` Successful Response

application/json

[`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-company_v1_companies__identity__get)

### Compliance1 operations

GET `/compliance`Read

Required scopes: `campaigns:read`

#### Responses

`200` Successful Response

application/json

[`ComplianceStatus`](https://startwave.io/docs/api/#schema-ComplianceStatus)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_compliance_get)

### Contacts10 operations

GET `/v1/contacts`People

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `state`Optional query  | `"active" \| "archived"` Default: `"active"`  |
| `name_prefix`Optional query  | `string` Default: `""` · Max length: `200`  |
| `sort`Optional query  | `"id" \| "name" \| "updated_at"` Default: `"id"`  |
| `order`Optional query  | `"asc" \| "desc"` Default: `"asc"`  |
| `ownership`Optional query  | `"all" \| "net_new" \| "saved"` Default: `"all"`  |
| `list_id`Optional query  | `string` \| `null` |
| `data_access`Optional query  | `"licensed"` \| `null` Only records with a selected licensed snapshot in this workspace; email availability is irrelevant. |
| `source_freshness`Optional query  | `"current" \| "update_available" \| "unavailable"` \| `null` |
| `q`Optional query  | `string` Literal Unicode-folded substring over permitted saved or selected owned fields. Examines at most 1000 indexed candidates; follow next_cursor even on empty pages. Default: `""` · Max length: `200`  |
| `view`Optional query  | `"saved" \| "contacts"` Default: `"saved"`  |
| `company_record_id`Optional query  | `string` \| `null` |
| `JOB_TITLE`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Page_PersonView_`](https://startwave.io/docs/api/#schema-Page_PersonView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-people_v1_contacts_get)

POST `/v1/contacts`Create Person

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`PersonFields`](https://startwave.io/docs/api/#schema-PersonFields)

| Field | Type and constraints |
| --- | --- |
| `UUID`Optional  | `string` \| `null` |
| `FIRST_NAME`Optional  | `string` \| `null` |
| `LAST_NAME`Optional  | `string` \| `null` |
| `PHOTO_URL`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `JOB_TITLE`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `PERSONAL_CITY`Optional  | `string` \| `null` |
| `PERSONAL_STATE`Optional  | `string` \| `null` |
| `PERSONAL_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `MIDDLE_NAME`Optional  | `string` \| `null` |
| `DEPARTMENT`Optional  | `string` \| `null` |
| `SENIORITY_LEVEL`Optional  | `string` \| `null` |
| `HEADLINE`Optional  | `string` \| `null` |
| `SUMMARY`Optional  | `string` \| `null` |
| `SKILLS`Optional  | array of `string` \| `null` |
| `WORK_EXPERIENCE`Optional  | array of [`WorkExperience`](https://startwave.io/docs/api/#schema-WorkExperience) \| `null` |
| `EDUCATION_HISTORY`Optional  | array of [`EducationHistory`](https://startwave.io/docs/api/#schema-EducationHistory) \| `null` |
| `POSTS`Optional  | array of `object` \| `null` |
| `CURRENT_BUSINESS_EMAIL`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_DATE`Optional  | `string` \| `null` |
| `EMAILS`Optional  | `string` \| array of `string` \| `null` |
| `PHONES`Optional  | `string` \| array of `string` \| `null` |
| `MOBILE_PHONE`Optional  | `string` \| `null` |
| `MOBILE_PHONE_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `LINKEDIN_URL`Optional  | `string` \| `null` |
| `PERSONAL_ADDRESS`Optional  | `string` \| `null` |
| `PERSONAL_ZIP`Optional  | `string` \| `null` |
| `LAST_UPDATED`Optional  | `string` \| `null` |
| `COMPANY_DESCRIPTION`Optional  | `string` \| `null` |
| `COMPANY_INDUSTRY`Optional  | `string` \| `null` |
| `COMPANY_REVENUE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_NUM_EMPLOYEE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_OWNERSHIP`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_STAGE`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_ROUND_DATE`Optional  | `string` \| `null` |
| `COMPANY_TOTAL_FUNDING`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_STOCK_EXCHANGE`Optional  | `string` \| `null` |
| `COMPANY_TICKER_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_STOCK_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_MARKET_CAPITALIZATION`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_TOTAL_REVENUE`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_NUMBER_OF_FOLLOWERS`Optional  | `integer` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY_NUMERIC`Optional  | `string` \| `null` |
| `COMPANY_ADDRESS`Optional  | `string` \| `null` |
| `COMPANY_ZIP_CODE`Optional  | `string` \| `null` |
| `COMPANY_FOUNDED_YEAR`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_URL`Optional  | `string` \| `null` |
| `COMPANY_FACEBOOK_URL`Optional  | `string` \| `null` |
| `COMPANY_TWITTER_URL`Optional  | `string` \| `null` |
| `COMPANY_ANGELLIST_URL`Optional  | `string` \| `null` |
| `COMPANY_TECHNOLOGIES`Optional  | `string` \| array of `string` \| `null` |
| `COMPANY_RETAIL_LOCATION_COUNT`Optional  | `integer` \| `null` |
| `company_record_id`Optional  | `string` \| `null` Optional workspace company relationship; never the dataset COMPANY_ID. |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_person_v1_contacts_post)

POST `/v1/contacts/from-search`Save Person

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SavePersonSource`](https://startwave.io/docs/api/#schema-SavePersonSource)

| Field | Type and constraints |
| --- | --- |
| `UUID`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `target`Optional  | [`SourceTarget`](https://startwave.io/docs/api/#schema-SourceTarget) \| `null` Explicitly attach to this active manual record; never infer a merge from matching contact fields. |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-save_person_v1_contacts_from_search_post)

POST `/v1/contacts/lookup`Lookup People

Required scopes: `contacts:read`

#### Request body Required

application/json

[`RecordLookup`](https://startwave.io/docs/api/#schema-RecordLookup)

| Field | Type and constraints |
| --- | --- |
| `ids`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `id_type`Optional  | `"source" \| "record"` Default: `"record"`  |

#### Responses

`200` Successful Response

application/json

[`LookupResult_PersonView_`](https://startwave.io/docs/api/#schema-LookupResult_PersonView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-lookup_people_v1_contacts_lookup_post)

GET `/v1/contacts/{identity}`Person

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `id_type`Optional query  | `"source" \| "record"` Default: `"record"`  |

#### Responses

`200` Successful Response

application/json

[`PersonView`](https://startwave.io/docs/api/#schema-PersonView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-person_v1_contacts__identity__get)

PATCH `/v1/contacts/{identity}`Edit Person

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`PersonEdit`](https://startwave.io/docs/api/#schema-PersonEdit)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `UUID`Optional  | `string` \| `null` |
| `FIRST_NAME`Optional  | `string` \| `null` |
| `LAST_NAME`Optional  | `string` \| `null` |
| `PHOTO_URL`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `JOB_TITLE`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `PERSONAL_CITY`Optional  | `string` \| `null` |
| `PERSONAL_STATE`Optional  | `string` \| `null` |
| `PERSONAL_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `MIDDLE_NAME`Optional  | `string` \| `null` |
| `DEPARTMENT`Optional  | `string` \| `null` |
| `SENIORITY_LEVEL`Optional  | `string` \| `null` |
| `HEADLINE`Optional  | `string` \| `null` |
| `SUMMARY`Optional  | `string` \| `null` |
| `SKILLS`Optional  | array of `string` \| `null` |
| `WORK_EXPERIENCE`Optional  | array of [`WorkExperience`](https://startwave.io/docs/api/#schema-WorkExperience) \| `null` |
| `EDUCATION_HISTORY`Optional  | array of [`EducationHistory`](https://startwave.io/docs/api/#schema-EducationHistory) \| `null` |
| `POSTS`Optional  | array of `object` \| `null` |
| `CURRENT_BUSINESS_EMAIL`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_DATE`Optional  | `string` \| `null` |
| `EMAILS`Optional  | `string` \| array of `string` \| `null` |
| `PHONES`Optional  | `string` \| array of `string` \| `null` |
| `MOBILE_PHONE`Optional  | `string` \| `null` |
| `MOBILE_PHONE_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `LINKEDIN_URL`Optional  | `string` \| `null` |
| `PERSONAL_ADDRESS`Optional  | `string` \| `null` |
| `PERSONAL_ZIP`Optional  | `string` \| `null` |
| `LAST_UPDATED`Optional  | `string` \| `null` |
| `COMPANY_DESCRIPTION`Optional  | `string` \| `null` |
| `COMPANY_INDUSTRY`Optional  | `string` \| `null` |
| `COMPANY_REVENUE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_NUM_EMPLOYEE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_OWNERSHIP`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_STAGE`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_ROUND_DATE`Optional  | `string` \| `null` |
| `COMPANY_TOTAL_FUNDING`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_STOCK_EXCHANGE`Optional  | `string` \| `null` |
| `COMPANY_TICKER_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_STOCK_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_MARKET_CAPITALIZATION`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_TOTAL_REVENUE`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_NUMBER_OF_FOLLOWERS`Optional  | `integer` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY_NUMERIC`Optional  | `string` \| `null` |
| `COMPANY_ADDRESS`Optional  | `string` \| `null` |
| `COMPANY_ZIP_CODE`Optional  | `string` \| `null` |
| `COMPANY_FOUNDED_YEAR`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_URL`Optional  | `string` \| `null` |
| `COMPANY_FACEBOOK_URL`Optional  | `string` \| `null` |
| `COMPANY_TWITTER_URL`Optional  | `string` \| `null` |
| `COMPANY_ANGELLIST_URL`Optional  | `string` \| `null` |
| `COMPANY_TECHNOLOGIES`Optional  | `string` \| array of `string` \| `null` |
| `COMPANY_RETAIL_LOCATION_COUNT`Optional  | `integer` \| `null` |
| `company_record_id`Optional  | `string` \| `null` Optional workspace company relationship; never the dataset COMPANY_ID. |
| `remove_overrides`Optional  | array of `"FIRST_NAME" \| "LAST_NAME" \| "PHOTO_URL" \| "COMPANY_NAME" \| "JOB_TITLE" \| "COMPANY_LOGO_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "COMPANY_DOMAIN" \| "MIDDLE_NAME" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT"` Remove selected provided overrides and use the selected owned snapshot values. Requires a catalogue-backed licensed record; omission preserves overrides, null still masks a value. No purchase or source refresh. Min items: `1` · Max items: `64`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-edit_person_v1_contacts__identity__patch)

GET `/v1/contacts/{identity}/campaigns`Contact Campaigns

Required scopes: `contacts:read` `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` At most 50 campaigns with up to 50 connected List memberships each. Default: `50` · Minimum: `1` · Maximum: `50`  |

#### Responses

`200` Successful Response

application/json

[`Page_ContactCampaign_`](https://startwave.io/docs/api/#schema-Page_ContactCampaign_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-contact_campaigns_v1_contacts__identity__campaigns_get)

POST `/v1/contacts/{identity}/preview-refreshes`Refresh Person

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`PreviewRefresh`](https://startwave.io/docs/api/#schema-PreviewRefresh)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `expected_check_revision`Required  | `integer` |
| `version_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `reset_overrides`Optional  | array of `"FIRST_NAME" \| "LAST_NAME" \| "MIDDLE_NAME" \| "JOB_TITLE" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT" \| "COMPANY_ID" \| "COMPANY_LOGO_URL" \| "UUID" \| "PHOTO_URL"` Max items: `64`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-refresh_person_v1_contacts__identity__preview_refreshes_post)

GET `/v1/contacts/{identity}/source-checks`Person History

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`SourceCheckHistory`](https://startwave.io/docs/api/#schema-SourceCheckHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-person_history_v1_contacts__identity__source_checks_get)

POST `/v1/contacts/{identity}/source-checks`Check Person

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SourceCheck`](https://startwave.io/docs/api/#schema-SourceCheck)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `expected_check_revision`Required  | `integer` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-check_person_v1_contacts__identity__source_checks_post)

### Conversations14 operations

GET `/conversations`Conversations

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `before`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `status`Optional query  | `"all" \| "needs_reply" \| "waiting" \| "closed" \| "sent" \| "handed_off"` Default: `"all"`  |
| `archive`Optional query  | `"current" \| "archived" \| "all"` Default: `"current"`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `mine`Optional query  | `boolean` Default: `false`  |
| `unassigned`Optional query  | `boolean` Default: `false`  |
| `assignee`Optional query  | `string` \| `null` |
| `read`Optional query  | `"all" \| "read" \| "unread"` Default: `"all"`  |
| `q`Optional query  | `string` Default: `""` · Max length: `100`  |
| `intent`Optional query  | `"all" \| "needs_review" \| "interested" \| "not_interested" \| "opt_out" \| "out_of_office" \| "automated" \| "recipient_unavailable"` Default: `"all"`  |
| `attention`Optional query  | `"all" \| "needs_person"` Default: `"all"`  |

#### Responses

`200` Successful Response

application/json

[`ConversationPage`](https://startwave.io/docs/api/#schema-ConversationPage)

##### Synthetic list page; unread is an integer, next_cursor is nullable and not a total.

Supplied JSON example

```
{
  "items": [
    {
      "workspace": "one",
      "id": "conversation-example",
      "last_activity": 1791633600,
      "last_inbound_seq": 1,
      "status": "needs_reply",
      "revision": 2,
      "assignee": null,
      "archived": 0,
      "has_sent": 0,
      "email": "one@example.test",
      "campaign": "campaign-one",
      "campaign_name": "campaign-one",
      "unread": 1,
      "attention_seq": 1,
      "handoff": null,
      "inbox": {
        "workflow": "needs_reply",
        "reply_delivery": "none",
        "intent": "needs_review"
      }
    }
  ],
  "next_cursor": null
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-conversations_conversations_get)

GET `/conversations/{identity}`Detail

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ConversationDetail`](https://startwave.io/docs/api/#schema-ConversationDetail)

##### Synthetic inbound-only detail; optional source/classification fields are omitted when absent.

Supplied JSON example

```
{
  "conversation": {
    "workspace": "one",
    "id": "conversation-example",
    "last_activity": 1791633600,
    "last_inbound_seq": 1,
    "status": "needs_reply",
    "revision": 2,
    "assignee": null,
    "archived": 0,
    "has_sent": 0,
    "email": "one@example.test",
    "campaign": "campaign-one",
    "attention_seq": 1,
    "handoff": null,
    "inbox": {
      "workflow": "needs_reply",
      "reply_delivery": "none",
      "intent": "needs_review"
    },
    "unread": 1
  },
  "followups": {
    "state": "inactive",
    "next_eligible_at": null,
    "step": null,
    "stop_id": null,
    "stopped_at": null,
    "can_stop": false
  },
  "read_by": [],
  "read_by_more": false,
  "items": [
    {
      "seq": 1,
      "direction": "in",
      "authorship": "external",
      "occurred_at": 1791633600,
      "event_id": "one-a",
      "message_id": "<one@example.test>",
      "kind": "reply",
      "content": "Thanks",
      "intent": "needs_review",
      "revision": 1,
      "delivery_action": null,
      "delivery_status": null,
      "delivery_confidence": null,
      "participants": null
    }
  ],
  "next_cursor": null
}
```

##### Synthetic unresolved outbound reply; retain the original job, never resubmit it under a new ID.

Supplied JSON example

```
{
  "conversation": {
    "workspace": "one",
    "id": "conversation-example",
    "last_activity": 1791633600,
    "last_inbound_seq": 1,
    "status": "needs_reply",
    "revision": 2,
    "assignee": null,
    "archived": 0,
    "has_sent": 0,
    "email": "one@example.test",
    "campaign": "campaign-one",
    "attention_seq": 1,
    "handoff": null,
    "inbox": {
      "workflow": "needs_reply",
      "reply_delivery": "unconfirmed",
      "intent": "needs_review"
    },
    "unread": 1
  },
  "followups": {
    "state": "inactive",
    "next_eligible_at": null,
    "step": null,
    "stop_id": null,
    "stopped_at": null,
    "can_stop": false
  },
  "read_by": [],
  "read_by_more": false,
  "items": [
    {
      "seq": 2,
      "direction": "out",
      "authorship": "human",
      "occurred_at": 1791633600,
      "job_id": "reply-original",
      "submitted_by": "service",
      "message_id": "<reply@example.test>",
      "state": "unknown",
      "error": "",
      "subject": "Re: Hello",
      "content": "Thanks for your reply.",
      "has_html": false,
      "attachments": []
    },
    {
      "seq": 1,
      "direction": "in",
      "authorship": "external",
      "occurred_at": 1791633600,
      "event_id": "one-a",
      "message_id": "<one@example.test>",
      "kind": "reply",
      "content": "Thanks",
      "intent": "needs_review",
      "revision": 1,
      "delivery_action": null,
      "delivery_status": null,
      "delivery_confidence": null,
      "participants": null
    }
  ],
  "next_cursor": null
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-detail_conversations__identity__get)

PATCH `/conversations/{identity}/archive`Conversation

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`ArchiveIn`](https://startwave.io/docs/api/#schema-ArchiveIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `archived`Required  | `boolean` |

#### Responses

`200` Successful Response

application/json

[`ConversationArchive`](https://startwave.io/docs/api/#schema-ConversationArchive)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-conversation_conversations__identity__archive_patch)

GET `/conversations/{identity}/archive-history`Conversation History

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ConversationHistory_ConversationArchive_`](https://startwave.io/docs/api/#schema-ConversationHistory_ConversationArchive_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-conversation_history_conversations__identity__archive_history_get)

PATCH `/conversations/{identity}/assignment`Assign

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`AssignmentIn`](https://startwave.io/docs/api/#schema-AssignmentIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `assignee`Required  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`ConversationAssignment`](https://startwave.io/docs/api/#schema-ConversationAssignment)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-assign_conversations__identity__assignment_patch)

GET `/conversations/{identity}/assignments`History

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ConversationHistory_ConversationAssignment_`](https://startwave.io/docs/api/#schema-ConversationHistory_ConversationAssignment_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_conversations__identity__assignments_get)

GET `/conversations/{identity}/changes`Changes

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ConversationHistory_ConversationChange_`](https://startwave.io/docs/api/#schema-ConversationHistory_ConversationChange_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-changes_conversations__identity__changes_get)

POST `/conversations/{identity}/do-not-contact`Do Not Contact

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`DoNotContactIn`](https://startwave.io/docs/api/#schema-DoNotContactIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `event_id`Required  | `string` Min length: `1` · Max length: `256`  |
| `expected_reply_revision`Required  | `integer` Minimum: `1.0`  |

#### Responses

`200` Successful Response

application/json

[`ConversationDoNotContact`](https://startwave.io/docs/api/#schema-ConversationDoNotContact)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-do_not_contact_conversations__identity__do_not_contact_post)

GET `/conversations/{identity}/messages/{event}/attachments/{part}`Attachment Download

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |
| `event`Required path  | `string` |
| `part`Required path  | `integer` Minimum: `0` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/octet-stream

`string`

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-attachment_download_conversations__identity__messages__event__attachments__part__get)

GET `/conversations/{identity}/notes`Notes

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ConversationHistory_ConversationNote_`](https://startwave.io/docs/api/#schema-ConversationHistory_ConversationNote_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-notes_conversations__identity__notes_get)

POST `/conversations/{identity}/notes`Add Note

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`NoteIn`](https://startwave.io/docs/api/#schema-NoteIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `body`Required  | `string` Min length: `1` · Max length: `10000` · Pattern: `"\\S"`  |

#### Responses

`200` Successful Response

application/json

[`ConversationNote`](https://startwave.io/docs/api/#schema-ConversationNote)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-add_note_conversations__identity__notes_post)

POST `/conversations/{identity}/read`Read

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`ReadIn`](https://startwave.io/docs/api/#schema-ReadIn)

| Field | Type and constraints |
| --- | --- |
| `through_seq`Required  | `integer` Minimum: `0.0`  |
| `unread`Optional  | `boolean` Default: `false`  |

#### Responses

`200` Successful Response

application/json

[`ConversationRead`](https://startwave.io/docs/api/#schema-ConversationRead)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_conversations__identity__read_post)

PATCH `/conversations/{identity}/status`Status

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`StatusIn`](https://startwave.io/docs/api/#schema-StatusIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `status`Required  | `"closed" \| "needs_reply"` |

#### Responses

`200` Successful Response

application/json

[`ConversationChange`](https://startwave.io/docs/api/#schema-ConversationChange)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_conversations__identity__status_patch)

POST `/conversations/{identity}/stop-followups`Stop Followups

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Request body Required

application/json

[`StopFollowupsIn`](https://startwave.io/docs/api/#schema-StopFollowupsIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |

#### Responses

`200` Successful Response

application/json

[`ConversationStop`](https://startwave.io/docs/api/#schema-ConversationStop)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-stop_followups_conversations__identity__stop_followups_post)

### Data capabilities1 operations

GET `/v1/data-capabilities`Capabilities

Required scopes: `contacts:read`

#### Responses

`200` Successful Response

application/json

[`DataCapabilities`](https://startwave.io/docs/api/#schema-DataCapabilities)

[Link to this endpoint](https://startwave.io/docs/api/#operation-capabilities_v1_data_capabilities_get)

### Data job capabilities1 operations

GET `/v1/data-job-capabilities`Capabilities

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Responses

`200` Successful Response

application/json

[`JobCapabilities`](https://startwave.io/docs/api/#schema-JobCapabilities)

[Link to this endpoint](https://startwave.io/docs/api/#operation-capabilities_v1_data_job_capabilities_get)

### Data jobs12 operations

GET `/v1/data-jobs`History

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `sort`Optional query  | `"created_at" \| "state" \| "amount_minor"` Default: `"created_at"`  |
| `order`Optional query  | `"asc" \| "desc"` Default: `"desc"`  |
| `category`Optional query  | `"contacts" \| "suppressions"` Default: `"contacts"`  |
| `import_id`Optional query  | `string` \| `null` |
| `campaign_id`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Page_JobView_`](https://startwave.io/docs/api/#schema-Page_JobView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_v1_data_jobs_get)

POST `/v1/data-jobs`Create

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

`export` requires `contacts:read`.

`export_suppressions` requires `suppressions:read`.

`export_campaign` requires `contacts:read`, `campaigns:read`.

Conditional scopes

`scope` requires `contacts:read`.

`scope.resource=people|companies` requires `search:read`.

`kind=unlock|refresh` requires `search:read`, `data:purchase`, `spending:write`.

`kind=export` requires `contacts:read`.

`kind=export_suppressions` requires `suppressions:read`.

`kind=export_campaign` requires `contacts:read`, `campaigns:read`.

`kind=export,input.kind=identifiers` requires `search:read`.

`kind=export,export.version_mode!=owned_only` requires `search:read`, `data:purchase`, `spending:write`.

`kind=campaign_admission` requires `campaigns:write`, `contacts:read`, `audiences:write`, `spending:write`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`JobRequest`](https://startwave.io/docs/api/#schema-JobRequest)

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"import_records" \| "list_membership" \| "unlock" \| "refresh" \| "export" \| "suppressions" \| "contact_history" \| "export_suppressions" \| "export_campaign" \| "campaign_admission"` |
| `import_id`Optional  | `string` \| `null` |
| `expected_digest`Optional  | `string` \| `null` |
| `scope`Optional  | [`JobIdsScope`](https://startwave.io/docs/api/#schema-JobIdsScope) \| [`JobListScope`](https://startwave.io/docs/api/#schema-JobListScope) \| [`JobQueryScope-Input`](https://startwave.io/docs/api/#schema-JobQueryScope-Input) \| [`JobRecordsScope`](https://startwave.io/docs/api/#schema-JobRecordsScope) \| `null` |
| `max_records`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `prepare`Optional  | `boolean` Prepare a native scoped action without spending or producing an artifact. Explicit confirmation is required before execution. Default: `false`  |
| `list_id`Optional  | `string` \| `null` |
| `expected_membership_revision`Optional  | `integer` \| `null` |
| `action`Optional  | `"add" \| "remove"` Default: `"add"`  |
| `purchase`Optional  | [`OrderTerms`](https://startwave.io/docs/api/#schema-OrderTerms) \| `null` |
| `export`Optional  | [`JobExport`](https://startwave.io/docs/api/#schema-JobExport) \| `null` |
| `review`Optional  | `null` |
| `delivery`Optional  | `null` |
| `campaign`Optional  | [`CampaignAdmissionTarget`](https://startwave.io/docs/api/#schema-CampaignAdmissionTarget) \| `null` |
| `exclusions`Optional  | [`SuppressionExport`](https://startwave.io/docs/api/#schema-SuppressionExport) \| `null` |
| `recipients`Optional  | [`CampaignExport`](https://startwave.io/docs/api/#schema-CampaignExport) \| `null` |

#### Responses

`200` Original job is no longer queued or awaiting action.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data job. |

application/json

[`JobView`](https://startwave.io/docs/api/#schema-JobView)

`202` Original job is queued or awaiting action. Read it for progress.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data job. |

application/json

[`JobView`](https://startwave.io/docs/api/#schema-JobView)

##### Synthetic accepted original with Location /v1/data-jobs/11111111111111111111111111111111. Recover by the same Idempotency-Key through /v1/data-jobs/by-key; read progress rather than submit another job. Staging and submission do not purchase or send.

Supplied JSON example

```
{
  "id": "11111111111111111111111111111111",
  "parameters": {
    "kind": "import_records",
    "import_id": "22222222222222222222222222222222",
    "expected_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "max_records": 1
  },
  "entity_type": "person",
  "state": "queued",
  "revision": 1,
  "counts": {
    "processed": 0,
    "created": 0,
    "added": 0,
    "removed": 0,
    "unchanged": 0,
    "invalid": 0,
    "newly_granted": 0,
    "already_owned": 0,
    "excluded": 0,
    "checked": 0,
    "changed": 0,
    "missing": 0
  },
  "total_rows": 1,
  "target_revision": null,
  "reason": null,
  "created_at": "2026-10-12T00:00:00Z",
  "updated_at": "2026-10-12T00:00:00Z",
  "expires_at": "2026-10-19T00:00:00Z",
  "completed_at": null,
  "policy": null,
  "amount_minor": 0,
  "funding_required_minor": 0,
  "pending_order_id": null
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_v1_data_jobs_post)

GET `/v1/data-jobs/by-key`By Key

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`JobView`](https://startwave.io/docs/api/#schema-JobView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_v1_data_jobs_by_key_get)

GET `/v1/data-jobs/{identity}`Original

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`JobView`](https://startwave.io/docs/api/#schema-JobView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_data_jobs__identity__get)

GET `/v1/data-jobs/{identity}/artifact`Artifact

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`JobArtifact`](https://startwave.io/docs/api/#schema-JobArtifact)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-artifact_v1_data_jobs__identity__artifact_get)

POST `/v1/data-jobs/{identity}/cancel`Cancel

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

`export` requires `contacts:read`.

`export_suppressions` requires `suppressions:read`.

`export_campaign` requires `contacts:read`, `campaigns:read`.

Conditional scopes

`job.scope` requires `contacts:read`.

`job.scope.resource=people|companies` requires `search:read`.

`job.kind=unlock|refresh` requires `search:read`, `data:purchase`, `spending:write`.

`job.kind=export` requires `contacts:read`.

`job.kind=export_suppressions` requires `suppressions:read`.

`job.kind=export_campaign` requires `contacts:read`, `campaigns:read`.

`job.kind=export,input.kind=identifiers` requires `search:read`.

`job.kind=export,job.export.version_mode!=owned_only` requires `search:read`, `data:purchase`, `spending:write`.

`job.kind=campaign_admission` requires `campaigns:write`, `contacts:read`, `audiences:write`, `spending:write`.

`job.kind=source_check` requires `search:read`.

`job.kind=export_review|review_delivery` requires `contacts:read`.

`job.kind=review_delivery,billable_units>0` requires `data:purchase`, `spending:write`.

`job.kind=review_delivery,billable_source_records` requires `search:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`JobView`](https://startwave.io/docs/api/#schema-JobView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_v1_data_jobs__identity__cancel_post)

POST `/v1/data-jobs/{identity}/confirm`Confirm

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

`export` requires `contacts:read`.

`export_suppressions` requires `suppressions:read`.

`export_campaign` requires `contacts:read`, `campaigns:read`.

Conditional scopes

`job.scope` requires `contacts:read`.

`job.scope.resource=people|companies` requires `search:read`.

`job.purchase` requires `search:read`, `data:purchase`, `spending:write`.

`destination!=null` requires `contacts:write`.

`job.kind=export` requires `contacts:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`JobConfirm`](https://startwave.io/docs/api/#schema-JobConfirm)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `quote_revision`Required  | `integer` Minimum: `1.0`  |
| `currency`Required  | `"usd"` |
| `max_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `10000000.0`  |
| `destination`Optional  | [`JobExistingList`](https://startwave.io/docs/api/#schema-JobExistingList) \| [`JobNewList`](https://startwave.io/docs/api/#schema-JobNewList) \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_v1_data_jobs__identity__confirm_post)

GET `/v1/data-jobs/{identity}/delivery`Delivery

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `5000000`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`ReviewDeliveryPage`](https://startwave.io/docs/api/#schema-ReviewDeliveryPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-delivery_v1_data_jobs__identity__delivery_get)

GET `/v1/data-jobs/{identity}/download`Download

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `session_binding`Optional query  | `string` \| `null` |
| `sha256`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

text/csv

`string`

application/json

`string`

application/x-ndjson

`string`

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

`string`

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-download_v1_data_jobs__identity__download_get)

HEAD `/v1/data-jobs/{identity}/download`Download

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `session_binding`Optional query  | `string` \| `null` |
| `sha256`Optional query  | `string` \| `null` |

#### Responses

`200` Successful Response

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-download_v1_data_jobs__identity__download_head)

GET `/v1/data-jobs/{identity}/results`Results

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `5000000`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`JobResults`](https://startwave.io/docs/api/#schema-JobResults)

##### Synthetic committed suppression prefix. Recover each immutable receipt through /suppressions/operations/{suppression_operation_id}; duplicates cost zero and do not repeat audience cancellation. Job state owns remaining progress.

Supplied JSON example

```
{
  "items": [
    {
      "ordinal": 1,
      "key": "customer-one",
      "record_id": null,
      "outcome": "added",
      "reason": null,
      "suppression_operation_id": "import-11111111111111111111111111111111-1",
      "amount_minor": 0
    },
    {
      "ordinal": 2,
      "key": "duplicate",
      "record_id": null,
      "outcome": "unchanged",
      "reason": null,
      "suppression_operation_id": "import-11111111111111111111111111111111-2",
      "amount_minor": 0
    },
    {
      "ordinal": 3,
      "key": "bad-target",
      "record_id": null,
      "outcome": "invalid",
      "reason": "invalid_suppressions",
      "suppression_operation_id": null,
      "amount_minor": 0
    }
  ],
  "next_after": null
}
```

`410` Per-row results expired; job totals and original purchase receipts remain available.

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-results_v1_data_jobs__identity__results_get)

POST `/v1/data-jobs/{identity}/resume`Resume

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

`export` requires `contacts:read`.

`export_suppressions` requires `suppressions:read`.

`export_campaign` requires `contacts:read`, `campaigns:read`.

Conditional scopes

`job.scope` requires `contacts:read`.

`job.scope.resource=people|companies` requires `search:read`.

`job.kind=unlock|refresh` requires `search:read`, `data:purchase`, `spending:write`.

`job.kind=export` requires `contacts:read`.

`job.kind=export_suppressions` requires `suppressions:read`.

`job.kind=export_campaign` requires `contacts:read`, `campaigns:read`.

`job.kind=export,input.kind=identifiers` requires `search:read`.

`job.kind=export,job.export.version_mode!=owned_only` requires `search:read`, `data:purchase`, `spending:write`.

`job.kind=campaign_admission` requires `campaigns:write`, `contacts:read`, `audiences:write`, `spending:write`.

`job.kind=source_check` requires `search:read`.

`job.kind=review_delivery` requires `contacts:read`.

`job.kind=review_delivery,billable_units>0` requires `data:purchase`, `spending:write`.

`job.kind=review_delivery,billable_source_records` requires `search:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`JobResume`](https://startwave.io/docs/api/#schema-JobResume)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_membership_revision`Optional  | `integer` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-resume_v1_data_jobs__identity__resume_post)

### Data orders11 operations

GET `/v1/data-orders`History

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `sort`Optional query  | `"created_at" \| "state" \| "amount_minor"` Default: `"created_at"`  |
| `order`Optional query  | `"asc" \| "desc"` Default: `"desc"`  |

#### Responses

`200` Successful Response

application/json

[`Page_OrderSummary_`](https://startwave.io/docs/api/#schema-Page_OrderSummary_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_v1_data_orders_get)

POST `/v1/data-orders`Purchase

Required scopes: `data:purchase` `spending:write`

SourceUnlock accepts a source ID without a saved record or review. It additionally requires search:read and contacts:write. Its Idempotency-Key is optional; owned reuse is free and never refreshes. IdentifierUnlock accepts up to100 keyed exact identifiers in one request, requires the same scopes and Idempotency-Key, and also reuses selected ownership without refreshing. RecordRefresh explicitly updates an owned contact/account with its expected revision and requires the same scopes plus Idempotency-Key. Equivalent licensed content is free.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Optional header  | `string` \| `null` |

#### Request body Required

application/json

[`SourceUnlock`](https://startwave.io/docs/api/#schema-SourceUnlock) | [`IdentifierUnlock`](https://startwave.io/docs/api/#schema-IdentifierUnlock) | [`RecordRefresh`](https://startwave.io/docs/api/#schema-RecordRefresh)

#### Responses

`200` Original order no longer awaiting funds.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data order. |

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView)

`202` Original order awaits data funds and deliberate continuation. Reading it does not resume it.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data order. |

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView)

##### Synthetic original awaiting data funds; GET does not resume it. Prices are examples, not client constants.

Supplied JSON example

```
{
  "id": "order-example",
  "state": "awaiting_funds",
  "policy": {
    "id": "fixture-person",
    "entity_type": "person",
    "currency": "usd",
    "unit_amount_minor": 2
  },
  "currency": "usd",
  "max_amount_minor": 100,
  "amount_minor": 0,
  "funding_required_minor": 2,
  "items": [],
  "matches": null,
  "created_at": "2026-10-11T00:00:00.000000Z",
  "completed_at": null,
  "automatic_funding": true,
  "funding_error": ""
}
```

##### Synthetic matched person awaiting data funds; no licensed fields disclosed and no automatic continuation.

Supplied JSON example

```
{
  "id": "order-example",
  "state": "awaiting_funds",
  "policy": {
    "id": "fixture-person",
    "entity_type": "person",
    "currency": "usd",
    "unit_amount_minor": 2
  },
  "currency": "usd",
  "max_amount_minor": 100,
  "amount_minor": 0,
  "funding_required_minor": 2,
  "items": [],
  "matches": null,
  "created_at": "2026-10-11T00:00:00.000000Z",
  "completed_at": null,
  "automatic_funding": true,
  "funding_error": ""
}
```

##### Synthetic matched company awaiting data funds; fixture price is illustrative, not a server constant.

Supplied JSON example

```
{
  "id": "order-example",
  "state": "awaiting_funds",
  "policy": {
    "id": "fixture-company",
    "entity_type": "company",
    "currency": "usd",
    "unit_amount_minor": 1
  },
  "currency": "usd",
  "max_amount_minor": 100,
  "amount_minor": 0,
  "funding_required_minor": 1,
  "items": [],
  "matches": null,
  "created_at": "2026-10-11T00:00:00.000000Z",
  "completed_at": null,
  "automatic_funding": true,
  "funding_error": ""
}
```

`429` New unfunded purchase exceeds pending-order capacity. No new order or debit is committed; fund, resume or cancel original purchases before retrying. Funded work and original recovery remain available.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds before retrying admission. |

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-purchase_v1_data_orders_post)

GET `/v1/data-orders/by-key`By Key

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView) | [`ReviewDelivery`](https://startwave.io/docs/api/#schema-ReviewDelivery) | [`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_v1_data_orders_by_key_get)

GET `/v1/data-orders/reviews/by-key`By Key

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`ReviewView`](https://startwave.io/docs/api/#schema-ReviewView) | [`PreparingReview`](https://startwave.io/docs/api/#schema-PreparingReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_v1_data_orders_reviews_by_key_get)

GET `/v1/data-orders/reviews/{identity}`Original

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`ReviewView`](https://startwave.io/docs/api/#schema-ReviewView) | [`PreparingReview`](https://startwave.io/docs/api/#schema-PreparingReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_data_orders_reviews__identity__get)

POST `/v1/data-orders/reviews/{identity}/cancel`Cancel

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`ReviewView`](https://startwave.io/docs/api/#schema-ReviewView) | [`PreparingReview`](https://startwave.io/docs/api/#schema-PreparingReview)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_v1_data_orders_reviews__identity__cancel_post)

POST `/v1/data-orders/reviews/{identity}/confirm`Confirm

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`ReviewConfirm`](https://startwave.io/docs/api/#schema-ReviewConfirm)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `delivery`Optional  | `"json" \| "csv" \| "json_job" \| "csv_job"` Default: `"json"`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `10000000.0`  |

#### Responses

`200` Original order or job result.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data order or data job, according to delivery mode. |

application/json

[`ReviewDelivery`](https://startwave.io/docs/api/#schema-ReviewDelivery) | [`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase) | [`JobView`](https://startwave.io/docs/api/#schema-JobView)

`202` Original awaits funds, queued work or explicit action.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data order or data job, according to delivery mode. |

application/json

[`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase) | [`JobView`](https://startwave.io/docs/api/#schema-JobView)

`429` New unfunded purchase exceeds pending-order capacity; no new purchase is committed. Existing purchase recovery remains available.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds before retrying admission. |

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-confirm_v1_data_orders_reviews__identity__confirm_post)

GET `/v1/data-orders/{identity}`Original

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView) | [`ReviewDelivery`](https://startwave.io/docs/api/#schema-ReviewDelivery) | [`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_data_orders__identity__get)

POST `/v1/data-orders/{identity}/cancel`Cancel

Required scopes: `data:purchase` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView) | [`ReviewDelivery`](https://startwave.io/docs/api/#schema-ReviewDelivery) | [`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_v1_data_orders__identity__cancel_post)

GET `/v1/data-orders/{identity}/download`Download

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

text/csv

`string`

application/json

`string`

application/x-ndjson

`string`

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

`string`

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-download_v1_data_orders__identity__download_get)

POST `/v1/data-orders/{identity}/resume`Resume

Required scopes: `data:purchase` `spending:write`

Deliberately settle the original authorized purchase using its frozen inputs, policy and spending ceiling. No request body or new purchase key is needed; repeating a terminal order returns its original receipt. Does not fetch source data or charge a payment card. Source unlock, refresh and enrichment originals additionally require search:read and contacts:write; review originals require contacts:read. Job-owned orders must resume through their revision-checked job instead.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Original order no longer awaiting funds.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data order. |

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView) | [`ReviewDelivery`](https://startwave.io/docs/api/#schema-ReviewDelivery) | [`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase)

`202` Original order awaits data funds and deliberate continuation. Reading it does not resume it.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Location`Optional  | `string` Relative URI of the original data order. |

application/json

[`OrderView`](https://startwave.io/docs/api/#schema-OrderView) | [`ReviewPurchase`](https://startwave.io/docs/api/#schema-ReviewPurchase)

`429` New unfunded purchase exceeds pending-order capacity. No new order or debit is committed; fund, resume or cancel original purchases before retrying. Funded work and original recovery remain available.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds before retrying admission. |

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-resume_v1_data_orders__identity__resume_post)

### Import capabilities1 operations

GET `/v1/import-capabilities`Capabilities

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Responses

`200` Successful Response

application/json

[`ImportCapabilities`](https://startwave.io/docs/api/#schema-ImportCapabilities)

[Link to this endpoint](https://startwave.io/docs/api/#operation-capabilities_v1_import_capabilities_get)

### Imports9 operations

GET `/v1/imports`History

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `sort`Optional query  | `"created_at" \| "state"` Default: `"created_at"`  |
| `order`Optional query  | `"asc" \| "desc"` Default: `"desc"`  |
| `category`Optional query  | `"contacts" \| "suppressions"` Default: `"contacts"`  |

#### Responses

`200` Successful Response

application/json

[`Page_ImportView_`](https://startwave.io/docs/api/#schema-Page_ImportView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_v1_imports_get)

POST `/v1/imports`Create

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`ImportCreate`](https://startwave.io/docs/api/#schema-ImportCreate)

| Field | Type and constraints |
| --- | --- |
| `entity_type`Optional  | `"person" \| "company"` \| `null` |
| `kind`Required  | `"records" \| "identifiers" \| "ids" \| "suppressions" \| "contact_history"` |
| `defaults`Optional  | [`SuppressionDefaults`](https://startwave.io/docs/api/#schema-SuppressionDefaults) \| `null` |
| `history_source`Optional  | `string` \| `null` Optional immutable source label for contact-history rows without their own source column. |
| `format`Optional  | `"ndjson" \| "csv"` Default: `"ndjson"`  |
| `columns`Optional  | `object` |
| `max_rows`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `max_bytes`Required  | `integer` Minimum: `1.0` · Maximum: `8589934592.0`  |

#### Responses

`200` Successful Response

application/json

[`ImportView`](https://startwave.io/docs/api/#schema-ImportView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_v1_imports_post)

GET `/v1/imports/by-key`By Key

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`ImportView`](https://startwave.io/docs/api/#schema-ImportView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_v1_imports_by_key_get)

GET `/v1/imports/{identity}`Original

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`ImportView`](https://startwave.io/docs/api/#schema-ImportView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_imports__identity__get)

POST `/v1/imports/{identity}/cancel`Cancel

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`ImportView`](https://startwave.io/docs/api/#schema-ImportView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_v1_imports__identity__cancel_post)

GET `/v1/imports/{identity}/chunks/{position}`Chunk

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `position`Required path  | `integer` Minimum: `0`  |

#### Responses

`200` Successful Response

application/json

[`ChunkView`](https://startwave.io/docs/api/#schema-ChunkView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-chunk_v1_imports__identity__chunks__position__get)

PUT `/v1/imports/{identity}/chunks/{position}`Upload

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `position`Required path  | `integer` Minimum: `0`  |

#### Request body Required

text/csv

`string`

application/x-ndjson

`string`

#### Responses

`200` Successful Response

application/json

[`ChunkView`](https://startwave.io/docs/api/#schema-ChunkView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-upload_v1_imports__identity__chunks__position__put)

GET `/v1/imports/{identity}/rows`Rows

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `5000000`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ImportRows`](https://startwave.io/docs/api/#schema-ImportRows)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-rows_v1_imports__identity__rows_get)

POST `/v1/imports/{identity}/seal`Seal

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:write`.

`suppressions` requires `suppressions:write`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Request body Required

application/json

[`ImportSeal`](https://startwave.io/docs/api/#schema-ImportSeal)

| Field | Type and constraints |
| --- | --- |
| `expected_chunks`Required  | `integer` Minimum: `1.0` · Maximum: `50000.0`  |
| `expected_rows`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `allow_invalid_rows`Optional  | `boolean` Default: `false`  |

#### Responses

`200` Successful Response

application/json

[`ImportView`](https://startwave.io/docs/api/#schema-ImportView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-seal_v1_imports__identity__seal_post)

### Inbox3 operations

GET `/inbox`Inbox

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `1000`  |
| `cursor`Optional query  | `string` Default: `""`  |

#### Responses

`200` Successful Response

application/json

[`InboxPage`](https://startwave.io/docs/api/#schema-InboxPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inbox_inbox_get)

GET `/inbox/review`Reply Review Queue

Required scopes: `inbox:read`

Page recorded reply intents without making mutable intent part of the ordering key.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `before`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `intent`Optional query  | `"all" \| "needs_review" \| "interested" \| "not_interested" \| "opt_out" \| "out_of_office" \| "automated" \| "recipient_unavailable"` Default: `"needs_review"`  |
| `archive`Optional query  | `"current" \| "archived" \| "all"` Default: `"current"`  |
| `pending`Optional query  | `boolean` Default: `false`  |
| `read`Optional query  | `"all" \| "read" \| "unread"` Default: `"all"`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ReplyReviewQueue`](https://startwave.io/docs/api/#schema-ReplyReviewQueue)

##### Synthetic intent review with unavailable classifier evidence; not an empty or successful classification.

Supplied JSON example

```
{
  "items": [
    {
      "event_id": "one-a",
      "intent": "needs_review",
      "revision": 1,
      "received_at": 1791633600,
      "conversation": "conversation-example",
      "status": "needs_reply",
      "conversation_revision": 2,
      "last_inbound_seq": 1,
      "attention_seq": 1,
      "archived": 0,
      "unread": 1,
      "email": "one@example.test",
      "campaign": "campaign-one",
      "campaign_name": "campaign-one",
      "classifier_state": null,
      "suggestion": null,
      "choice_confidence": null,
      "explicit_opt_out": null,
      "classifier_error": null,
      "classifier_updated_at": null,
      "classifier_origin": null,
      "reason": null,
      "probabilities": null
    }
  ],
  "next_cursor": null,
  "review_revision": 1
}
```

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-reply_review_queue_inbox_review_get)

PATCH `/inbox/{event_id}/intent`Reply Intent

Required scopes: `inbox:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `event_id`Required path  | `string` |

#### Request body Required

application/json

[`ReplyIntentIn`](https://startwave.io/docs/api/#schema-ReplyIntentIn)

| Field | Type and constraints |
| --- | --- |
| `intent`Required  | `"needs_review" \| "interested" \| "not_interested" \| "opt_out" \| "out_of_office" \| "automated" \| "recipient_unavailable"` |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |

#### Responses

`200` Successful Response

application/json

[`IntentResult`](https://startwave.io/docs/api/#schema-IntentResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-reply_intent_inbox__event_id__intent_patch)

### Jobs1 operations

GET `/jobs/{jid}/retries`History

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `jid`Required path  | `string` |
| `after`Optional query  | `string` Default: `""`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`RetryPage`](https://startwave.io/docs/api/#schema-RetryPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_jobs__jid__retries_get)

### Ledger1 operations

GET `/ledger`Ledger

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `1000`  |
| `cursor`Optional query  | `string` Default: `""`  |

#### Responses

`200` Historical sending-wallet entries, not subscription invoices or the contact data balance. Use /billing/history for bounded date-filtered reads.

application/json

[`LedgerPage`](https://startwave.io/docs/api/#schema-LedgerPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-ledger_ledger_get)

### Lists10 operations

GET `/v1/lists`Lists

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `state`Optional query  | `"active" \| "archived" \| "all"` Default: `"active"`  |
| `name_prefix`Optional query  | `string` Default: `""` · Max length: `200`  |
| `sort`Optional query  | `"id" \| "name" \| "updated_at"` Default: `"id"`  |
| `order`Optional query  | `"asc" \| "desc"` Default: `"asc"`  |
| `entity_type`Optional query  | `"person" \| "company"` \| `null` |
| `q`Optional query  | `string` Literal Unicode-folded substring of the List name. Examines at most 1000 indexed candidates; follow next_cursor even on empty pages. Default: `""` · Max length: `200`  |
| `record_id`Optional query  | `string` \| `null` Lists containing this workspace record; requires entity_type and ID sort. Sparse state filters may return an empty page with a cursor. |

#### Responses

`200` Successful Response

application/json

[`Page_ListView_`](https://startwave.io/docs/api/#schema-Page_ListView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-lists_v1_lists_get)

POST `/v1/lists`Create List

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`ListCreate`](https://startwave.io/docs/api/#schema-ListCreate)

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `entity_type`Required  | `"person" \| "company"` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_list_v1_lists_post)

GET `/v1/lists/{identity}`Listing

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`ListView`](https://startwave.io/docs/api/#schema-ListView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-listing_v1_lists__identity__get)

PATCH `/v1/lists/{identity}`Edit List

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`ListEdit`](https://startwave.io/docs/api/#schema-ListEdit)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `name`Optional  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-edit_list_v1_lists__identity__patch)

GET `/v1/lists/{identity}/campaigns`Listing Campaigns

Required scopes: `contacts:read` `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`Page_ListCampaign_`](https://startwave.io/docs/api/#schema-Page_ListCampaign_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-listing_campaigns_v1_lists__identity__campaigns_get)

GET `/v1/lists/{identity}/members`Members

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`Page_Union_PersonView__CompanyView__`](https://startwave.io/docs/api/#schema-Page_Union_PersonView__CompanyView__)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-members_v1_lists__identity__members_get)

POST `/v1/lists/{identity}/membership-changes`Change Members

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`MembershipChange`](https://startwave.io/docs/api/#schema-MembershipChange)

| Field | Type and constraints |
| --- | --- |
| `expected_membership_revision`Required  | `integer` |
| `action`Required  | `"add" \| "remove"` |
| `ids`Required  | array of `string` Min items: `1` · Max items: `200`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-change_members_v1_lists__identity__membership_changes_post)

GET `/v1/lists/{identity}/source-check-policy`Status

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`CheckPolicyView`](https://startwave.io/docs/api/#schema-CheckPolicyView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_v1_lists__identity__source_check_policy_get)

PATCH `/v1/lists/{identity}/source-check-policy`Update

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`CheckPolicyDisable`](https://startwave.io/docs/api/#schema-CheckPolicyDisable)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `0.0`  |
| `enabled`Required  | `false` |
| `terms`Optional  | `null` |

#### Responses

`200` Successful Response

application/json

[`CheckPolicyView`](https://startwave.io/docs/api/#schema-CheckPolicyView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-update_v1_lists__identity__source_check_policy_patch)

GET `/v1/lists/{identity}/source-check-rounds`History

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`Page_CheckRoundView_`](https://startwave.io/docs/api/#schema-Page_CheckRoundView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_v1_lists__identity__source_check_rounds_get)

### Members1 operations

GET `/members`Members

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `128`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`WorkspaceMembers`](https://startwave.io/docs/api/#schema-WorkspaceMembers)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-members_members_get)

### Operations2 operations

GET `/v1/operations/by-key`Operation By Key

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `kind`Required query  | `"people.create" \| "people.edit" \| "companies.create" \| "companies.edit" \| "lists.create" \| "lists.edit" \| "lists.membership" \| "people.save_source" \| "companies.save_source" \| "people.check_source" \| "companies.check_source" \| "people.refresh_preview" \| "companies.refresh_preview" \| "searches.create" \| "searches.edit" \| "search_sets.create" \| "search_sets.edit" \| "data_jobs.resume" \| "data_jobs.confirm"` |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-operation_by_key_v1_operations_by_key_get)

GET `/v1/operations/{identity}`Operation

Required scopes: Resource-dependent.

Resource scopes

`contacts` requires `contacts:read`.

`suppressions` requires `suppressions:read`.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-operation_v1_operations__identity__get)

### People3 operations

POST `/v1/people/lookup`Lookup People

Required scopes: `search:read`

#### Request body Required

application/json

[`SourceLookup`](https://startwave.io/docs/api/#schema-SourceLookup)

| Field | Type and constraints |
| --- | --- |
| `ids`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `id_type`Optional  | `"source" \| "record"` Default: `"source"`  |

#### Responses

`200` Successful Response

application/json

[`LookupResult_PersonPreview_`](https://startwave.io/docs/api/#schema-LookupResult_PersonPreview_)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1.0`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-lookup_people_v1_people_lookup_post)

POST `/v1/people/resolve`Resolve People

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Optional header  | `string` \| `null` Required for multiple inputs; preserves the frozen result across retries. |

#### Request body Required

application/json

[`ResolveRequest`](https://startwave.io/docs/api/#schema-ResolveRequest)

| Field | Type and constraints |
| --- | --- |
| `inputs`Required  | array of [`ResolveInput`](https://startwave.io/docs/api/#schema-ResolveInput) Min items: `1` · Max items: `100`  |

#### Responses

`200` Successful Response

application/json

[`ResolvePage`](https://startwave.io/docs/api/#schema-ResolvePage)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`202` Matching continues on the same result set. Repeat the same body and Idempotency-Key to read progress without starting another lookup.

application/json

[`ResolvePage`](https://startwave.io/docs/api/#schema-ResolvePage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-resolve_people_v1_people_resolve_post)

GET `/v1/people/{identity}`Person

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `id_type`Optional query  | `"source" \| "record"` Default: `"source"`  |

#### Responses

`200` Successful Response

application/json

[`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-person_v1_people__identity__get)

### Replies3 operations

POST `/replies`Reply

Required scopes: `inbox:write` `spending:write`

#### Request body Required

application/json

[`ReplyIn`](https://startwave.io/docs/api/#schema-ReplyIn)

| Field | Type and constraints |
| --- | --- |
| `source_event`Optional  | `string` \| `null` |
| `recipients`Optional  | array of `string` \| `null` |
| `expected_send_price_cents`Optional  | `integer` \| `null` |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `message_id`Required  | `string` Min length: `1` · Max length: `256`  |
| `subject`Required  | `string` Min length: `1` · Max length: `500`  |
| `body`Required  | `string` Literal plain-text body for a new human reply; not a campaign template. Reuse the exact original payload and ID to recover an existing reply. Min length: `1` · Max length: `100000`  |
| `html`Optional  | `string` Recovery-only for an already-recorded exact original. Must be empty for a new human reply; nonempty HTML is rejected with plain_text_reply_required before admission. Default: `""` · Max length: `100000`  |
| `attachments`Optional  | array of `object` Recovery-only for an already-recorded exact original. Must be empty for a new human reply; outgoing files are rejected with plain_text_reply_required. Incoming downloads are a separate read capability. Max items: `3`  |

#### Responses

`200` Successful Response

application/json

[`ReplyResult`](https://startwave.io/docs/api/#schema-ReplyResult)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-reply_replies_post)

POST `/replies/{jid}/review`Reply Review

Required scopes: `inbox:write` `spending:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `jid`Required path  | `string` |

#### Request body Required

application/json

[`ReviewIn`](https://startwave.io/docs/api/#schema-ReviewIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `0.0`  |
| `action`Required  | `"authorize" \| "cancel"` |
| `expected_send_price_cents`Optional  | `integer` \| `null` |

#### Responses

`200` Successful Response

application/json

[`ReplyReviewReceipt`](https://startwave.io/docs/api/#schema-ReplyReviewReceipt)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-reply_review_replies__jid__review_post)

GET `/replies/{jid}/reviews`History

Required scopes: `inbox:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `jid`Required path  | `string` |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`ReplyReviewHistory`](https://startwave.io/docs/api/#schema-ReplyReviewHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_replies__jid__reviews_get)

### Saved searches4 operations

GET `/v1/saved-searches`Searches

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `state`Optional query  | `"active" \| "archived"` Default: `"active"`  |
| `q`Optional query  | `string` Literal NFKC/casefolded, whitespace-normalized name substring. At most 1000 indexed candidates per page; follow next_cursor even on empty pages. Live ID traversal, not frozen membership. Default: `""` · Max length: `200`  |

#### Responses

`200` Successful Response

application/json

[`Page_SavedSearchView_`](https://startwave.io/docs/api/#schema-Page_SavedSearchView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-searches_v1_saved_searches_get)

POST `/v1/saved-searches`Create

Required scopes: `contacts:write` `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SavedSearchCreate`](https://startwave.io/docs/api/#schema-SavedSearchCreate)

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `entity_type`Required  | `"person" \| "company"` |
| `query`Required  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_v1_saved_searches_post)

GET `/v1/saved-searches/{identity}`Search

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`SavedSearchView`](https://startwave.io/docs/api/#schema-SavedSearchView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-search_v1_saved_searches__identity__get)

PATCH `/v1/saved-searches/{identity}`Edit

Required scopes: `contacts:write` `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`SavedSearchEdit`](https://startwave.io/docs/api/#schema-SavedSearchEdit)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `name`Optional  | `string` \| `null` |
| `query`Optional  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-edit_v1_saved_searches__identity__patch)

### Schema1 operations

GET `/v1/schema`Schema

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `data_source`Optional query  | `"people" \| "companies"` Default: `"people"`  |

#### Responses

`200` Successful Response

application/json

[`CatalogueSchema`](https://startwave.io/docs/api/#schema-CatalogueSchema)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-schema_v1_schema_get)

### Search3 operations

POST `/v1/search`Search

Required scopes: `search:read`

#### Request body Required

application/json

[`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) | [`SearchNext`](https://startwave.io/docs/api/#schema-SearchNext)

#### Responses

`200` Successful Response

application/json

[`SearchPage`](https://startwave.io/docs/api/#schema-SearchPage)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1.0`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-search_v1_search_post)

POST `/v1/search/facets`Facets

Required scopes: `search:read`

Conditional scopes

`query.ownership=saved|net_new` requires `contacts:read`.

#### Request body Required

application/json

[`FacetRequest`](https://startwave.io/docs/api/#schema-FacetRequest)

| Field | Type and constraints |
| --- | --- |
| `query`Required  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) |
| `field`Required  | `string` Min length: `1` · Max length: `80`  |
| `text`Optional  | `string` Default: `""` · Max length: `80` · Pattern: `"^[^\\x00-\\x1f\\x7f]*$"`  |
| `limit`Optional  | `integer` Default: `50` · Minimum: `1.0` · Maximum: `100.0`  |

#### Responses

`200` Successful Response

application/json

[`FacetPage`](https://startwave.io/docs/api/#schema-FacetPage)

`429` Workspace discovery or request capacity exhausted; preserve the query and offer explicit retry.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Retry-After`Optional  | `integer` Seconds until retry may be attempted. Minimum: `1.0`  |

application/json

[`SearchRateLimit`](https://startwave.io/docs/api/#schema-SearchRateLimit)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-facets_v1_search_facets_post)

DELETE `/v1/search/results/{identity}`Close

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`204` Successful Response

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-close_v1_search_results__identity__delete)

### Search sets4 operations

GET `/v1/search-sets`Listing

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `state`Optional query  | `"active" \| "archived"` Default: `"active"`  |
| `q`Optional query  | `string` Literal NFKC/casefolded, whitespace-normalized name substring. At most 1000 indexed candidates per page; follow next_cursor even on empty pages. Live ID traversal, not frozen membership. Default: `""` · Max length: `200`  |

#### Responses

`200` Successful Response

application/json

[`Page_DomainSetView_`](https://startwave.io/docs/api/#schema-Page_DomainSetView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-listing_v1_search_sets_get)

POST `/v1/search-sets`Create

Required scopes: `contacts:write` `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`DomainSetCreate`](https://startwave.io/docs/api/#schema-DomainSetCreate)

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200` · Pattern: `"\\S"`  |
| `format`Required  | `"csv" \| "lines"` |
| `content`Required  | `string` Min length: `1` · Max length: `4194304`  |
| `allow_invalid_rows`Optional  | `boolean` Default: `false`  |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-create_v1_search_sets_post)

GET `/v1/search-sets/{identity}`Original

Required scopes: `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`DomainSetView`](https://startwave.io/docs/api/#schema-DomainSetView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_search_sets__identity__get)

PATCH `/v1/search-sets/{identity}`Edit

Required scopes: `contacts:write` `search:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `Idempotency-Key`Required header  | `string` Min length: `8` · Max length: `128` · Pattern: `"^[A-Za-z0-9_-]+$"`  |

#### Request body Required

application/json

[`DomainSetEdit`](https://startwave.io/docs/api/#schema-DomainSetEdit)

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `name`Optional  | `string` \| `null` |

#### Responses

`200` Successful Response

application/json

[`Operation`](https://startwave.io/docs/api/#schema-Operation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-edit_v1_search_sets__identity__patch)

### Selections6 operations

GET `/v1/selections`History

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`Page_SelectionView_`](https://startwave.io/docs/api/#schema-Page_SelectionView_)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-history_v1_selections_get)

GET `/v1/selections/by-key`By Key

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `key`Required query  | `string` Min length: `8` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`SelectionView`](https://startwave.io/docs/api/#schema-SelectionView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-by_key_v1_selections_by_key_get)

GET `/v1/selections/{identity}`Original

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`SelectionView`](https://startwave.io/docs/api/#schema-SelectionView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-original_v1_selections__identity__get)

POST `/v1/selections/{identity}/cancel`Cancel

Required scopes: `contacts:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

#### Responses

`200` Successful Response

application/json

[`SelectionView`](https://startwave.io/docs/api/#schema-SelectionView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_v1_selections__identity__cancel_post)

GET `/v1/selections/{identity}/previews`Preview Page

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `2048`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`SelectionPreviewPage`](https://startwave.io/docs/api/#schema-SelectionPreviewPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-preview_page_v1_selections__identity__previews_get)

GET `/v1/selections/{identity}/rows`Rows

Required scopes: `contacts:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `after`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `5000000`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ImportRows`](https://startwave.io/docs/api/#schema-ImportRows)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-rows_v1_selections__identity__rows_get)

### Send calendar1 operations

GET `/send-calendar`Customer Calendar

Required scopes: `campaigns:read`

Pagination exception: partition=day returns bounded rows independently for each local day. The root next_cursor is null even when a day has has_more=true. To continue that day, request its local start/end boundaries with partition=range and the same timezone, campaign, view and projection filters, then follow the returned next_cursor with those day-range parameters unchanged until it is null. A null root cursor on partition=day does not mean all day rows have been loaded.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `start`Required query  | `string` Format: `"date-time"`  |
| `end`Required query  | `string` Format: `"date-time"`  |
| `timezone`Optional query  | `string` Default: `""` · Max length: `128`  |
| `campaign`Optional query  | `string` Default: `""` · Max length: `128`  |
| `cursor`Optional query  | `string` Default: `""` · Max length: `4096`  |
| `limit`Optional query  | `integer` Default: `100` · Minimum: `1` · Maximum: `500`  |
| `view`Optional query  | `"all" \| "history" \| "planned"` Default: `"all"`  |
| `projection`Optional query  | `"eligibility" \| "estimated"` Default: `"eligibility"`  |
| `partition`Optional query  | `"range" \| "day"` Default: `"range"`  |

#### Responses

`200` Successful Response

application/json

[`CalendarPage`](https://startwave.io/docs/api/#schema-CalendarPage)

`409` Invalid range/timezone/cursor, changed estimate or unavailable campaign; inspect detail.code

application/json

[`ProjectionConflict`](https://startwave.io/docs/api/#schema-ProjectionConflict)

`503` Read capacity or storage temporarily unavailable; inspect detail.code and Retry-After

application/json

[`ProjectionConflict`](https://startwave.io/docs/api/#schema-ProjectionConflict)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-customer_calendar_send_calendar_get)

### Sender identities1 operations

GET `/sender-identities`Identities

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `320`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `100`  |

#### Responses

`200` Successful Response

application/json

[`SenderIdentityPage`](https://startwave.io/docs/api/#schema-SenderIdentityPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-identities_sender_identities_get)

### Starts3 operations

GET `/starts/{identity}`Start Status

Required scopes: `campaigns:read`

Read an original legacy Start and any retained-capacity recovery options.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CampaignStartResponse`](https://startwave.io/docs/api/#schema-CampaignStartResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-start_status_starts__identity__get)

POST `/starts/{identity}/cancel`Cancel Start

Required scopes: `campaigns:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CampaignStartResponse`](https://startwave.io/docs/api/#schema-CampaignStartResponse)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_start_starts__identity__cancel_post)

POST `/starts/{identity}/release-capacity`Release Failed Start

Required scopes: `campaigns:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`CapacityRelease`](https://startwave.io/docs/api/#schema-CapacityRelease)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-release_failed_start_starts__identity__release_capacity_post)

### Suppressions6 operations

GET `/suppressions`Collection

Required scopes: `suppressions:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `320`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |
| `scope`Optional query  | `"email" \| "domain"` Default: `"email"`  |

#### Responses

`200` Successful Response

application/json

[`ExclusionPage`](https://startwave.io/docs/api/#schema-ExclusionPage)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-collection_suppressions_get)

POST `/suppressions`Exclude

Required scopes: `suppressions:write`

#### Request body Required

application/json

[`ExclusionIn`](https://startwave.io/docs/api/#schema-ExclusionIn)

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `email`Optional  | `string` \| `null` |
| `domain`Optional  | `string` \| `null` |
| `reason`Required  | `string` Min length: `1` · Max length: `500` · Pattern: `"\\S"`  |
| `evidence`Required  | `string` Min length: `1` · Max length: `2000` · Pattern: `"\\S"`  |

#### Responses

`200` Successful Response

application/json

[`ExclusionOriginal`](https://startwave.io/docs/api/#schema-ExclusionOriginal)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-exclude_suppressions_post)

POST `/suppressions/batch`Batch

Required scopes: `suppressions:write`

#### Request body Required

application/json

[`ExclusionBatchIn`](https://startwave.io/docs/api/#schema-ExclusionBatchIn)

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ExclusionIn`](https://startwave.io/docs/api/#schema-ExclusionIn) Min items: `1` · Max items: `200`  |

#### Responses

`200` Successful Response

application/json

[`ExclusionResults`](https://startwave.io/docs/api/#schema-ExclusionResults)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-batch_suppressions_batch_post)

GET `/suppressions/export`Export

Required scopes: `suppressions:read`

Download one bounded CSV page of workspace exclusions. Pass X-Next-Cursor as after for the next page. Formula-leading CSV cells are escaped; GET /suppressions provides the lossless JSON alternative with the same scope and keyset cursor.

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `after`Optional query  | `string` Default: `""` · Max length: `320`  |
| `limit`Optional query  | `integer` Default: `200` · Minimum: `1` · Maximum: `1000`  |
| `scope`Optional query  | `"email" \| "domain"` Default: `"email"`  |

#### Responses

`200` CSV page ordered by the excluded email or domain.

##### Response headers

| Field | Type and constraints |
| --- | --- |
| `Content-Disposition`Optional  | `string` Attachment filename for the selected scope. |
| `X-Next-Cursor`Optional  | `string` Pass as after to continue; empty at the end of the list. |
| `X-Export-Consistency`Optional  | `"live-keyset"` Live keyset traversal, not a frozen snapshot. |

text/csv

`string`

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-export_suppressions_export_get)

GET `/suppressions/operations`Operations

Required scopes: `suppressions:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `before`Optional query  | `integer` Default: `0` · Minimum: `0` · Maximum: `9007199254740991`  |
| `limit`Optional query  | `integer` Default: `50` · Minimum: `1` · Maximum: `200`  |

#### Responses

`200` Successful Response

application/json

[`ExclusionHistory`](https://startwave.io/docs/api/#schema-ExclusionHistory)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-operations_suppressions_operations_get)

GET `/suppressions/operations/{identity}`Operation

Required scopes: `suppressions:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`ExclusionOriginal`](https://startwave.io/docs/api/#schema-ExclusionOriginal)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-operation_suppressions_operations__identity__get)

### Usage1 operations

GET `/usage`Usage

Required scopes: `usage:read`

#### Responses

`200` Sending-wallet projection with at most 100 recent entries. Not the sending subscription, data balance or an all-time ledger page.

application/json

[`WalletUsage`](https://startwave.io/docs/api/#schema-WalletUsage)

[Link to this endpoint](https://startwave.io/docs/api/#operation-usage_usage_get)

### Verification2 operations

GET `/verification/batches/{identity}`Status

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`VerificationBatchView`](https://startwave.io/docs/api/#schema-VerificationBatchView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-status_verification_batches__identity__get)

POST `/verification/batches/{identity}/cancel`Cancel

Required scopes: `audiences:write`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`VerificationBatchView`](https://startwave.io/docs/api/#schema-VerificationBatchView)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-cancel_verification_batches__identity__cancel_post)

### Workspace3 operations

GET `/workspace/sending-outlook`Read Sending Outlook

Required scopes: `campaigns:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `projection`Optional query  | `"eligibility" \| "estimated"` Default: `"eligibility"`  |
| `timezone`Optional query  | `string` Default: `""` · Max length: `128`  |

#### Responses

`200` Successful Response

application/json

[`SendingOutlook`](https://startwave.io/docs/api/#schema-SendingOutlook)

`409` Invalid projection timezone or current projection conflict; inspect detail.code

application/json

[`ProjectionConflict`](https://startwave.io/docs/api/#schema-ProjectionConflict)

`503` Read capacity or storage temporarily unavailable; inspect detail.code and Retry-After

application/json

[`ProjectionConflict`](https://startwave.io/docs/api/#schema-ProjectionConflict)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_sending_outlook_workspace_sending_outlook_get)

GET `/workspace/sending-policy`Read

Required scopes: `usage:read`

#### Responses

`200` Successful Response

application/json

[`PolicyStatus`](https://startwave.io/docs/api/#schema-PolicyStatus)

[Link to this endpoint](https://startwave.io/docs/api/#operation-read_workspace_sending_policy_get)

GET `/workspace/sending-policy/operations/{identity}`Inspect

Required scopes: `usage:read`

#### Parameters

| Field | Type and constraints |
| --- | --- |
| `identity`Required path  | `string` |

#### Responses

`200` Successful Response

application/json

[`SendingPolicyOperation`](https://startwave.io/docs/api/#schema-SendingPolicyOperation)

`422` Validation Error

application/json

[`HTTPValidationError`](https://startwave.io/docs/api/#schema-HTTPValidationError)

[Link to this endpoint](https://startwave.io/docs/api/#operation-inspect_workspace_sending_policy_operations__identity__get)

No endpoints match. Try a method, resource name or scope.

## Request & response models

Exact definitions from the supplied OpenAPI document. Follow a model link from an endpoint, or find a model by name or field.

492 models

`AccountLimit`

`object`

| Field | Type and constraints |
| --- | --- |
| `daily_limit`Required  | `integer` |
| `revision`Required  | `integer` |
| `day`Required  | `string` |
| `clock`Required  | `"UTC"` |
| `committed`Required  | `integer` |
| `remaining`Required  | `integer` |
| `semantics`Required  | `"authorized_daily_capacity"` |
| `capacity_operation`Optional  | `string` \| `null` |
| `capacity_valid_until`Optional  | `number` \| `null` |
| `sending_pools`Required  | array of [`SendingPoolCapacity`](https://startwave.io/docs/api/#schema-SendingPoolCapacity) Max items: `3`  |
| `active_campaigns`Required  | `integer` |
| `requested_daily_sends`Required  | `integer` |
| `configured_campaigns`Required  | `integer` |
| `configured_daily_sends`Required  | `integer` |
| `allocation`Required  | [`AllocationState`](https://startwave.io/docs/api/#schema-AllocationState) \| `null` |
| `items`Required  | array of [`AccountLimitCampaign`](https://startwave.io/docs/api/#schema-AccountLimitCampaign) Max items: `25`  |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "daily_limit": {
      "type": "integer",
      "title": "Daily Limit"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "day": {
      "type": "string",
      "title": "Day"
    },
    "clock": {
      "type": "string",
      "const": "UTC",
      "title": "Clock"
    },
    "committed": {
      "type": "integer",
      "title": "Committed"
    },
    "remaining": {
      "type": "integer",
      "title": "Remaining"
    },
    "semantics": {
      "type": "string",
      "const": "authorized_daily_capacity",
      "title": "Semantics"
    },
    "capacity_operation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Operation"
    },
    "capacity_valid_until": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Valid Until"
    },
    "sending_pools": {
      "items": {
        "$ref": "#/components/schemas/SendingPoolCapacity"
      },
      "type": "array",
      "maxItems": 3,
      "title": "Sending Pools"
    },
    "active_campaigns": {
      "type": "integer",
      "title": "Active Campaigns"
    },
    "requested_daily_sends": {
      "type": "integer",
      "title": "Requested Daily Sends"
    },
    "configured_campaigns": {
      "type": "integer",
      "title": "Configured Campaigns"
    },
    "configured_daily_sends": {
      "type": "integer",
      "title": "Configured Daily Sends"
    },
    "allocation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/AllocationState"
        },
        {
          "type": "null"
        }
      ]
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/AccountLimitCampaign"
      },
      "type": "array",
      "maxItems": 25,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "daily_limit",
    "revision",
    "day",
    "clock",
    "committed",
    "remaining",
    "semantics",
    "sending_pools",
    "active_campaigns",
    "requested_daily_sends",
    "configured_campaigns",
    "configured_daily_sends",
    "allocation",
    "items",
    "next_cursor"
  ],
  "title": "AccountLimit"
}
```

`AccountLimitCampaign`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `daily_limit`Required  | `integer` |
| `revision`Required  | `integer` |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` Default: `"mailbox"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "daily_limit": {
      "type": "integer",
      "title": "Daily Limit"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "sending_pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Sending Pool",
      "default": "mailbox"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "name",
    "daily_limit",
    "revision"
  ],
  "title": "AccountLimitCampaign"
}
```

`AdmissionConfirmIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `review_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "review_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Review Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "review_id"
  ],
  "title": "AdmissionConfirmIn"
}
```

`AdmissionCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `examined`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `added`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `held`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `already_admitted`Optional  | `integer` Default: `0` · Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "examined": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Examined",
      "default": 0
    },
    "added": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Added",
      "default": 0
    },
    "held": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Held",
      "default": 0
    },
    "already_admitted": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Already Admitted",
      "default": 0
    }
  },
  "type": "object",
  "title": "AdmissionCounts"
}
```

`AdmissionHistoryItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign_id`Required  | `string` |
| `actor`Required  | `string` |
| `created_at`Required  | `number` |
| `state`Optional  | `"completed"` Default: `"completed"`  |
| `added`Required  | `integer` |
| `held`Required  | `integer` |
| `already_admitted`Required  | `integer` |
| `campaign_revision`Required  | `integer` |
| `audience_revision`Required  | `integer` |
| `refill_id`Required  | `string` \| `null` |
| `send_budget_added_cents`Required  | `integer` |
| `included`Optional  | array of [`IncludedAdmission`](https://startwave.io/docs/api/#schema-IncludedAdmission) |
| `examined`Required  | `integer` |
| `sources`Required  | array of [`AdmissionSourceCounts`](https://startwave.io/docs/api/#schema-AdmissionSourceCounts) |
| `held_reasons`Required  | `object` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "state": {
      "type": "string",
      "const": "completed",
      "title": "State",
      "default": "completed"
    },
    "added": {
      "type": "integer",
      "title": "Added"
    },
    "held": {
      "type": "integer",
      "title": "Held"
    },
    "already_admitted": {
      "type": "integer",
      "title": "Already Admitted"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "refill_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Refill Id"
    },
    "send_budget_added_cents": {
      "type": "integer",
      "title": "Send Budget Added Cents"
    },
    "included": {
      "items": {
        "$ref": "#/components/schemas/IncludedAdmission"
      },
      "type": "array",
      "title": "Included"
    },
    "examined": {
      "type": "integer",
      "title": "Examined"
    },
    "sources": {
      "items": {
        "$ref": "#/components/schemas/AdmissionSourceCounts"
      },
      "type": "array",
      "title": "Sources"
    },
    "held_reasons": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Held Reasons"
    }
  },
  "type": "object",
  "required": [
    "id",
    "campaign_id",
    "actor",
    "created_at",
    "added",
    "held",
    "already_admitted",
    "campaign_revision",
    "audience_revision",
    "refill_id",
    "send_budget_added_cents",
    "examined",
    "sources",
    "held_reasons"
  ],
  "title": "AdmissionHistoryItem"
}
```

`AdmissionHistoryPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `as_of`Required  | `number` |
| `count_basis`Optional  | `"confirmed_review_occurrences_in_page"` Default: `"confirmed_review_occurrences_in_page"`  |
| `items`Required  | array of [`AdmissionHistoryItem`](https://startwave.io/docs/api/#schema-AdmissionHistoryItem) |
| `totals`Required  | [`AdmissionCounts`](https://startwave.io/docs/api/#schema-AdmissionCounts) |
| `sources`Required  | array of [`AdmissionSourceCounts`](https://startwave.io/docs/api/#schema-AdmissionSourceCounts) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "as_of": {
      "type": "number",
      "title": "As Of"
    },
    "count_basis": {
      "type": "string",
      "const": "confirmed_review_occurrences_in_page",
      "title": "Count Basis",
      "default": "confirmed_review_occurrences_in_page"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/AdmissionHistoryItem"
      },
      "type": "array",
      "title": "Items"
    },
    "totals": {
      "$ref": "#/components/schemas/AdmissionCounts"
    },
    "sources": {
      "items": {
        "$ref": "#/components/schemas/AdmissionSourceCounts"
      },
      "type": "array",
      "title": "Sources"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "as_of",
    "items",
    "totals",
    "sources",
    "next_cursor"
  ],
  "title": "AdmissionHistoryPage"
}
```

`AdmissionItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `person_id`Required  | `string` |
| `source_ids`Required  | array of `string` |
| `outcome`Required  | `"eligible" \| "held" \| "already_admitted"` |
| `reason`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "person_id": {
      "type": "string",
      "title": "Person Id"
    },
    "source_ids": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Source Ids"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "eligible",
        "held",
        "already_admitted"
      ],
      "title": "Outcome"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    }
  },
  "type": "object",
  "required": [
    "person_id",
    "source_ids",
    "outcome"
  ],
  "title": "AdmissionItem"
}
```

`AdmissionResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign_id`Required  | `string` |
| `actor`Required  | `string` |
| `created_at`Required  | `number` |
| `state`Optional  | `"completed"` Default: `"completed"`  |
| `added`Required  | `integer` |
| `held`Required  | `integer` |
| `already_admitted`Required  | `integer` |
| `campaign_revision`Required  | `integer` |
| `audience_revision`Required  | `integer` |
| `refill_id`Required  | `string` \| `null` |
| `send_budget_added_cents`Required  | `integer` |
| `included`Optional  | array of [`IncludedAdmission`](https://startwave.io/docs/api/#schema-IncludedAdmission) |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "state": {
      "type": "string",
      "const": "completed",
      "title": "State",
      "default": "completed"
    },
    "added": {
      "type": "integer",
      "title": "Added"
    },
    "held": {
      "type": "integer",
      "title": "Held"
    },
    "already_admitted": {
      "type": "integer",
      "title": "Already Admitted"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "refill_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Refill Id"
    },
    "send_budget_added_cents": {
      "type": "integer",
      "title": "Send Budget Added Cents"
    },
    "included": {
      "items": {
        "$ref": "#/components/schemas/IncludedAdmission"
      },
      "type": "array",
      "title": "Included"
    }
  },
  "type": "object",
  "required": [
    "id",
    "campaign_id",
    "actor",
    "created_at",
    "added",
    "held",
    "already_admitted",
    "campaign_revision",
    "audience_revision",
    "refill_id",
    "send_budget_added_cents"
  ],
  "title": "AdmissionResult"
}
```

`AdmissionReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign_id`Required  | `string` |
| `campaign_revision`Required  | `integer` |
| `audience_revision`Required  | `integer` |
| `sources_revision`Required  | `integer` |
| `state`Optional  | `"reviewed"` Default: `"reviewed"`  |
| `items`Required  | array of [`AdmissionItem`](https://startwave.io/docs/api/#schema-AdmissionItem) |
| `send_budget_added_cents`Required  | `integer` |
| `created_at`Required  | `number` |
| `expires_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "sources_revision": {
      "type": "integer",
      "title": "Sources Revision"
    },
    "state": {
      "type": "string",
      "const": "reviewed",
      "title": "State",
      "default": "reviewed"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/AdmissionItem"
      },
      "type": "array",
      "title": "Items"
    },
    "send_budget_added_cents": {
      "type": "integer",
      "title": "Send Budget Added Cents"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "campaign_id",
    "campaign_revision",
    "audience_revision",
    "sources_revision",
    "items",
    "send_budget_added_cents",
    "created_at",
    "expires_at"
  ],
  "title": "AdmissionReview"
}
```

`AdmissionSourceCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `examined`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `added`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `held`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `already_admitted`Optional  | `integer` Default: `0` · Minimum: `0.0`  |
| `source_id`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "examined": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Examined",
      "default": 0
    },
    "added": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Added",
      "default": 0
    },
    "held": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Held",
      "default": 0
    },
    "already_admitted": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Already Admitted",
      "default": 0
    },
    "source_id": {
      "type": "string",
      "title": "Source Id"
    }
  },
  "type": "object",
  "required": [
    "source_id"
  ],
  "title": "AdmissionSourceCounts"
}
```

`AgentClassificationObservation`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"pending" \| "leased" \| "suggested" \| "applied" \| "failed" \| "unknown"` |
| `model`Required  | `string` |
| `policy_version`Required  | `string` |
| `suggestion`Required  | `string` \| `null` |
| `choice_confidence`Required  | `number` \| `null` |
| `explicit_opt_out`Required  | `number` \| `null` |
| `input_tokens`Required  | `integer` \| `null` |
| `output_tokens`Required  | `integer` \| `null` |
| `cost_usd_micros`Required  | `integer` \| `null` |
| `provider`Required  | `string` \| `null` |
| `resolved_model`Required  | `string` \| `null` |
| `error`Required  | `string` |
| `updated_at`Required  | `number` |
| `origin`Required  | `"live" \| "backfill"` |
| `reason`Required  | `string` \| `null` |
| `probabilities`Required  | `object` \| `null` Historical provider probability keys follow the recorded policy version; native evidence may be null. |
| `run_id`Required  | `string` |
| `evidence`Required  | `string` \| `null` |
| `evidence_qualified`Required  | `boolean` |
| `explanation`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "leased",
        "suggested",
        "applied",
        "failed",
        "unknown"
      ],
      "title": "State"
    },
    "model": {
      "type": "string",
      "title": "Model"
    },
    "policy_version": {
      "type": "string",
      "title": "Policy Version"
    },
    "suggestion": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Suggestion"
    },
    "choice_confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Choice Confidence"
    },
    "explicit_opt_out": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Explicit Opt Out"
    },
    "input_tokens": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Input Tokens"
    },
    "output_tokens": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Output Tokens"
    },
    "cost_usd_micros": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cost Usd Micros"
    },
    "provider": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provider"
    },
    "resolved_model": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resolved Model"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "updated_at": {
      "type": "number",
      "title": "Updated At"
    },
    "origin": {
      "type": "string",
      "enum": [
        "live",
        "backfill"
      ],
      "title": "Origin"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "probabilities": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "number",
            "maximum": 1.0,
            "minimum": 0.0
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Probabilities",
      "description": "Historical provider probability keys follow the recorded policy version; native evidence may be null."
    },
    "run_id": {
      "type": "string",
      "title": "Run Id"
    },
    "evidence": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Evidence"
    },
    "evidence_qualified": {
      "type": "boolean",
      "title": "Evidence Qualified"
    },
    "explanation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Explanation"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "model",
    "policy_version",
    "suggestion",
    "choice_confidence",
    "explicit_opt_out",
    "input_tokens",
    "output_tokens",
    "cost_usd_micros",
    "provider",
    "resolved_model",
    "error",
    "updated_at",
    "origin",
    "reason",
    "probabilities",
    "run_id",
    "evidence",
    "evidence_qualified",
    "explanation"
  ],
  "title": "AgentClassificationObservation"
}
```

`AllocationApply`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation_id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[A-Za-z0-9][A-Za-z0-9._~-]*$"`  |
| `configuration`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `changes`Required  | array of [`AllocationChange`](https://startwave.io/docs/api/#schema-AllocationChange) Min items: `1` · Max items: `100`  |

Complete schema

JSON schema

```
{
  "properties": {
    "operation_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._~-]*$",
      "title": "Operation Id"
    },
    "configuration": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Configuration"
    },
    "changes": {
      "items": {
        "$ref": "#/components/schemas/AllocationChange"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Changes"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation_id",
    "configuration",
    "changes"
  ],
  "title": "AllocationApply"
}
```

`AllocationChange`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `daily_limit`Required  | `integer` Finite daily campaign outbound ceiling; zero is unallocated, not unlimited. Minimum: `0.0` · Maximum: `15000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Campaign"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "daily_limit": {
      "type": "integer",
      "maximum": 15000.0,
      "minimum": 0.0,
      "title": "Daily Limit",
      "description": "Finite daily campaign outbound ceiling; zero is unallocated, not unlimited."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign",
    "expected_revision",
    "daily_limit"
  ],
  "title": "AllocationChange"
}
```

`AllocationCoverage`

`object`

| Field | Type and constraints |
| --- | --- |
| `date`Required  | `string` |
| `ready`Required  | `integer` Minimum: `0.0`  |
| `preparing`Required  | `integer` Minimum: `0.0`  |
| `shortfall`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "date": {
      "type": "string",
      "title": "Date"
    },
    "ready": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Ready"
    },
    "preparing": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Preparing"
    },
    "shortfall": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Shortfall"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "date",
    "ready",
    "preparing",
    "shortfall"
  ],
  "title": "AllocationCoverage"
}
```

`AllocationPreview`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"improved" \| "no_improvement" \| "unavailable"` |
| `reason`Required  | `string` |
| `configuration`Required  | `string` |
| `observed_at`Required  | `number` |
| `valid_until`Required  | `number` |
| `changes`Required  | array of [`AllocationChange`](https://startwave.io/docs/api/#schema-AllocationChange) |
| `before`Required  | array of [`AllocationCoverage`](https://startwave.io/docs/api/#schema-AllocationCoverage) |
| `after`Required  | array of [`AllocationCoverage`](https://startwave.io/docs/api/#schema-AllocationCoverage) |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "improved",
        "no_improvement",
        "unavailable"
      ],
      "title": "State"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "configuration": {
      "type": "string",
      "title": "Configuration"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "valid_until": {
      "type": "number",
      "title": "Valid Until"
    },
    "changes": {
      "items": {
        "$ref": "#/components/schemas/AllocationChange"
      },
      "type": "array",
      "title": "Changes"
    },
    "before": {
      "items": {
        "$ref": "#/components/schemas/AllocationCoverage"
      },
      "type": "array",
      "title": "Before"
    },
    "after": {
      "items": {
        "$ref": "#/components/schemas/AllocationCoverage"
      },
      "type": "array",
      "title": "After"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "reason",
    "configuration",
    "observed_at",
    "valid_until",
    "changes",
    "before",
    "after"
  ],
  "title": "AllocationPreview"
}
```

`AllocationPreviewIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `timezone`Optional  | `string` Default: `"UTC"` · Max length: `128`  |
| `changes`Optional  | array of [`AllocationChange`](https://startwave.io/docs/api/#schema-AllocationChange) Max items: `100`  |

Complete schema

JSON schema

```
{
  "properties": {
    "timezone": {
      "type": "string",
      "maxLength": 128,
      "title": "Timezone",
      "default": "UTC"
    },
    "changes": {
      "items": {
        "$ref": "#/components/schemas/AllocationChange"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Changes"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "AllocationPreviewIn"
}
```

`AllocationReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `workspace`Required  | `string` |
| `actor`Required  | `string` |
| `request_digest`Required  | `string` |
| `recorded_at`Required  | `number` |
| `changes`Required  | array of [`AllocationRecordedChange`](https://startwave.io/docs/api/#schema-AllocationRecordedChange) |
| `outcome`Required  | `"recorded" \| "no_effect"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "request_digest": {
      "type": "string",
      "title": "Request Digest"
    },
    "recorded_at": {
      "type": "number",
      "title": "Recorded At"
    },
    "changes": {
      "items": {
        "$ref": "#/components/schemas/AllocationRecordedChange"
      },
      "type": "array",
      "title": "Changes"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "recorded",
        "no_effect"
      ],
      "title": "Outcome"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "workspace",
    "actor",
    "request_digest",
    "recorded_at",
    "changes",
    "outcome"
  ],
  "title": "AllocationReceipt"
}
```

`AllocationRecordedChange`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | `string` |
| `before`Required  | `integer` |
| `after`Required  | `integer` |
| `before_revision`Required  | `integer` |
| `after_revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "before": {
      "type": "integer",
      "title": "Before"
    },
    "after": {
      "type": "integer",
      "title": "After"
    },
    "before_revision": {
      "type": "integer",
      "title": "Before Revision"
    },
    "after_revision": {
      "type": "integer",
      "title": "After Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign",
    "before",
    "after",
    "before_revision",
    "after_revision"
  ],
  "title": "AllocationRecordedChange"
}
```

`AllocationResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation`Required  | [`AllocationReceipt`](https://startwave.io/docs/api/#schema-AllocationReceipt) |
| `allocation`Required  | [`AllocationState`](https://startwave.io/docs/api/#schema-AllocationState) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "operation": {
      "$ref": "#/components/schemas/AllocationReceipt"
    },
    "allocation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/AllocationState"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation",
    "allocation"
  ],
  "title": "AllocationResult"
}
```

`AllocationState`

`object`

| Field | Type and constraints |
| --- | --- |
| `configuration`Required  | `string` |
| `available`Required  | `integer` Minimum: `0.0`  |
| `overage`Required  | `integer` Minimum: `0.0`  |
| `pools`Optional  | array of [`SendingPoolAllocation`](https://startwave.io/docs/api/#schema-SendingPoolAllocation) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "configuration": {
      "type": "string",
      "title": "Configuration"
    },
    "available": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Available"
    },
    "overage": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Overage"
    },
    "pools": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/SendingPoolAllocation"
          },
          "type": "array",
          "maxItems": 3
        },
        {
          "type": "null"
        }
      ],
      "title": "Pools"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "configuration",
    "available",
    "overage"
  ],
  "title": "AllocationState"
}
```

`AppendCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `added`Required  | `integer` |
| `contacts`Required  | `integer` |
| `revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "added": {
      "type": "integer",
      "title": "Added"
    },
    "contacts": {
      "type": "integer",
      "title": "Contacts"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "added",
    "contacts",
    "revision"
  ],
  "title": "AppendCounts"
}
```

`ArchiveIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `archived`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "archived": {
      "type": "boolean",
      "title": "Archived"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "archived"
  ],
  "title": "ArchiveIn"
}
```

`AssignmentIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `assignee`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "assignee": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Assignee"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "assignee"
  ],
  "title": "AssignmentIn"
}
```

`AttachmentIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `filename`Required  | `string` Min length: `1` · Max length: `104`  |
| `content_type`Required  | `string` |
| `data_base64`Required  | `string` Min length: `1` · Max length: `87384`  |

Complete schema

JSON schema

```
{
  "properties": {
    "filename": {
      "type": "string",
      "maxLength": 104,
      "minLength": 1,
      "title": "Filename"
    },
    "content_type": {
      "type": "string",
      "title": "Content Type"
    },
    "data_base64": {
      "type": "string",
      "maxLength": 87384,
      "minLength": 1,
      "title": "Data Base64"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "filename",
    "content_type",
    "data_base64"
  ],
  "title": "AttachmentIn"
}
```

`BillingHistoryEntry`

`object`

| Field | Type and constraints |
| --- | --- |
| `event_id`Required  | `string` |
| `kind`Required  | `string` |
| `amount`Required  | `integer` |
| `created_at`Required  | `number` |
| `workspace`Required  | `string` |
| `service_interval`Required  | [`ServiceInterval`](https://startwave.io/docs/api/#schema-ServiceInterval) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "kind": {
      "type": "string",
      "title": "Kind"
    },
    "amount": {
      "type": "integer",
      "title": "Amount"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "service_interval": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ServiceInterval"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "event_id",
    "kind",
    "amount",
    "created_at",
    "workspace",
    "service_interval"
  ],
  "title": "BillingHistoryEntry"
}
```

`BillingHistoryPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`BillingHistoryEntry`](https://startwave.io/docs/api/#schema-BillingHistoryEntry) Max items: `200`  |
| `next_cursor`Required  | `string` \| `null` |
| `start`Required  | `number` |
| `end`Required  | `number` |
| `currency`Required  | `"USD"` |
| `amount_unit`Required  | `"cents"` |
| `observed_at`Required  | `number` |
| `semantics`Required  | `"posted_wallet_events_not_pending_holds_or_delivery"` |
| `order`Required  | `"created_at_workspace_event_id_desc"` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/BillingHistoryEntry"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "start": {
      "type": "number",
      "title": "Start"
    },
    "end": {
      "type": "number",
      "title": "End"
    },
    "currency": {
      "type": "string",
      "const": "USD",
      "title": "Currency"
    },
    "amount_unit": {
      "type": "string",
      "const": "cents",
      "title": "Amount Unit"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "semantics": {
      "type": "string",
      "const": "posted_wallet_events_not_pending_holds_or_delivery",
      "title": "Semantics"
    },
    "order": {
      "type": "string",
      "const": "created_at_workspace_event_id_desc",
      "title": "Order"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "start",
    "end",
    "currency",
    "amount_unit",
    "observed_at",
    "semantics",
    "order"
  ],
  "title": "BillingHistoryPage"
}
```

`CalendarBuckets`

`object`

| Field | Type and constraints |
| --- | --- |
| `total`Required  | `integer` Minimum: `0.0`  |
| `before_interval`Required  | `integer` Minimum: `0.0`  |
| `within_interval`Required  | `integer` Minimum: `0.0`  |
| `next_24h`Required  | `integer` Minimum: `0.0`  |
| `later`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "total": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Total"
    },
    "before_interval": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Before Interval"
    },
    "within_interval": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Within Interval"
    },
    "next_24h": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Next 24H"
    },
    "later": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Later"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "total",
    "before_interval",
    "within_interval",
    "next_24h",
    "later"
  ],
  "title": "CalendarBuckets"
}
```

`CalendarDay`

`object`

| Field | Type and constraints |
| --- | --- |
| `date`Required  | `string` |
| `loaded`Required  | `integer` Minimum: `0.0`  |
| `has_more`Required  | `boolean` |
| `summary`Required  | [`CalendarSummary`](https://startwave.io/docs/api/#schema-CalendarSummary) |

Complete schema

JSON schema

```
{
  "properties": {
    "date": {
      "type": "string",
      "title": "Date"
    },
    "loaded": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Loaded"
    },
    "has_more": {
      "type": "boolean",
      "title": "Has More"
    },
    "summary": {
      "$ref": "#/components/schemas/CalendarSummary"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "date",
    "loaded",
    "has_more",
    "summary"
  ],
  "title": "CalendarDay"
}
```

`CalendarDelivery`

`object`

| Field | Type and constraints |
| --- | --- |
| `accepted`Required  | `integer` Minimum: `0.0`  |
| `failed`Required  | `integer` Minimum: `0.0`  |
| `delayed`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "accepted": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted"
    },
    "failed": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Failed"
    },
    "delayed": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Delayed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "accepted",
    "failed",
    "delayed"
  ],
  "title": "CalendarDelivery"
}
```

`CalendarItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `item_id`Required  | `string` Stable opaque identity of this native calendar item, including an individual delivery report. Not the accepted-send event, a cursor or send authority. Min length: `64` · Max length: `64` · Pattern: `"^[a-f0-9]{64}$"`  |
| `job`Required  | `string` |
| `event`Required  | `integer` \| `null` |
| `campaign`Required  | `string` |
| `workspace`Required  | `string` |
| `step`Required  | `integer` Minimum: `0.0`  |
| `sequence_position`Required  | `integer` \| `null` Current one-based route position for mutable plans, retained attempt position for history; null when unknown. |
| `sequence_total`Required  | `integer` \| `null` Definition length at that position; historical totals can be unknown. |
| `state`Required  | `string` |
| `instant`Required  | `number` |
| `recipient`Required  | `string` |
| `name`Required  | `string` |
| `campaign_state`Required  | `string` |
| `workspace_state`Required  | `string` |
| `kind`Required  | `"planned" \| "history" \| "bounce"` |
| `campaign_timezone`Required  | `string` |
| `utc`Required  | `string` |
| `display_at`Required  | `string` |
| `delivery_state`Optional  | `"failed" \| "delayed" \| "unconfirmed"` \| `null` |
| `report_status`Optional  | `string` \| `null` |
| `report_diagnostic`Optional  | `string` \| `null` |
| `report_confidence`Optional  | `string` \| `null` |
| `eligible_at`Optional  | `number` \| `null` |
| `estimated_send_at`Optional  | `number` \| `null` |
| `estimate_state`Optional  | `"estimated" \| "preparing" \| "blocked" \| "deferred"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "item_id": {
      "type": "string",
      "maxLength": 64,
      "minLength": 64,
      "pattern": "^[a-f0-9]{64}$",
      "title": "Item Id",
      "description": "Stable opaque identity of this native calendar item, including an individual delivery report. Not the accepted-send event, a cursor or send authority."
    },
    "job": {
      "type": "string",
      "title": "Job"
    },
    "event": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Event"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "step": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Step"
    },
    "sequence_position": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Position",
      "description": "Current one-based route position for mutable plans, retained attempt position for history; null when unknown."
    },
    "sequence_total": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Total",
      "description": "Definition length at that position; historical totals can be unknown."
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "instant": {
      "type": "number",
      "title": "Instant"
    },
    "recipient": {
      "type": "string",
      "title": "Recipient"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "campaign_state": {
      "type": "string",
      "title": "Campaign State"
    },
    "workspace_state": {
      "type": "string",
      "title": "Workspace State"
    },
    "kind": {
      "type": "string",
      "enum": [
        "planned",
        "history",
        "bounce"
      ],
      "title": "Kind"
    },
    "campaign_timezone": {
      "type": "string",
      "title": "Campaign Timezone"
    },
    "utc": {
      "type": "string",
      "title": "Utc"
    },
    "display_at": {
      "type": "string",
      "title": "Display At"
    },
    "delivery_state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "failed",
            "delayed",
            "unconfirmed"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Delivery State"
    },
    "report_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Report Status"
    },
    "report_diagnostic": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Report Diagnostic"
    },
    "report_confidence": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Report Confidence"
    },
    "eligible_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Eligible At"
    },
    "estimated_send_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Estimated Send At"
    },
    "estimate_state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "estimated",
            "preparing",
            "blocked",
            "deferred"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Estimate State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "item_id",
    "job",
    "event",
    "campaign",
    "workspace",
    "step",
    "sequence_position",
    "sequence_total",
    "state",
    "instant",
    "recipient",
    "name",
    "campaign_state",
    "workspace_state",
    "kind",
    "campaign_timezone",
    "utc",
    "display_at"
  ],
  "title": "CalendarItem"
}
```

`CalendarPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CalendarItem`](https://startwave.io/docs/api/#schema-CalendarItem) |
| `next_cursor`Required  | `string` \| `null` |
| `timezone`Required  | `string` |
| `view`Required  | `"all" \| "history" \| "planned"` |
| `observed_at`Required  | `number` |
| `planning_pending`Required  | `boolean` |
| `revision`Required  | array of `integer` Min items: `3` · Max items: `3`  |
| `summary`Required  | [`CalendarSummary`](https://startwave.io/docs/api/#schema-CalendarSummary) |
| `snapshot`Required  | `false` |
| `semantics`Required  | `"soft_estimates_and_recorded_outcomes" \| "stored_eligibility_and_recorded_outcomes"` |
| `coverage`Required  | `string` |
| `days`Optional  | array of [`CalendarDay`](https://startwave.io/docs/api/#schema-CalendarDay) \| `null` |
| `forecast`Optional  | [`SendProjectionSummary`](https://startwave.io/docs/api/#schema-SendProjectionSummary) \| `null` |
| `windows`Optional  | [`CalendarWindows`](https://startwave.io/docs/api/#schema-CalendarWindows) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CalendarItem"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "view": {
      "type": "string",
      "enum": [
        "all",
        "history",
        "planned"
      ],
      "title": "View"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "planning_pending": {
      "type": "boolean",
      "title": "Planning Pending"
    },
    "revision": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "maxItems": 3,
      "minItems": 3,
      "title": "Revision"
    },
    "summary": {
      "$ref": "#/components/schemas/CalendarSummary"
    },
    "snapshot": {
      "type": "boolean",
      "const": false,
      "title": "Snapshot"
    },
    "semantics": {
      "type": "string",
      "enum": [
        "soft_estimates_and_recorded_outcomes",
        "stored_eligibility_and_recorded_outcomes"
      ],
      "title": "Semantics"
    },
    "coverage": {
      "type": "string",
      "title": "Coverage"
    },
    "days": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/CalendarDay"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Days"
    },
    "forecast": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SendProjectionSummary"
        },
        {
          "type": "null"
        }
      ]
    },
    "windows": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CalendarWindows"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "timezone",
    "view",
    "observed_at",
    "planning_pending",
    "revision",
    "summary",
    "snapshot",
    "semantics",
    "coverage"
  ],
  "title": "CalendarPage"
}
```

`CalendarQueue`

`object`

| Field | Type and constraints |
| --- | --- |
| `total`Required  | `integer` Minimum: `0.0`  |
| `before_interval`Required  | `integer` Minimum: `0.0`  |
| `within_interval`Required  | `integer` Minimum: `0.0`  |
| `next_24h`Required  | `integer` Minimum: `0.0`  |
| `later`Required  | `integer` Minimum: `0.0`  |
| `first_touches`Required  | [`CalendarBuckets`](https://startwave.io/docs/api/#schema-CalendarBuckets) |
| `follow_ups`Required  | [`CalendarBuckets`](https://startwave.io/docs/api/#schema-CalendarBuckets) |

Complete schema

JSON schema

```
{
  "properties": {
    "total": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Total"
    },
    "before_interval": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Before Interval"
    },
    "within_interval": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Within Interval"
    },
    "next_24h": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Next 24H"
    },
    "later": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Later"
    },
    "first_touches": {
      "$ref": "#/components/schemas/CalendarBuckets"
    },
    "follow_ups": {
      "$ref": "#/components/schemas/CalendarBuckets"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "total",
    "before_interval",
    "within_interval",
    "next_24h",
    "later",
    "first_touches",
    "follow_ups"
  ],
  "title": "CalendarQueue"
}
```

`CalendarSummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `planned_jobs`Required  | `object` |
| `queue_eligibility`Required  | [`CalendarQueue`](https://startwave.io/docs/api/#schema-CalendarQueue) |
| `historical_attempts`Required  | `object` |
| `bounce_reports`Required  | `integer` Minimum: `0.0`  |
| `delivery_evidence`Required  | [`CalendarDelivery`](https://startwave.io/docs/api/#schema-CalendarDelivery) |
| `scope`Required  | `"full_filtered_utc_interval"` |
| `complete`Required  | `true` |

Complete schema

JSON schema

```
{
  "properties": {
    "planned_jobs": {
      "additionalProperties": {
        "type": "integer",
        "minimum": 0.0
      },
      "propertyNames": {
        "enum": [
          "queued",
          "reserved",
          "dispatching",
          "unknown"
        ]
      },
      "type": "object",
      "title": "Planned Jobs"
    },
    "queue_eligibility": {
      "$ref": "#/components/schemas/CalendarQueue"
    },
    "historical_attempts": {
      "additionalProperties": {
        "type": "integer",
        "minimum": 0.0
      },
      "propertyNames": {
        "enum": [
          "accepted",
          "not_accepted"
        ]
      },
      "type": "object",
      "title": "Historical Attempts"
    },
    "bounce_reports": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Bounce Reports"
    },
    "delivery_evidence": {
      "$ref": "#/components/schemas/CalendarDelivery"
    },
    "scope": {
      "type": "string",
      "const": "full_filtered_utc_interval",
      "title": "Scope"
    },
    "complete": {
      "type": "boolean",
      "const": true,
      "title": "Complete"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "planned_jobs",
    "queue_eligibility",
    "historical_attempts",
    "bounce_reports",
    "delivery_evidence",
    "scope",
    "complete"
  ],
  "title": "CalendarSummary"
}
```

`CalendarWindow`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | `string` |
| `name`Required  | `string` |
| `timezone`Required  | `string` |
| `start`Required  | `number` |
| `end`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "start": {
      "type": "number",
      "title": "Start"
    },
    "end": {
      "type": "number",
      "title": "End"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign",
    "name",
    "timezone",
    "start",
    "end"
  ],
  "title": "CalendarWindow"
}
```

`CalendarWindows`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CalendarWindow`](https://startwave.io/docs/api/#schema-CalendarWindow) Max items: `2048`  |
| `complete`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CalendarWindow"
      },
      "type": "array",
      "maxItems": 2048,
      "title": "Items"
    },
    "complete": {
      "type": "boolean",
      "title": "Complete"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "complete"
  ],
  "title": "CalendarWindows"
}
```

`CampaignAdmissionTarget`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign_id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_audience_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `allow_sending`Optional  | `boolean` Explicitly allow admission to a published capacity-funded campaign under its current sending authority. Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Campaign Id"
    },
    "expected_campaign_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Campaign Revision"
    },
    "expected_audience_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Audience Revision"
    },
    "expected_sources_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Sources Revision"
    },
    "allow_sending": {
      "type": "boolean",
      "title": "Allow Sending",
      "description": "Explicitly allow admission to a published capacity-funded campaign under its current sending authority.",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign_id",
    "expected_campaign_revision",
    "expected_audience_revision",
    "expected_sources_revision"
  ],
  "title": "CampaignAdmissionTarget"
}
```

`CampaignAudiencePage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CampaignRecipient`](https://startwave.io/docs/api/#schema-CampaignRecipient) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CampaignRecipient"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "CampaignAudiencePage"
}
```

`CampaignConflict`

`object`

| Field | Type and constraints |
| --- | --- |
| `detail`Required  | [`CampaignConflictDetail`](https://startwave.io/docs/api/#schema-CampaignConflictDetail) |

Complete schema

JSON schema

```
{
  "properties": {
    "detail": {
      "$ref": "#/components/schemas/CampaignConflictDetail"
    }
  },
  "type": "object",
  "required": [
    "detail"
  ],
  "title": "CampaignConflict"
}
```

`CampaignConflictDetail`

`object`

| Field | Type and constraints |
| --- | --- |
| `code`Required  | `string` |
| `loc`Optional  | array of `string` \| `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "code": {
      "type": "string",
      "title": "Code"
    },
    "loc": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Loc"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "code"
  ],
  "title": "CampaignConflictDetail"
}
```

`CampaignCreated`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"draft" \| "active" \| "paused" \| "complete"` |
| `created_at`Required  | `number` |
| `revision`Required  | `integer` |
| `archived`Required  | `0 \| 1` |
| `workspace`Required  | `string` |
| `expected_contacts`Required  | `integer` |
| `next_dispatch`Required  | `number` |
| `published_at`Required  | `number` \| `null` |
| `import_digest`Required  | `string` |
| `pacing_version`Required  | `integer` |
| `reply_streak`Required  | `integer` |
| `queue_due`Required  | `number` \| `null` |
| `ready_at`Required  | `number` \| `null` |
| `last_claim`Required  | `number` |
| `send_budget`Required  | `integer` \| `null` |
| `authorized_send_price`Required  | `integer` \| `null` |
| `send_committed`Required  | `integer` |
| `send_principal`Required  | `string` |
| `audience_revision`Required  | `integer` |
| `reply_budget`Required  | `integer` |
| `reply_committed`Required  | `integer` |
| `authorized_reply_price`Required  | `integer` \| `null` |
| `reply_due`Required  | `number` \| `null` |
| `reply_direct_committed`Required  | `integer` |
| `commercial_policy_version`Required  | `string` |
| `spending_mode`Required  | `"finite" \| "capacity"` |
| `schedule_not_before`Required  | `number` |
| `plan_revision`Required  | `integer` |
| `data_sources_revision`Required  | `integer` |
| `name`Required  | `string` |
| `offer`Required  | `string` |
| `audience_prompt`Required  | `string` |
| `steps`Required  | `string` |
| `schedule`Required  | `string` |
| `daily_limit`Required  | `integer` |
| `sending_pool`Required  | `"mailbox" \| "transactional" \| "all"` |
| `template_format`Required  | `integer` |
| `allow_catch_all`Required  | `0 \| 1` |
| `name_cleaning`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "paused",
        "complete"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "expected_contacts": {
      "type": "integer",
      "title": "Expected Contacts"
    },
    "next_dispatch": {
      "type": "number",
      "title": "Next Dispatch"
    },
    "published_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Published At"
    },
    "import_digest": {
      "type": "string",
      "title": "Import Digest"
    },
    "pacing_version": {
      "type": "integer",
      "title": "Pacing Version"
    },
    "reply_streak": {
      "type": "integer",
      "title": "Reply Streak"
    },
    "queue_due": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Queue Due"
    },
    "ready_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ready At"
    },
    "last_claim": {
      "type": "number",
      "title": "Last Claim"
    },
    "send_budget": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Send Budget"
    },
    "authorized_send_price": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Authorized Send Price"
    },
    "send_committed": {
      "type": "integer",
      "title": "Send Committed"
    },
    "send_principal": {
      "type": "string",
      "title": "Send Principal"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "reply_budget": {
      "type": "integer",
      "title": "Reply Budget"
    },
    "reply_committed": {
      "type": "integer",
      "title": "Reply Committed"
    },
    "authorized_reply_price": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Authorized Reply Price"
    },
    "reply_due": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reply Due"
    },
    "reply_direct_committed": {
      "type": "integer",
      "title": "Reply Direct Committed"
    },
    "commercial_policy_version": {
      "type": "string",
      "title": "Commercial Policy Version"
    },
    "spending_mode": {
      "type": "string",
      "enum": [
        "finite",
        "capacity"
      ],
      "title": "Spending Mode"
    },
    "schedule_not_before": {
      "type": "number",
      "title": "Schedule Not Before"
    },
    "plan_revision": {
      "type": "integer",
      "title": "Plan Revision"
    },
    "data_sources_revision": {
      "type": "integer",
      "title": "Data Sources Revision"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "offer": {
      "type": "string",
      "title": "Offer"
    },
    "audience_prompt": {
      "type": "string",
      "title": "Audience Prompt"
    },
    "steps": {
      "type": "string",
      "title": "Steps"
    },
    "schedule": {
      "type": "string",
      "title": "Schedule"
    },
    "daily_limit": {
      "type": "integer",
      "title": "Daily Limit"
    },
    "sending_pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Sending Pool"
    },
    "template_format": {
      "type": "integer",
      "title": "Template Format"
    },
    "allow_catch_all": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Allow Catch All"
    },
    "name_cleaning": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name Cleaning"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "created_at",
    "revision",
    "archived",
    "workspace",
    "expected_contacts",
    "next_dispatch",
    "published_at",
    "import_digest",
    "pacing_version",
    "reply_streak",
    "queue_due",
    "ready_at",
    "last_claim",
    "send_budget",
    "authorized_send_price",
    "send_committed",
    "send_principal",
    "audience_revision",
    "reply_budget",
    "reply_committed",
    "authorized_reply_price",
    "reply_due",
    "reply_direct_committed",
    "commercial_policy_version",
    "spending_mode",
    "schedule_not_before",
    "plan_revision",
    "data_sources_revision",
    "name",
    "offer",
    "audience_prompt",
    "steps",
    "schedule",
    "daily_limit",
    "sending_pool",
    "template_format",
    "allow_catch_all",
    "name_cleaning"
  ],
  "title": "CampaignCreated"
}
```

`CampaignDetail`

`object`

| Field | Type and constraints |
| --- | --- |
| `contact_count`Required  | `integer` |
| `total_historical_count`Required  | `integer` |
| `first_touches_remaining`Required  | `integer` |
| `remaining_lead_count`Required  | `integer` |
| `remaining_queue_count`Required  | `integer` |
| `queued_first_touches`Required  | `integer` |
| `queued_followups`Required  | `integer` |
| `id`Required  | `string` |
| `state`Required  | `"draft" \| "active" \| "paused" \| "complete"` |
| `created_at`Required  | `number` |
| `revision`Required  | `integer` |
| `archived`Required  | `0 \| 1` |
| `workspace`Required  | `string` |
| `expected_contacts`Required  | `integer` |
| `next_dispatch`Required  | `number` |
| `published_at`Required  | `number` \| `null` |
| `import_digest`Required  | `string` |
| `pacing_version`Required  | `integer` |
| `reply_streak`Required  | `integer` |
| `queue_due`Required  | `number` \| `null` |
| `ready_at`Required  | `number` \| `null` |
| `last_claim`Required  | `number` |
| `send_budget`Required  | `integer` \| `null` |
| `authorized_send_price`Required  | `integer` \| `null` |
| `send_committed`Required  | `integer` |
| `send_principal`Required  | `string` |
| `audience_revision`Required  | `integer` |
| `reply_budget`Required  | `integer` |
| `reply_committed`Required  | `integer` |
| `authorized_reply_price`Required  | `integer` \| `null` |
| `reply_due`Required  | `number` \| `null` |
| `reply_direct_committed`Required  | `integer` |
| `commercial_policy_version`Required  | `string` |
| `spending_mode`Required  | `"finite" \| "capacity"` |
| `schedule_not_before`Required  | `number` |
| `plan_revision`Required  | `integer` |
| `data_sources_revision`Required  | `integer` |
| `definition`Required  | [`SavedCampaignDefinition`](https://startwave.io/docs/api/#schema-SavedCampaignDefinition) |
| `imported_contacts`Required  | `integer` |
| `eligible_contacts`Required  | `integer` |
| `jobs`Required  | array of [`CampaignReadJob`](https://startwave.io/docs/api/#schema-CampaignReadJob) Max items: `1000`  |
| `next_cursor`Required  | `string` \| `null` |
| `schedule_advice`Optional  | [`ScheduleAdviceResponse`](https://startwave.io/docs/api/#schema-ScheduleAdviceResponse) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "contact_count": {
      "type": "integer",
      "title": "Contact Count"
    },
    "total_historical_count": {
      "type": "integer",
      "title": "Total Historical Count"
    },
    "first_touches_remaining": {
      "type": "integer",
      "title": "First Touches Remaining"
    },
    "remaining_lead_count": {
      "type": "integer",
      "title": "Remaining Lead Count"
    },
    "remaining_queue_count": {
      "type": "integer",
      "title": "Remaining Queue Count"
    },
    "queued_first_touches": {
      "type": "integer",
      "title": "Queued First Touches"
    },
    "queued_followups": {
      "type": "integer",
      "title": "Queued Followups"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "paused",
        "complete"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "expected_contacts": {
      "type": "integer",
      "title": "Expected Contacts"
    },
    "next_dispatch": {
      "type": "number",
      "title": "Next Dispatch"
    },
    "published_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Published At"
    },
    "import_digest": {
      "type": "string",
      "title": "Import Digest"
    },
    "pacing_version": {
      "type": "integer",
      "title": "Pacing Version"
    },
    "reply_streak": {
      "type": "integer",
      "title": "Reply Streak"
    },
    "queue_due": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Queue Due"
    },
    "ready_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ready At"
    },
    "last_claim": {
      "type": "number",
      "title": "Last Claim"
    },
    "send_budget": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Send Budget"
    },
    "authorized_send_price": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Authorized Send Price"
    },
    "send_committed": {
      "type": "integer",
      "title": "Send Committed"
    },
    "send_principal": {
      "type": "string",
      "title": "Send Principal"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "reply_budget": {
      "type": "integer",
      "title": "Reply Budget"
    },
    "reply_committed": {
      "type": "integer",
      "title": "Reply Committed"
    },
    "authorized_reply_price": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Authorized Reply Price"
    },
    "reply_due": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reply Due"
    },
    "reply_direct_committed": {
      "type": "integer",
      "title": "Reply Direct Committed"
    },
    "commercial_policy_version": {
      "type": "string",
      "title": "Commercial Policy Version"
    },
    "spending_mode": {
      "type": "string",
      "enum": [
        "finite",
        "capacity"
      ],
      "title": "Spending Mode"
    },
    "schedule_not_before": {
      "type": "number",
      "title": "Schedule Not Before"
    },
    "plan_revision": {
      "type": "integer",
      "title": "Plan Revision"
    },
    "data_sources_revision": {
      "type": "integer",
      "title": "Data Sources Revision"
    },
    "definition": {
      "$ref": "#/components/schemas/SavedCampaignDefinition"
    },
    "imported_contacts": {
      "type": "integer",
      "title": "Imported Contacts"
    },
    "eligible_contacts": {
      "type": "integer",
      "title": "Eligible Contacts"
    },
    "jobs": {
      "items": {
        "$ref": "#/components/schemas/CampaignReadJob"
      },
      "type": "array",
      "maxItems": 1000,
      "title": "Jobs"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "schedule_advice": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ScheduleAdviceResponse"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "contact_count",
    "total_historical_count",
    "first_touches_remaining",
    "remaining_lead_count",
    "remaining_queue_count",
    "queued_first_touches",
    "queued_followups",
    "id",
    "state",
    "created_at",
    "revision",
    "archived",
    "workspace",
    "expected_contacts",
    "next_dispatch",
    "published_at",
    "import_digest",
    "pacing_version",
    "reply_streak",
    "queue_due",
    "ready_at",
    "last_claim",
    "send_budget",
    "authorized_send_price",
    "send_committed",
    "send_principal",
    "audience_revision",
    "reply_budget",
    "reply_committed",
    "authorized_reply_price",
    "reply_due",
    "reply_direct_committed",
    "commercial_policy_version",
    "spending_mode",
    "schedule_not_before",
    "plan_revision",
    "data_sources_revision",
    "definition",
    "imported_contacts",
    "eligible_contacts",
    "jobs",
    "next_cursor"
  ],
  "title": "CampaignDetail"
}
```

`CampaignEligibilityBreakdown`

`object`

| Field | Type and constraints |
| --- | --- |
| `observed_at`Required  | `number` |
| `complete`Required  | `boolean` |
| `inspected`Required  | `integer` |
| `total`Required  | `integer` |
| `counts`Required  | [`EligibilityCounts`](https://startwave.io/docs/api/#schema-EligibilityCounts) |
| `reason_counts`Required  | `object` |
| `contacted_total`Required  | `integer` |
| `queued_followups`Required  | `integer` |
| `qualified_upper_bound`Optional  | `integer` \| `null` |
| `recontact_days`Optional  | `30` Default: `30`  |
| `semantics`Optional  | `"first_email_qualification_not_send_capacity"` Default: `"first_email_qualification_not_send_capacity"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "complete": {
      "type": "boolean",
      "title": "Complete"
    },
    "inspected": {
      "type": "integer",
      "title": "Inspected"
    },
    "total": {
      "type": "integer",
      "title": "Total"
    },
    "counts": {
      "$ref": "#/components/schemas/EligibilityCounts"
    },
    "reason_counts": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Reason Counts"
    },
    "contacted_total": {
      "type": "integer",
      "title": "Contacted Total"
    },
    "queued_followups": {
      "type": "integer",
      "title": "Queued Followups"
    },
    "qualified_upper_bound": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Qualified Upper Bound"
    },
    "recontact_days": {
      "type": "integer",
      "const": 30,
      "title": "Recontact Days",
      "default": 30
    },
    "semantics": {
      "type": "string",
      "const": "first_email_qualification_not_send_capacity",
      "title": "Semantics",
      "default": "first_email_qualification_not_send_capacity"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "observed_at",
    "complete",
    "inspected",
    "total",
    "counts",
    "reason_counts",
    "contacted_total",
    "queued_followups"
  ],
  "title": "CampaignEligibilityBreakdown"
}
```

`CampaignExport`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign_id`Required  | `string` Min length: `1` · Max length: `128`  |
| `status`Optional  | `"all" \| "contacted" \| "not_contacted" \| "email_ineligible" \| "name_ineligible" \| "ineligible" \| "needs_review" \| "queued" \| "upload_results"` Default: `"all"`  |
| `source_job_id`Optional  | `string` \| `null` |
| `list_id`Optional  | `string` \| `null` |
| `expected_membership_revision`Optional  | `integer` \| `null` |
| `max_bytes`Optional  | `integer` Default: `67108864` · Minimum: `1.0` · Maximum: `4294967296.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Campaign Id"
    },
    "status": {
      "type": "string",
      "enum": [
        "all",
        "contacted",
        "not_contacted",
        "email_ineligible",
        "name_ineligible",
        "ineligible",
        "needs_review",
        "queued",
        "upload_results"
      ],
      "title": "Status",
      "default": "all"
    },
    "source_job_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Job Id"
    },
    "list_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "List Id"
    },
    "expected_membership_revision": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Membership Revision"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 4294967296.0,
      "minimum": 1.0,
      "title": "Max Bytes",
      "default": 67108864
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign_id"
  ],
  "title": "CampaignExport"
}
```

`CampaignIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `list_ids`Optional  | array of `string` Max items: `50`  |
| `operation_id`Optional  | `string` \| `null` |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `offer`Optional  | `string` Default: `""` · Max length: `10000`  |
| `audience_prompt`Optional  | `string` Default: `""` · Max length: `10000`  |
| `steps`Required  | array of [`Step`](https://startwave.io/docs/api/#schema-Step) Min items: `1` · Max items: `10`  |
| `schedule`Optional  | [`Window`](https://startwave.io/docs/api/#schema-Window) |
| `daily_limit`Optional  | `integer` Finite campaign outbound sends per local sending day. Zero means unallocated: no new outbound sends or automatic preparation. The selected sending pool, shared capacity and current safeguards still apply. Default: `0` · Minimum: `0.0` · Maximum: `15000.0`  |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` Authorized sending capacity: mailbox by default, transactional or all only with an admin grant. Does not classify message content. Default: `"mailbox"`  |
| `allow_catch_all`Optional  | `boolean` Default: `false`  |
| `template_format`Optional  | `integer` Default: `1` · Minimum: `1.0` · Maximum: `2.0`  |
| `name_cleaning`Optional  | [`NameMapping`](https://startwave.io/docs/api/#schema-NameMapping) \| `null` |
| `import_digest`Optional  | `string` Default: `""` · Pattern: `"^(?:[0-9a-f]{64})?$"`  |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `contacts`Optional  | array of [`Contact`](https://startwave.io/docs/api/#schema-Contact) Max items: `1000`  |
| `expected_contacts`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `100000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "list_ids": {
      "items": {
        "type": "string",
        "pattern": "^[a-f0-9]{32}$"
      },
      "type": "array",
      "maxItems": 50,
      "title": "List Ids"
    },
    "operation_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._~-]*$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Operation Id"
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    },
    "offer": {
      "type": "string",
      "maxLength": 10000,
      "title": "Offer",
      "default": ""
    },
    "audience_prompt": {
      "type": "string",
      "maxLength": 10000,
      "title": "Audience Prompt",
      "default": ""
    },
    "steps": {
      "items": {
        "$ref": "#/components/schemas/Step"
      },
      "type": "array",
      "maxItems": 10,
      "minItems": 1,
      "title": "Steps"
    },
    "schedule": {
      "$ref": "#/components/schemas/Window"
    },
    "daily_limit": {
      "type": "integer",
      "maximum": 15000.0,
      "minimum": 0.0,
      "title": "Daily Limit",
      "description": "Finite campaign outbound sends per local sending day. Zero means unallocated: no new outbound sends or automatic preparation. The selected sending pool, shared capacity and current safeguards still apply.",
      "default": 0
    },
    "sending_pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Sending Pool",
      "description": "Authorized sending capacity: mailbox by default, transactional or all only with an admin grant. Does not classify message content.",
      "default": "mailbox"
    },
    "allow_catch_all": {
      "type": "boolean",
      "title": "Allow Catch All",
      "default": false
    },
    "template_format": {
      "type": "integer",
      "maximum": 2.0,
      "minimum": 1.0,
      "title": "Template Format",
      "default": 1
    },
    "name_cleaning": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/NameMapping"
        },
        {
          "type": "null"
        }
      ]
    },
    "import_digest": {
      "type": "string",
      "pattern": "^(?:[0-9a-f]{64})?$",
      "title": "Import Digest",
      "default": ""
    },
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "contacts": {
      "items": {
        "$ref": "#/components/schemas/Contact"
      },
      "type": "array",
      "maxItems": 1000,
      "title": "Contacts"
    },
    "expected_contacts": {
      "type": "integer",
      "maximum": 100000.0,
      "minimum": 0.0,
      "title": "Expected Contacts",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name",
    "steps",
    "id"
  ],
  "title": "CampaignIn"
}
```

`CampaignListItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `contact_count`Required  | `integer` |
| `total_historical_count`Required  | `integer` |
| `first_touches_remaining`Required  | `integer` |
| `remaining_lead_count`Required  | `integer` |
| `remaining_queue_count`Required  | `integer` |
| `queued_first_touches`Required  | `integer` |
| `queued_followups`Required  | `integer` |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `state`Required  | `"draft" \| "active" \| "paused" \| "complete"` |
| `created_at`Required  | `number` |
| `schedule`Required  | [`Window`](https://startwave.io/docs/api/#schema-Window) |
| `revision`Required  | `integer` |
| `archived`Required  | `0 \| 1` |
| `daily_limit`Required  | `integer` |
| `sending_pool`Required  | `"mailbox" \| "transactional" \| "all"` |
| `allow_catch_all`Required  | `0 \| 1` |

Complete schema

JSON schema

```
{
  "properties": {
    "contact_count": {
      "type": "integer",
      "title": "Contact Count"
    },
    "total_historical_count": {
      "type": "integer",
      "title": "Total Historical Count"
    },
    "first_touches_remaining": {
      "type": "integer",
      "title": "First Touches Remaining"
    },
    "remaining_lead_count": {
      "type": "integer",
      "title": "Remaining Lead Count"
    },
    "remaining_queue_count": {
      "type": "integer",
      "title": "Remaining Queue Count"
    },
    "queued_first_touches": {
      "type": "integer",
      "title": "Queued First Touches"
    },
    "queued_followups": {
      "type": "integer",
      "title": "Queued Followups"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "state": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "paused",
        "complete"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "schedule": {
      "$ref": "#/components/schemas/Window"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    },
    "daily_limit": {
      "type": "integer",
      "title": "Daily Limit"
    },
    "sending_pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Sending Pool"
    },
    "allow_catch_all": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Allow Catch All"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "contact_count",
    "total_historical_count",
    "first_touches_remaining",
    "remaining_lead_count",
    "remaining_queue_count",
    "queued_first_touches",
    "queued_followups",
    "id",
    "name",
    "state",
    "created_at",
    "schedule",
    "revision",
    "archived",
    "daily_limit",
    "sending_pool",
    "allow_catch_all"
  ],
  "title": "CampaignListItem"
}
```

`CampaignListMembership`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `state`Required  | `"active" \| "archived"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    }
  },
  "type": "object",
  "required": [
    "id",
    "name",
    "state"
  ],
  "title": "CampaignListMembership"
}
```

`CampaignListPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CampaignListItem`](https://startwave.io/docs/api/#schema-CampaignListItem) Max items: `1000`  |
| `next_cursor`Required  | `string` \| `null` |
| `schedule_advice`Optional  | [`ScheduleAdviceResponse`](https://startwave.io/docs/api/#schema-ScheduleAdviceResponse) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CampaignListItem"
      },
      "type": "array",
      "maxItems": 1000,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "schedule_advice": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ScheduleAdviceResponse"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "CampaignListPage"
}
```

`CampaignOutlook`

`object`

| Field | Type and constraints |
| --- | --- |
| `name_quality_counts`Optional  | `object` \| `null` |
| `campaign`Required  | `string` |
| `name`Required  | `string` |
| `daily_limit`Required  | `integer` |
| `queued`Required  | [`SendCounts`](https://startwave.io/docs/api/#schema-SendCounts) |
| `due_by_close`Required  | [`SendCounts`](https://startwave.io/docs/api/#schema-SendCounts) |
| `pending_first_touches`Required  | `integer` |
| `unsettled_sends`Required  | `integer` |
| `remaining_maximum`Required  | `integer` |
| `opens_at`Required  | `number` |
| `closes_at`Required  | `number` |
| `window_today`Required  | `boolean` |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "name_quality_counts": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name Quality Counts"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "daily_limit": {
      "type": "integer",
      "title": "Daily Limit"
    },
    "queued": {
      "$ref": "#/components/schemas/SendCounts"
    },
    "due_by_close": {
      "$ref": "#/components/schemas/SendCounts"
    },
    "pending_first_touches": {
      "type": "integer",
      "title": "Pending First Touches"
    },
    "unsettled_sends": {
      "type": "integer",
      "title": "Unsettled Sends"
    },
    "remaining_maximum": {
      "type": "integer",
      "title": "Remaining Maximum"
    },
    "opens_at": {
      "type": "number",
      "title": "Opens At"
    },
    "closes_at": {
      "type": "number",
      "title": "Closes At"
    },
    "window_today": {
      "type": "boolean",
      "title": "Window Today"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "type": "object",
  "required": [
    "campaign",
    "name",
    "daily_limit",
    "queued",
    "due_by_close",
    "pending_first_touches",
    "unsettled_sends",
    "remaining_maximum",
    "opens_at",
    "closes_at",
    "window_today",
    "blocker"
  ],
  "title": "CampaignOutlook"
}
```

`CampaignProjection`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | `string` |
| `cold_target`Optional  | `integer` Default: `0`  |
| `pending_candidates`Optional  | `integer` Default: `0`  |
| `queued`Optional  | [`sequencer__application__send_projection__Counts`](https://startwave.io/docs/api/#schema-sequencer__application__send_projection__Counts) |
| `blocker`Optional  | `string` Default: `""`  |
| `days`Optional  | array of [`ProjectedDay`](https://startwave.io/docs/api/#schema-ProjectedDay) |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "cold_target": {
      "type": "integer",
      "title": "Cold Target",
      "default": 0
    },
    "pending_candidates": {
      "type": "integer",
      "title": "Pending Candidates",
      "default": 0
    },
    "queued": {
      "$ref": "#/components/schemas/sequencer__application__send_projection__Counts"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker",
      "default": ""
    },
    "days": {
      "items": {
        "$ref": "#/components/schemas/ProjectedDay"
      },
      "type": "array",
      "title": "Days"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign"
  ],
  "title": "CampaignProjection"
}
```

`CampaignReadJob`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `message_id`Required  | `string` |
| `step`Required  | `integer` |
| `sequence_position`Required  | `integer` \| `null` |
| `sequence_total`Required  | `integer` \| `null` |
| `state`Required  | `"queued" \| "reserved" \| "dispatching" \| "accepted" \| "not_accepted" \| "unknown" \| "cancelled"` |
| `error`Required  | `string` |
| `email`Required  | `string` |
| `attempt`Required  | `string` |
| `pre_dispatch_failure`Required  | `0 \| 1` |
| `automatic_recovery_pending`Required  | `0 \| 1` |
| `has_retries`Required  | `0 \| 1` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "message_id": {
      "type": "string",
      "title": "Message Id"
    },
    "step": {
      "type": "integer",
      "title": "Step"
    },
    "sequence_position": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Position"
    },
    "sequence_total": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Total"
    },
    "state": {
      "type": "string",
      "enum": [
        "queued",
        "reserved",
        "dispatching",
        "accepted",
        "not_accepted",
        "unknown",
        "cancelled"
      ],
      "title": "State"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "attempt": {
      "type": "string",
      "title": "Attempt"
    },
    "pre_dispatch_failure": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Pre Dispatch Failure"
    },
    "automatic_recovery_pending": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Automatic Recovery Pending"
    },
    "has_retries": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Has Retries"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "message_id",
    "step",
    "sequence_position",
    "sequence_total",
    "state",
    "error",
    "email",
    "attempt",
    "pre_dispatch_failure",
    "automatic_recovery_pending",
    "has_retries"
  ],
  "title": "CampaignReadJob"
}
```

`CampaignRecipient`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `email`Required  | `string` |
| `fields`Required  | `object` |
| `state`Required  | `string` |
| `refill_id`Required  | `string` \| `null` |
| `eligibility`Optional  | [`RecipientEligibility`](https://startwave.io/docs/api/#schema-RecipientEligibility) \| `null` |
| `progress`Required  | [`RecipientProgress`](https://startwave.io/docs/api/#schema-RecipientProgress) |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "fields": {
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "type": "object",
      "title": "Fields"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "refill_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Refill Id"
    },
    "eligibility": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/RecipientEligibility"
        },
        {
          "type": "null"
        }
      ]
    },
    "progress": {
      "$ref": "#/components/schemas/RecipientProgress"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "email",
    "fields",
    "state",
    "refill_id",
    "progress"
  ],
  "title": "CampaignRecipient"
}
```

`CampaignSave`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation_id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[A-Za-z0-9][A-Za-z0-9._~-]*$"`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `name`Optional  | `string` \| `null` |
| `offer`Optional  | `string` \| `null` |
| `audience_prompt`Optional  | `string` \| `null` |
| `steps`Optional  | array of [`Step`](https://startwave.io/docs/api/#schema-Step) \| `null` |
| `schedule`Optional  | [`Window`](https://startwave.io/docs/api/#schema-Window) \| `null` |
| `daily_limit`Optional  | `integer` \| `null` Finite daily allocation; zero stops new campaign outbound work without cancelling queued originals. Omission preserves the current allocation; null is invalid. |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` \| `null` |
| `allow_catch_all`Optional  | `boolean` \| `null` |
| `template_format`Optional  | `integer` \| `null` |
| `name_cleaning`Optional  | [`NameMapping`](https://startwave.io/docs/api/#schema-NameMapping) \| `null` |
| `recipients`Optional  | array of [`RecipientFields`](https://startwave.io/docs/api/#schema-RecipientFields) Max items: `25`  |
| `sources`Optional  | [`SourceSelection`](https://startwave.io/docs/api/#schema-SourceSelection) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "operation_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "pattern": "^[A-Za-z0-9][A-Za-z0-9._~-]*$",
      "title": "Operation Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Name"
    },
    "offer": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 10000
        },
        {
          "type": "null"
        }
      ],
      "title": "Offer"
    },
    "audience_prompt": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 10000
        },
        {
          "type": "null"
        }
      ],
      "title": "Audience Prompt"
    },
    "steps": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/Step"
          },
          "type": "array",
          "maxItems": 10,
          "minItems": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Steps"
    },
    "schedule": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Window"
        },
        {
          "type": "null"
        }
      ]
    },
    "daily_limit": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 15000.0,
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Daily Limit",
      "description": "Finite daily allocation; zero stops new campaign outbound work without cancelling queued originals. Omission preserves the current allocation; null is invalid."
    },
    "sending_pool": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "mailbox",
            "transactional",
            "all"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Sending Pool"
    },
    "allow_catch_all": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Allow Catch All"
    },
    "template_format": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 2.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Template Format"
    },
    "name_cleaning": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/NameMapping"
        },
        {
          "type": "null"
        }
      ]
    },
    "recipients": {
      "items": {
        "$ref": "#/components/schemas/RecipientFields"
      },
      "type": "array",
      "maxItems": 25,
      "title": "Recipients"
    },
    "sources": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SourceSelection"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation_id",
    "expected_revision"
  ],
  "title": "CampaignSave",
  "examples": [
    {
      "expected_revision": 7,
      "operation_id": "copy-1",
      "steps": [
        {
          "body": "Updated first email",
          "id": 0,
          "subject": "An introduction"
        },
        {
          "body": "Following up",
          "delay_seconds": 259200,
          "id": 4,
          "subject": "Re:"
        }
      ]
    },
    {
      "expected_revision": 8,
      "operation_id": "append-1",
      "steps": [
        {
          "body": "First email",
          "id": 0,
          "subject": "An introduction"
        },
        {
          "body": "Following up",
          "delay_seconds": 259200,
          "id": 4,
          "subject": "Re:"
        },
        {
          "body": "One final thought",
          "delay_seconds": 259200,
          "subject": "Re:"
        }
      ]
    },
    {
      "expected_revision": 9,
      "operation_id": "reorder-1",
      "steps": [
        {
          "body": "First email",
          "id": 0,
          "subject": "An introduction"
        },
        {
          "body": "Now second",
          "delay_seconds": 172800,
          "id": 9,
          "subject": "Re:"
        },
        {
          "body": "Now third",
          "delay_seconds": 259200,
          "id": 4,
          "subject": "Re:"
        }
      ]
    }
  ]
}
```

`CampaignSource`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign_id`Required  | `string` |
| `list_id`Required  | `string` |
| `state`Required  | `"connected" \| "disconnected"` |
| `revision`Required  | `integer` |
| `list_name`Required  | `string` |
| `list_state`Required  | `"active" \| "archived"` |
| `member_count`Required  | `integer` |
| `membership_revision`Required  | `integer` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "list_id": {
      "type": "string",
      "title": "List Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "connected",
        "disconnected"
      ],
      "title": "State"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "list_name": {
      "type": "string",
      "title": "List Name"
    },
    "list_state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "List State"
    },
    "member_count": {
      "type": "integer",
      "title": "Member Count"
    },
    "membership_revision": {
      "type": "integer",
      "title": "Membership Revision"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "campaign_id",
    "list_id",
    "state",
    "revision",
    "list_name",
    "list_state",
    "member_count",
    "membership_revision",
    "created_at",
    "updated_at"
  ],
  "title": "CampaignSource"
}
```

`CampaignStartResponse`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `state`Required  | `"waiting" \| "started" \| "cancelled" \| "failed"` |
| `cancel_requested`Required  | `boolean` |
| `blocker`Required  | `string` |
| `capacity_operation`Required  | `string` |
| `capacity_state`Required  | `"requested" \| "committing" \| "active" \| "expired" \| "cancelled"` |
| `capacity_acquired_by_start`Required  | `boolean` |
| `lease_until`Required  | `string` \| `null` |
| `deadline`Required  | `number` |
| `capacity_remains_prepaid`Required  | `boolean` |
| `initial_capacity_charge_cents`Required  | `integer` |
| `initial_capacity_held_cents`Required  | `integer` |
| `recovery`Required  | [`StartRecovery`](https://startwave.io/docs/api/#schema-StartRecovery) |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "state": {
      "type": "string",
      "enum": [
        "waiting",
        "started",
        "cancelled",
        "failed"
      ],
      "title": "State"
    },
    "cancel_requested": {
      "type": "boolean",
      "title": "Cancel Requested"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "capacity_operation": {
      "type": "string",
      "title": "Capacity Operation"
    },
    "capacity_state": {
      "type": "string",
      "enum": [
        "requested",
        "committing",
        "active",
        "expired",
        "cancelled"
      ],
      "title": "Capacity State"
    },
    "capacity_acquired_by_start": {
      "type": "boolean",
      "title": "Capacity Acquired By Start"
    },
    "lease_until": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lease Until"
    },
    "deadline": {
      "type": "number",
      "title": "Deadline"
    },
    "capacity_remains_prepaid": {
      "type": "boolean",
      "title": "Capacity Remains Prepaid"
    },
    "initial_capacity_charge_cents": {
      "type": "integer",
      "title": "Initial Capacity Charge Cents"
    },
    "initial_capacity_held_cents": {
      "type": "integer",
      "title": "Initial Capacity Held Cents"
    },
    "recovery": {
      "$ref": "#/components/schemas/StartRecovery"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "state",
    "cancel_requested",
    "blocker",
    "capacity_operation",
    "capacity_state",
    "capacity_acquired_by_start",
    "lease_until",
    "deadline",
    "capacity_remains_prepaid",
    "initial_capacity_charge_cents",
    "initial_capacity_held_cents",
    "recovery"
  ],
  "title": "CampaignStartResponse"
}
```

`CampaignState`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"active" \| "paused"` |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "active",
        "paused"
      ],
      "title": "State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state"
  ],
  "title": "CampaignState"
}
```

`CampaignSummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `name_quality_counts`Optional  | `object` \| `null` |
| `definition`Required  | `"campaign-observation-v1"` |
| `campaign`Required  | `string` |
| `revision`Required  | `integer` |
| `state`Required  | `string` |
| `observed_at`Required  | `number` |
| `local_date`Required  | `string` |
| `timezone`Required  | `string` |
| `local_day_starts_at`Required  | `number` |
| `local_day_ends_at`Required  | `number` |
| `account_day_ends_at`Required  | `number` |
| `sent_today`Required  | `integer` |
| `automatic_slots_used`Required  | `integer` |
| `campaign_slots_remaining`Required  | `integer` \| `null` |
| `workspace_remaining`Required  | `integer` \| `null` |
| `due_followups_bound_to_exhausted_senders`Required  | `integer` \| `null` |
| `verified_first_touches_remaining`Required  | `integer` \| `null` |
| `unprepared_first_touches`Required  | `integer` |
| `verification_unresolved_first_touches`Required  | `integer` |
| `verification_cooldown_until`Required  | `number` \| `null` |
| `backlog`Required  | [`QueueBacklog`](https://startwave.io/docs/api/#schema-QueueBacklog) |
| `window_pressure`Required  | [`WindowPressure`](https://startwave.io/docs/api/#schema-WindowPressure) \| `null` |
| `next_eligible_at`Required  | `number` \| `null` |
| `idle_reason`Required  | `string` |
| `candidate_search_complete`Required  | `boolean` |
| `semantics`Required  | `"current_gates_and_recorded_attempts_not_delivery_promise"` |

Complete schema

JSON schema

```
{
  "properties": {
    "name_quality_counts": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name Quality Counts"
    },
    "definition": {
      "type": "string",
      "const": "campaign-observation-v1",
      "title": "Definition"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "local_date": {
      "type": "string",
      "title": "Local Date"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "local_day_starts_at": {
      "type": "number",
      "title": "Local Day Starts At"
    },
    "local_day_ends_at": {
      "type": "number",
      "title": "Local Day Ends At"
    },
    "account_day_ends_at": {
      "type": "number",
      "title": "Account Day Ends At"
    },
    "sent_today": {
      "type": "integer",
      "title": "Sent Today"
    },
    "automatic_slots_used": {
      "type": "integer",
      "title": "Automatic Slots Used"
    },
    "campaign_slots_remaining": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign Slots Remaining"
    },
    "workspace_remaining": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workspace Remaining"
    },
    "due_followups_bound_to_exhausted_senders": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Due Followups Bound To Exhausted Senders"
    },
    "verified_first_touches_remaining": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Verified First Touches Remaining"
    },
    "unprepared_first_touches": {
      "type": "integer",
      "title": "Unprepared First Touches"
    },
    "verification_unresolved_first_touches": {
      "type": "integer",
      "title": "Verification Unresolved First Touches"
    },
    "verification_cooldown_until": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Verification Cooldown Until"
    },
    "backlog": {
      "$ref": "#/components/schemas/QueueBacklog"
    },
    "window_pressure": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/WindowPressure"
        },
        {
          "type": "null"
        }
      ]
    },
    "next_eligible_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Eligible At"
    },
    "idle_reason": {
      "type": "string",
      "title": "Idle Reason"
    },
    "candidate_search_complete": {
      "type": "boolean",
      "title": "Candidate Search Complete"
    },
    "semantics": {
      "type": "string",
      "const": "current_gates_and_recorded_attempts_not_delivery_promise",
      "title": "Semantics"
    }
  },
  "type": "object",
  "required": [
    "definition",
    "campaign",
    "revision",
    "state",
    "observed_at",
    "local_date",
    "timezone",
    "local_day_starts_at",
    "local_day_ends_at",
    "account_day_ends_at",
    "sent_today",
    "automatic_slots_used",
    "campaign_slots_remaining",
    "workspace_remaining",
    "due_followups_bound_to_exhausted_senders",
    "verified_first_touches_remaining",
    "unprepared_first_touches",
    "verification_unresolved_first_touches",
    "verification_cooldown_until",
    "backlog",
    "window_pressure",
    "next_eligible_at",
    "idle_reason",
    "candidate_search_complete",
    "semantics"
  ],
  "title": "CampaignSummary"
}
```

`CampaignVerificationPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `policy`Required  | `string` \| `null` |
| `observed_at`Required  | `number` |
| `revision`Required  | `integer` |
| `editable`Required  | `boolean` |
| `checkable`Required  | `boolean` |
| `items`Required  | array of [`RecipientVerification`](https://startwave.io/docs/api/#schema-RecipientVerification) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Policy"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "editable": {
      "type": "boolean",
      "title": "Editable"
    },
    "checkable": {
      "type": "boolean",
      "title": "Checkable"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/RecipientVerification"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "policy",
    "observed_at",
    "revision",
    "editable",
    "checkable",
    "items",
    "next_cursor"
  ],
  "title": "CampaignVerificationPage"
}
```

`CampaignWindow`

`object`

| Field | Type and constraints |
| --- | --- |
| `local_date`Required  | `string` |
| `timezone`Required  | `string` |
| `intervals`Required  | array of array of `number` UTC epoch [start, end] pairs for this local day. |
| `schedule_key`Required  | `string` |
| `requested_target`Required  | `integer` |
| `recorded_at`Required  | `number` |
| `attempts`Required  | [`WindowAttempts`](https://startwave.io/docs/api/#schema-WindowAttempts) |
| `campaign_activity`Required  | [`WindowActivity`](https://startwave.io/docs/api/#schema-WindowActivity) |
| `blockers_observed`Required  | array of [`WindowBlocker`](https://startwave.io/docs/api/#schema-WindowBlocker) |
| `target_gap`Required  | `integer` \| `null` |
| `phase`Required  | `"scheduled" \| "closed" \| "open" \| "between_intervals"` |

Complete schema

JSON schema

```
{
  "properties": {
    "local_date": {
      "type": "string",
      "title": "Local Date"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "intervals": {
      "items": {
        "items": {
          "type": "number"
        },
        "type": "array"
      },
      "type": "array",
      "title": "Intervals",
      "description": "UTC epoch [start, end] pairs for this local day."
    },
    "schedule_key": {
      "type": "string",
      "title": "Schedule Key"
    },
    "requested_target": {
      "type": "integer",
      "title": "Requested Target"
    },
    "recorded_at": {
      "type": "number",
      "title": "Recorded At"
    },
    "attempts": {
      "$ref": "#/components/schemas/WindowAttempts"
    },
    "campaign_activity": {
      "$ref": "#/components/schemas/WindowActivity"
    },
    "blockers_observed": {
      "items": {
        "$ref": "#/components/schemas/WindowBlocker"
      },
      "type": "array",
      "title": "Blockers Observed"
    },
    "target_gap": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Gap"
    },
    "phase": {
      "type": "string",
      "enum": [
        "scheduled",
        "closed",
        "open",
        "between_intervals"
      ],
      "title": "Phase"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "local_date",
    "timezone",
    "intervals",
    "schedule_key",
    "requested_target",
    "recorded_at",
    "attempts",
    "campaign_activity",
    "blockers_observed",
    "target_gap",
    "phase"
  ],
  "title": "CampaignWindow"
}
```

`CampaignWindowsPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CampaignWindow`](https://startwave.io/docs/api/#schema-CampaignWindow) |
| `next_cursor`Required  | `string` \| `null` |
| `observed_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CampaignWindow"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "observed_at"
  ],
  "title": "CampaignWindowsPage"
}
```

`CapacityAllocation`

`object`

| Field | Type and constraints |
| --- | --- |
| `mailbox`Required  | `string` |
| `domain`Required  | `string` |
| `generation`Required  | `string` |
| `daily_capacity`Required  | `integer` |
| `revision`Optional  | `integer` \| `null` |
| `lease_until`Optional  | `string` \| `null` |
| `consumer_id`Optional  | `string` \| `null` |
| `state`Optional  | `string` \| `null` |
| `updated_at`Optional  | `string` \| `null` |
| `drain_until`Optional  | `string` \| `null` |
| `term_version`Optional  | `string` \| `null` |
| `funding_reference`Optional  | `string` \| `null` |
| `funded_period_start`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "domain": {
      "type": "string",
      "title": "Domain"
    },
    "generation": {
      "type": "string",
      "title": "Generation"
    },
    "daily_capacity": {
      "type": "integer",
      "title": "Daily Capacity"
    },
    "revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Revision"
    },
    "lease_until": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lease Until"
    },
    "consumer_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Consumer Id"
    },
    "state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "updated_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Updated At"
    },
    "drain_until": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Drain Until"
    },
    "term_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Term Version"
    },
    "funding_reference": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Funding Reference"
    },
    "funded_period_start": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Funded Period Start"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "mailbox",
    "domain",
    "generation",
    "daily_capacity"
  ],
  "title": "CapacityAllocation"
}
```

`CapacityAttention`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"none" \| "review" \| "unfunded" \| "unavailable" \| "recovery" \| "renewal" \| "deficit"` |
| `title`Required  | `string` |
| `description`Required  | `string` |
| `destination`Required  | `"capacity"` |
| `observed_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "none",
        "review",
        "unfunded",
        "unavailable",
        "recovery",
        "renewal",
        "deficit"
      ],
      "title": "Kind"
    },
    "title": {
      "type": "string",
      "title": "Title"
    },
    "description": {
      "type": "string",
      "title": "Description"
    },
    "destination": {
      "type": "string",
      "const": "capacity",
      "title": "Destination"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "title",
    "description",
    "destination",
    "observed_at"
  ],
  "title": "CapacityAttention"
}
```

`CapacityConfirmationBody`

`object`

| Field | Type and constraints |
| --- | --- |
| `recurring_consent`Optional  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "recurring_consent": {
      "type": "string",
      "title": "Recurring Consent"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "CapacityConfirmationBody"
}
```

`CapacityConfirmationLink`

`object`

| Field | Type and constraints |
| --- | --- |
| `method`Required  | `"POST"` |
| `path`Required  | `string` |
| `body`Required  | [`CapacityConfirmationBody`](https://startwave.io/docs/api/#schema-CapacityConfirmationBody) |

Complete schema

JSON schema

```
{
  "properties": {
    "method": {
      "type": "string",
      "const": "POST",
      "title": "Method"
    },
    "path": {
      "type": "string",
      "title": "Path"
    },
    "body": {
      "$ref": "#/components/schemas/CapacityConfirmationBody"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "method",
    "path",
    "body"
  ],
  "title": "CapacityConfirmationLink"
}
```

`CapacityConfirmationStep`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"reactivation" \| "expansion"` |
| `id`Required  | `string` |
| `state`Required  | `string` |
| `charged_cents`Required  | `integer` |
| `held_cents`Required  | `integer` |
| `error`Optional  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "reactivation",
        "expansion"
      ],
      "title": "Kind"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "charged_cents": {
      "type": "integer",
      "title": "Charged Cents"
    },
    "held_cents": {
      "type": "integer",
      "title": "Held Cents"
    },
    "error": {
      "type": "string",
      "title": "Error"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "id",
    "state",
    "charged_cents",
    "held_cents"
  ],
  "title": "CapacityConfirmationStep"
}
```

`CapacityConsentIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `recurring_consent`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "recurring_consent": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 32
        },
        {
          "type": "null"
        }
      ],
      "title": "Recurring Consent"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "CapacityConsentIn"
}
```

`CapacityExpansionResponse`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `activation`Required  | `string` |
| `state`Required  | `"quoted" \| "requested" \| "committing" \| "applied" \| "cancelled" \| "expired"` |
| `desired_daily_sends`Required  | `integer` |
| `previous_daily_sends`Required  | `integer` |
| `maximum_additional_cents`Required  | `integer` |
| `currency`Required  | `"USD"` |
| `lease_until`Required  | `string` |
| `period_seconds`Required  | `integer` |
| `maximum_next_term_cents`Required  | `integer` |
| `rate_version`Required  | `string` |
| `expires_at`Required  | `number` |
| `renewal`Required  | [`RecordedCapacityRenewal`](https://startwave.io/docs/api/#schema-RecordedCapacityRenewal) |
| `renewal_budget_increase`Required  | `"actual_additional_cents"` |
| `cancel_requested`Required  | `boolean` |
| `blocker`Required  | `string` |
| `receipt`Required  | [`ExpansionReceipt`](https://startwave.io/docs/api/#schema-ExpansionReceipt) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "activation": {
      "type": "string",
      "title": "Activation"
    },
    "state": {
      "type": "string",
      "enum": [
        "quoted",
        "requested",
        "committing",
        "applied",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "previous_daily_sends": {
      "type": "integer",
      "title": "Previous Daily Sends"
    },
    "maximum_additional_cents": {
      "type": "integer",
      "title": "Maximum Additional Cents"
    },
    "currency": {
      "type": "string",
      "const": "USD",
      "title": "Currency"
    },
    "lease_until": {
      "type": "string",
      "title": "Lease Until"
    },
    "period_seconds": {
      "type": "integer",
      "title": "Period Seconds"
    },
    "maximum_next_term_cents": {
      "type": "integer",
      "title": "Maximum Next Term Cents"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "renewal": {
      "$ref": "#/components/schemas/RecordedCapacityRenewal"
    },
    "renewal_budget_increase": {
      "type": "string",
      "const": "actual_additional_cents",
      "title": "Renewal Budget Increase"
    },
    "cancel_requested": {
      "type": "boolean",
      "title": "Cancel Requested"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "receipt": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ExpansionReceipt"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "activation",
    "state",
    "desired_daily_sends",
    "previous_daily_sends",
    "maximum_additional_cents",
    "currency",
    "lease_until",
    "period_seconds",
    "maximum_next_term_cents",
    "rate_version",
    "expires_at",
    "renewal",
    "renewal_budget_increase",
    "cancel_requested",
    "blocker",
    "receipt"
  ],
  "title": "CapacityExpansionResponse"
}
```

`CapacityMandate`

`object`

| Field | Type and constraints |
| --- | --- |
| `revision`Required  | `integer` |
| `desired`Required  | `integer` \| `null` |
| `maximum_cents`Required  | `integer` \| `null` |
| `next_attempt`Required  | `number` \| `null` |
| `error`Required  | `string` |
| `recovery_request`Required  | `string` \| `null` |
| `attempts`Required  | `integer` |
| `workspace`Optional  | `string` |
| `rate_version`Optional  | `string` |
| `source_request`Optional  | `string` |
| `updated_at`Optional  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "desired": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Desired"
    },
    "maximum_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Maximum Cents"
    },
    "next_attempt": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Attempt"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "recovery_request": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Recovery Request"
    },
    "attempts": {
      "type": "integer",
      "title": "Attempts"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "source_request": {
      "type": "string",
      "title": "Source Request"
    },
    "updated_at": {
      "type": "number",
      "title": "Updated At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "revision",
    "desired",
    "maximum_cents",
    "next_attempt",
    "error",
    "recovery_request",
    "attempts"
  ],
  "title": "CapacityMandate"
}
```

`CapacityNextTerm`

`object`

| Field | Type and constraints |
| --- | --- |
| `effective_at`Required  | `string` \| `null` |
| `reserved_daily_sends`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `state`Required  | `"no_term" \| "not_renewing" \| "renewal_pending" \| "renewal_preference_not_purchase" \| "paid_pending_boundary" \| "expired_or_released"` |
| `blocker`Required  | `string` |
| `funding_confirmed`Required  | `boolean` |
| `ends_at`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "effective_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Effective At"
    },
    "reserved_daily_sends": {
      "type": "integer",
      "title": "Reserved Daily Sends"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "state": {
      "type": "string",
      "enum": [
        "no_term",
        "not_renewing",
        "renewal_pending",
        "renewal_preference_not_purchase",
        "paid_pending_boundary",
        "expired_or_released"
      ],
      "title": "State"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "funding_confirmed": {
      "type": "boolean",
      "title": "Funding Confirmed"
    },
    "ends_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ends At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "effective_at",
    "reserved_daily_sends",
    "term_cents",
    "state",
    "blocker",
    "funding_confirmed"
  ],
  "title": "CapacityNextTerm"
}
```

`CapacityNow`

`object`

| Field | Type and constraints |
| --- | --- |
| `observed_at`Required  | `number` |
| `account_daily_limit`Required  | `integer` |
| `account_committed_today`Required  | `integer` |
| `account_remaining_today`Required  | `integer` |
| `account_resets_at`Required  | `string` |
| `reserved_daily_sends`Required  | `integer` |
| `term_ends_at`Required  | `string` \| `null` |
| `immediately_sendable`Required  | `null` |
| `semantics`Required  | `"account_allowance_is_not_physical_sendability"` |

Complete schema

JSON schema

```
{
  "properties": {
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "account_daily_limit": {
      "type": "integer",
      "title": "Account Daily Limit"
    },
    "account_committed_today": {
      "type": "integer",
      "title": "Account Committed Today"
    },
    "account_remaining_today": {
      "type": "integer",
      "title": "Account Remaining Today"
    },
    "account_resets_at": {
      "type": "string",
      "title": "Account Resets At"
    },
    "reserved_daily_sends": {
      "type": "integer",
      "title": "Reserved Daily Sends"
    },
    "term_ends_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Term Ends At"
    },
    "immediately_sendable": {
      "type": "null",
      "title": "Immediately Sendable"
    },
    "semantics": {
      "type": "string",
      "const": "account_allowance_is_not_physical_sendability",
      "title": "Semantics"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "observed_at",
    "account_daily_limit",
    "account_committed_today",
    "account_remaining_today",
    "account_resets_at",
    "reserved_daily_sends",
    "term_ends_at",
    "immediately_sendable",
    "semantics"
  ],
  "title": "CapacityNow"
}
```

`CapacityOperation`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `period_seconds`Required  | `integer` |
| `created_at`Required  | `number` |
| `state`Required  | `"requested" \| "committing" \| "active" \| "expired" \| "cancelled" \| "lease_expired" \| "waiting" \| "draining" \| "awaiting_handoff" \| "released" \| "superseded"` |
| `release`Required  | [`CapacityRelease`](https://startwave.io/docs/api/#schema-CapacityRelease) \| `null` |
| `recovery`Required  | [`CapacityRecovery`](https://startwave.io/docs/api/#schema-CapacityRecovery) |
| `desired_daily_sends`Required  | `integer` |
| `allocated_daily_sends`Required  | `integer` |
| `pending_term`Required  | [`PendingCapacityTerm`](https://startwave.io/docs/api/#schema-PendingCapacityTerm) \| `null` |
| `pending_expansion`Required  | [`PendingCapacityExpansion`](https://startwave.io/docs/api/#schema-PendingCapacityExpansion) \| `null` |
| `reactivation`Required  | [`ReactivationSummary`](https://startwave.io/docs/api/#schema-ReactivationSummary) \| `null` |
| `reactivation_review_supported`Required  | `boolean` |
| `lease_until`Required  | `string` \| `null` |
| `released_at`Required  | `number` \| `null` |
| `rate_version`Required  | `string` |
| `cents_per_block_term`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `cancel_requested`Required  | `boolean` |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "period_seconds": {
      "type": "integer",
      "title": "Period Seconds"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "state": {
      "type": "string",
      "enum": [
        "requested",
        "committing",
        "active",
        "expired",
        "cancelled",
        "lease_expired",
        "waiting",
        "draining",
        "awaiting_handoff",
        "released",
        "superseded"
      ],
      "title": "State"
    },
    "release": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CapacityRelease"
        },
        {
          "type": "null"
        }
      ]
    },
    "recovery": {
      "$ref": "#/components/schemas/CapacityRecovery"
    },
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "allocated_daily_sends": {
      "type": "integer",
      "title": "Allocated Daily Sends"
    },
    "pending_term": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PendingCapacityTerm"
        },
        {
          "type": "null"
        }
      ]
    },
    "pending_expansion": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PendingCapacityExpansion"
        },
        {
          "type": "null"
        }
      ]
    },
    "reactivation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReactivationSummary"
        },
        {
          "type": "null"
        }
      ]
    },
    "reactivation_review_supported": {
      "type": "boolean",
      "title": "Reactivation Review Supported"
    },
    "lease_until": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lease Until"
    },
    "released_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Released At"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "cents_per_block_term": {
      "type": "integer",
      "title": "Cents Per Block Term"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "cancel_requested": {
      "type": "boolean",
      "title": "Cancel Requested"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "period_seconds",
    "created_at",
    "state",
    "release",
    "recovery",
    "desired_daily_sends",
    "allocated_daily_sends",
    "pending_term",
    "pending_expansion",
    "reactivation",
    "reactivation_review_supported",
    "lease_until",
    "released_at",
    "rate_version",
    "cents_per_block_term",
    "term_cents",
    "cancel_requested",
    "blocker"
  ],
  "title": "CapacityOperation"
}
```

`CapacityPage_CapacityExpansionResponse_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CapacityExpansionResponse`](https://startwave.io/docs/api/#schema-CapacityExpansionResponse) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CapacityExpansionResponse"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "CapacityPage[CapacityExpansionResponse]"
}
```

`CapacityPage_CapacityOperation_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CapacityOperation`](https://startwave.io/docs/api/#schema-CapacityOperation) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CapacityOperation"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "CapacityPage[CapacityOperation]"
}
```

`CapacityPage_CapacityReactivationResponse_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CapacityReactivationResponse`](https://startwave.io/docs/api/#schema-CapacityReactivationResponse) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CapacityReactivationResponse"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "CapacityPage[CapacityReactivationResponse]"
}
```

`CapacityQuote`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `desired_daily_sends`Required  | `integer` |
| `currency`Required  | `"USD"` |
| `cents_per_block_term`Required  | `integer` |
| `rate_version`Required  | `string` |
| `maximum_initial_term_cents`Required  | `integer` |
| `recurring_max_cents`Optional  | `integer` \| `null` |
| `expires_at`Required  | `number` |
| `period_seconds`Required  | `integer` |
| `semantics`Required  | `"price_ceiling_not_stock_reservation"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "currency": {
      "type": "string",
      "const": "USD",
      "title": "Currency"
    },
    "cents_per_block_term": {
      "type": "integer",
      "title": "Cents Per Block Term"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "maximum_initial_term_cents": {
      "type": "integer",
      "title": "Maximum Initial Term Cents"
    },
    "recurring_max_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Recurring Max Cents"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "period_seconds": {
      "type": "integer",
      "title": "Period Seconds"
    },
    "semantics": {
      "type": "string",
      "const": "price_ceiling_not_stock_reservation",
      "title": "Semantics"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "desired_daily_sends",
    "currency",
    "cents_per_block_term",
    "rate_version",
    "maximum_initial_term_cents",
    "expires_at",
    "period_seconds",
    "semantics"
  ],
  "title": "CapacityQuote"
}
```

`CapacityReactivationResponse`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `source_operation`Required  | `string` |
| `state`Required  | `"quoted" \| "pending" \| "active" \| "cancelled"` |
| `capacity_operation`Required  | `string` \| `null` |
| `allocated_daily_sends`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `rate_version`Required  | `string` |
| `cents_per_block_term`Required  | `integer` |
| `period_seconds`Required  | `integer` |
| `expires_at`Required  | `number` |
| `confirmed_at`Required  | `number` \| `null` |
| `blocker`Required  | `string` |
| `semantics`Required  | `"new_paid_term_on_retained_stock"` |
| `automatic_campaign_restart`Required  | `false` |
| `cancel_requested`Required  | `boolean` |
| `resize_target`Optional  | `integer` \| `null` |
| `maximum_additional_cents`Optional  | `integer` \| `null` |
| `maximum_next_term_cents`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "source_operation": {
      "type": "string",
      "title": "Source Operation"
    },
    "state": {
      "type": "string",
      "enum": [
        "quoted",
        "pending",
        "active",
        "cancelled"
      ],
      "title": "State"
    },
    "capacity_operation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Operation"
    },
    "allocated_daily_sends": {
      "type": "integer",
      "title": "Allocated Daily Sends"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "cents_per_block_term": {
      "type": "integer",
      "title": "Cents Per Block Term"
    },
    "period_seconds": {
      "type": "integer",
      "title": "Period Seconds"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "confirmed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Confirmed At"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "semantics": {
      "type": "string",
      "const": "new_paid_term_on_retained_stock",
      "title": "Semantics"
    },
    "automatic_campaign_restart": {
      "type": "boolean",
      "const": false,
      "title": "Automatic Campaign Restart"
    },
    "cancel_requested": {
      "type": "boolean",
      "title": "Cancel Requested"
    },
    "resize_target": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resize Target"
    },
    "maximum_additional_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Maximum Additional Cents"
    },
    "maximum_next_term_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Maximum Next Term Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "source_operation",
    "state",
    "capacity_operation",
    "allocated_daily_sends",
    "term_cents",
    "rate_version",
    "cents_per_block_term",
    "period_seconds",
    "expires_at",
    "confirmed_at",
    "blocker",
    "semantics",
    "automatic_campaign_restart",
    "cancel_requested"
  ],
  "title": "CapacityReactivationResponse"
}
```

`CapacityRecovery`

`object`

| Field | Type and constraints |
| --- | --- |
| `applicable`Required  | `boolean` |
| `replacement_needed`Required  | `integer` |
| `restricted`Required  | `integer` |
| `source_last_polled_at`Required  | `number` \| `null` |
| `source_poll_failed`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "applicable": {
      "type": "boolean",
      "title": "Applicable"
    },
    "replacement_needed": {
      "type": "integer",
      "title": "Replacement Needed"
    },
    "restricted": {
      "type": "integer",
      "title": "Restricted"
    },
    "source_last_polled_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Last Polled At"
    },
    "source_poll_failed": {
      "type": "boolean",
      "title": "Source Poll Failed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "applicable",
    "replacement_needed",
    "restricted",
    "source_last_polled_at",
    "source_poll_failed"
  ],
  "title": "CapacityRecovery"
}
```

`CapacityRelease`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"waiting" \| "draining" \| "awaiting_handoff" \| "released" \| "superseded"` |
| `superseded_by`Required  | `string` \| `null` |
| `reason`Required  | `string` |
| `requested_at`Required  | `number` |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "waiting",
        "draining",
        "awaiting_handoff",
        "released",
        "superseded"
      ],
      "title": "State"
    },
    "superseded_by": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Superseded By"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "requested_at": {
      "type": "number",
      "title": "Requested At"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "superseded_by",
    "reason",
    "requested_at",
    "blocker"
  ],
  "title": "CapacityRelease"
}
```

`CapacityRequestConfirmation`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `action`Required  | `"acquire" \| "expand" \| "reactivate" \| "retain" \| "stop" \| "no_change"` |
| `desired_daily_sends`Required  | `integer` |
| `review`Required  | [`CapacityRequestReview`](https://startwave.io/docs/api/#schema-CapacityRequestReview) |
| `steps`Required  | array of [`CapacityConfirmationStep`](https://startwave.io/docs/api/#schema-CapacityConfirmationStep) |
| `state`Required  | `"confirming" \| "completed" \| "failed" \| "capacity_committed_limit_unchanged"` |
| `blocker`Required  | `string` |
| `next_attempt_at`Required  | `number` \| `null` |
| `availability_eta`Required  | `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "action": {
      "type": "string",
      "enum": [
        "acquire",
        "expand",
        "reactivate",
        "retain",
        "stop",
        "no_change"
      ],
      "title": "Action"
    },
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "review": {
      "$ref": "#/components/schemas/CapacityRequestReview"
    },
    "steps": {
      "items": {
        "$ref": "#/components/schemas/CapacityConfirmationStep"
      },
      "type": "array",
      "title": "Steps"
    },
    "state": {
      "type": "string",
      "enum": [
        "confirming",
        "completed",
        "failed",
        "capacity_committed_limit_unchanged"
      ],
      "title": "State"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "next_attempt_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Attempt At"
    },
    "availability_eta": {
      "type": "null",
      "title": "Availability Eta"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "action",
    "desired_daily_sends",
    "review",
    "steps",
    "state",
    "blocker",
    "next_attempt_at",
    "availability_eta"
  ],
  "title": "CapacityRequestConfirmation"
}
```

`CapacityRequestIncomplete`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"preparation_incomplete"` |
| `action`Required  | `"acquire" \| "expand" \| "reactivate" \| "retain" \| "stop" \| "no_change"` |
| `blocker`Required  | `string` |
| `recovery`Required  | `string` |
| `availability_eta`Required  | `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "const": "preparation_incomplete",
      "title": "State"
    },
    "action": {
      "type": "string",
      "enum": [
        "acquire",
        "expand",
        "reactivate",
        "retain",
        "stop",
        "no_change"
      ],
      "title": "Action"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "recovery": {
      "type": "string",
      "title": "Recovery"
    },
    "availability_eta": {
      "type": "null",
      "title": "Availability Eta"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "action",
    "blocker",
    "recovery",
    "availability_eta"
  ],
  "title": "CapacityRequestIncomplete"
}
```

`CapacityRequestReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `desired_daily_sends`Required  | `integer` |
| `action`Required  | `"acquire" \| "expand" \| "reactivate" \| "retain" \| "stop" \| "no_change"` |
| `source_operation`Required  | `string` \| `null` |
| `review`Required  | [`CapacityQuote`](https://startwave.io/docs/api/#schema-CapacityQuote) \| [`CapacityExpansionResponse`](https://startwave.io/docs/api/#schema-CapacityExpansionResponse) \| [`CapacityReactivationResponse`](https://startwave.io/docs/api/#schema-CapacityReactivationResponse) \| [`RetentionPreview`](https://startwave.io/docs/api/#schema-RetentionPreview) \| [`StopCapacityReview`](https://startwave.io/docs/api/#schema-StopCapacityReview) \| `null` |
| `terms`Required  | [`CapacityTerms`](https://startwave.io/docs/api/#schema-CapacityTerms) |
| `confirmation`Required  | [`CapacityConfirmationLink`](https://startwave.io/docs/api/#schema-CapacityConfirmationLink) |
| `state`Required  | `"review_ready"` |
| `availability_eta`Required  | `null` |
| `semantics`Required  | `"review_only_confirmation_changes_paid_capacity"` |
| `capacity_revision`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "action": {
      "type": "string",
      "enum": [
        "acquire",
        "expand",
        "reactivate",
        "retain",
        "stop",
        "no_change"
      ],
      "title": "Action"
    },
    "source_operation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Operation"
    },
    "review": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CapacityQuote"
        },
        {
          "$ref": "#/components/schemas/CapacityExpansionResponse"
        },
        {
          "$ref": "#/components/schemas/CapacityReactivationResponse"
        },
        {
          "$ref": "#/components/schemas/RetentionPreview"
        },
        {
          "$ref": "#/components/schemas/StopCapacityReview"
        },
        {
          "type": "null"
        }
      ],
      "title": "Review"
    },
    "terms": {
      "$ref": "#/components/schemas/CapacityTerms"
    },
    "confirmation": {
      "$ref": "#/components/schemas/CapacityConfirmationLink"
    },
    "state": {
      "type": "string",
      "const": "review_ready",
      "title": "State"
    },
    "availability_eta": {
      "type": "null",
      "title": "Availability Eta"
    },
    "semantics": {
      "type": "string",
      "const": "review_only_confirmation_changes_paid_capacity",
      "title": "Semantics"
    },
    "capacity_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "desired_daily_sends",
    "action",
    "source_operation",
    "review",
    "terms",
    "confirmation",
    "state",
    "availability_eta",
    "semantics"
  ],
  "title": "CapacityRequestReview"
}
```

`CapacityTerms`

`object`

| Field | Type and constraints |
| --- | --- |
| `currency`Required  | `"USD"` |
| `maximum_immediate_charge_cents`Required  | `integer` |
| `refund_cents`Required  | `integer` |
| `next_term_cents`Required  | `integer` \| `null` |
| `next_term_is_maximum`Required  | `boolean` |
| `allocated_daily_sends`Required  | `integer` \| `null` |
| `capacity_effective_at`Required  | `string` \| `null` |
| `account_allowance_effective`Required  | `"paid_term_boundary" \| "on_completion"` |
| `renewal_enabled`Required  | `boolean` |
| `campaign_limits_changed`Required  | `false` |
| `partial_success_possible`Required  | `boolean` |
| `pending_commitments_may_complete`Optional  | `boolean` |
| `already_paid_term`Optional  | [`PaidCapacityTerm`](https://startwave.io/docs/api/#schema-PaidCapacityTerm) |
| `renewal_mode`Optional  | `"recurring"` |
| `renewal_period_seconds`Optional  | `integer` |
| `renewal_payment_source`Optional  | `"wallet"` |
| `renewal_stop`Optional  | `"confirmed_capacity_zero"` |
| `renewal_maximum_cents`Optional  | `integer` \| `null` |
| `renewal_policy_revision`Optional  | `integer` |
| `recovery_policy`Optional  | `string` |
| `recovery`Optional  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "currency": {
      "type": "string",
      "const": "USD",
      "title": "Currency"
    },
    "maximum_immediate_charge_cents": {
      "type": "integer",
      "title": "Maximum Immediate Charge Cents"
    },
    "refund_cents": {
      "type": "integer",
      "title": "Refund Cents"
    },
    "next_term_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Term Cents"
    },
    "next_term_is_maximum": {
      "type": "boolean",
      "title": "Next Term Is Maximum"
    },
    "allocated_daily_sends": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Allocated Daily Sends"
    },
    "capacity_effective_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Effective At"
    },
    "account_allowance_effective": {
      "type": "string",
      "enum": [
        "paid_term_boundary",
        "on_completion"
      ],
      "title": "Account Allowance Effective"
    },
    "renewal_enabled": {
      "type": "boolean",
      "title": "Renewal Enabled"
    },
    "campaign_limits_changed": {
      "type": "boolean",
      "const": false,
      "title": "Campaign Limits Changed"
    },
    "partial_success_possible": {
      "type": "boolean",
      "title": "Partial Success Possible"
    },
    "pending_commitments_may_complete": {
      "type": "boolean",
      "title": "Pending Commitments May Complete"
    },
    "already_paid_term": {
      "$ref": "#/components/schemas/PaidCapacityTerm"
    },
    "renewal_mode": {
      "type": "string",
      "const": "recurring",
      "title": "Renewal Mode"
    },
    "renewal_period_seconds": {
      "type": "integer",
      "title": "Renewal Period Seconds"
    },
    "renewal_payment_source": {
      "type": "string",
      "const": "wallet",
      "title": "Renewal Payment Source"
    },
    "renewal_stop": {
      "type": "string",
      "const": "confirmed_capacity_zero",
      "title": "Renewal Stop"
    },
    "renewal_maximum_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Renewal Maximum Cents"
    },
    "renewal_policy_revision": {
      "type": "integer",
      "title": "Renewal Policy Revision"
    },
    "recovery_policy": {
      "type": "string",
      "title": "Recovery Policy"
    },
    "recovery": {
      "type": "string",
      "title": "Recovery"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "currency",
    "maximum_immediate_charge_cents",
    "refund_cents",
    "next_term_cents",
    "next_term_is_maximum",
    "allocated_daily_sends",
    "capacity_effective_at",
    "account_allowance_effective",
    "renewal_enabled",
    "campaign_limits_changed",
    "partial_success_possible"
  ],
  "title": "CapacityTerms"
}
```

`CapacityTimeline`

`object`

| Field | Type and constraints |
| --- | --- |
| `now`Required  | [`CapacityNow`](https://startwave.io/docs/api/#schema-CapacityNow) |
| `after_term`Required  | [`CapacityNextTerm`](https://startwave.io/docs/api/#schema-CapacityNextTerm) |
| `campaign_effect`Required  | `"campaign_limits_unchanged_shared_account_and_physical_limits_apply"` |

Complete schema

JSON schema

```
{
  "properties": {
    "now": {
      "$ref": "#/components/schemas/CapacityNow"
    },
    "after_term": {
      "$ref": "#/components/schemas/CapacityNextTerm"
    },
    "campaign_effect": {
      "type": "string",
      "const": "campaign_limits_unchanged_shared_account_and_physical_limits_apply",
      "title": "Campaign Effect"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "now",
    "after_term",
    "campaign_effect"
  ],
  "title": "CapacityTimeline"
}
```

`CardChangeResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `completed`Required  | `true` |
| `revision`Required  | `integer` |
| `replayed`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "completed": {
      "type": "boolean",
      "const": true,
      "title": "Completed"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "replayed": {
      "type": "boolean",
      "title": "Replayed",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "completed",
    "revision"
  ],
  "title": "CardChangeResult"
}
```

`CardRemovalOriginal`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `method`Required  | `string` |
| `revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "method",
    "revision"
  ],
  "title": "CardRemovalOriginal"
}
```

`CardRemovalRejected`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `method`Required  | `string` |
| `revision`Required  | `integer` |
| `completed`Required  | `false` |
| `outcome`Required  | `"rejected_no_effect"` |
| `reason`Required  | `"subscription_replace_default_card_first"` |
| `replayed`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "completed": {
      "type": "boolean",
      "const": false,
      "title": "Completed"
    },
    "outcome": {
      "type": "string",
      "const": "rejected_no_effect",
      "title": "Outcome"
    },
    "reason": {
      "type": "string",
      "const": "subscription_replace_default_card_first",
      "title": "Reason"
    },
    "replayed": {
      "type": "boolean",
      "title": "Replayed",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "method",
    "revision",
    "completed",
    "outcome",
    "reason"
  ],
  "title": "CardRemovalRejected"
}
```

`CardRequest`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "pattern": "^[^_].*$",
      "title": "Id"
    },
    "revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "revision"
  ],
  "title": "CardRequest"
}
```

`CardSetupResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `client_secret`Required  | `string` |
| `revision`Required  | `integer` |
| `status`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "client_secret": {
      "type": "string",
      "title": "Client Secret"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Status"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "client_secret",
    "revision",
    "status"
  ],
  "title": "CardSetupResult"
}
```

`CatalogueSchema`

`object`

| Field | Type and constraints |
| --- | --- |
| `enabled`Required  | `boolean` |
| `reason`Optional  | `"search_not_configured"` \| `null` |
| `version`Optional  | `"dataset-1"` Default: `"dataset-1"`  |
| `data_source`Required  | `"people" \| "companies"` |
| `field_definitions`Optional  | `object` |
| `preview_fields`Optional  | array of `string` |
| `export_fields`Optional  | array of `string` |
| `default_export_fields`Optional  | array of `string` |
| `sort_fields`Optional  | array of `string` |
| `identifiers`Optional  | `object` |
| `filter_options`Optional  | [`FilterOptions`](https://startwave.io/docs/api/#schema-FilterOptions) \| `null` |
| `limits`Optional  | `object` \| `null` |
| `domain_sets`Optional  | [`DomainSetCapabilities`](https://startwave.io/docs/api/#schema-DomainSetCapabilities) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string",
          "const": "search_not_configured"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "version": {
      "type": "string",
      "const": "dataset-1",
      "title": "Version",
      "default": "dataset-1"
    },
    "data_source": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Data Source"
    },
    "field_definitions": {
      "additionalProperties": {
        "$ref": "#/components/schemas/FieldDefinition"
      },
      "type": "object",
      "title": "Field Definitions"
    },
    "preview_fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Preview Fields"
    },
    "export_fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Export Fields"
    },
    "default_export_fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Default Export Fields"
    },
    "sort_fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Sort Fields"
    },
    "identifiers": {
      "additionalProperties": {
        "$ref": "#/components/schemas/IdentifierDefinition"
      },
      "type": "object",
      "title": "Identifiers"
    },
    "filter_options": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/FilterOptions"
        },
        {
          "type": "null"
        }
      ]
    },
    "limits": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Limits"
    },
    "domain_sets": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DomainSetCapabilities"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "enabled",
    "data_source"
  ],
  "title": "CatalogueSchema"
}
```

`CheckPolicyDisable`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `0.0`  |
| `enabled`Required  | `false` |
| `terms`Optional  | `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Expected Revision"
    },
    "enabled": {
      "type": "boolean",
      "const": false,
      "title": "Enabled"
    },
    "terms": {
      "type": "null",
      "title": "Terms"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision",
    "enabled"
  ],
  "title": "CheckPolicyDisable"
}
```

`CheckPolicyView`

`object`

| Field | Type and constraints |
| --- | --- |
| `list_id`Required  | `string` |
| `available`Required  | `boolean` |
| `revision`Required  | `integer` |
| `enabled`Required  | `boolean` |
| `state`Required  | `"off" \| "ready" \| "running" \| "paused" \| "exhausted"` |
| `reason`Required  | `string` \| `null` |
| `terms`Required  | [`CheckTerms`](https://startwave.io/docs/api/#schema-CheckTerms) \| `null` |
| `used_rows`Required  | `integer` |
| `used_provider_requests`Required  | `integer` |
| `used_rounds`Required  | `integer` |
| `round_id`Required  | `string` \| `null` |
| `next_due`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "list_id": {
      "type": "string",
      "title": "List Id"
    },
    "available": {
      "type": "boolean",
      "title": "Available"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "state": {
      "type": "string",
      "enum": [
        "off",
        "ready",
        "running",
        "paused",
        "exhausted"
      ],
      "title": "State"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "terms": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CheckTerms"
        },
        {
          "type": "null"
        }
      ]
    },
    "used_rows": {
      "type": "integer",
      "title": "Used Rows"
    },
    "used_provider_requests": {
      "type": "integer",
      "title": "Used Provider Requests"
    },
    "used_rounds": {
      "type": "integer",
      "title": "Used Rounds"
    },
    "round_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Round Id"
    },
    "next_due": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Due"
    }
  },
  "type": "object",
  "required": [
    "list_id",
    "available",
    "revision",
    "enabled",
    "state",
    "reason",
    "terms",
    "used_rows",
    "used_provider_requests",
    "used_rounds",
    "round_id",
    "next_due"
  ],
  "title": "CheckPolicyView"
}
```

`CheckRoundView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `policy_revision`Required  | `integer` |
| `membership_revision`Required  | `integer` |
| `reserved_rows`Required  | `integer` |
| `provider_requests`Required  | `integer` |
| `selection_id`Required  | `string` |
| `job_id`Required  | `string` \| `null` |
| `selection_state`Required  | `string` |
| `job_state`Required  | `string` \| `null` |
| `reason`Required  | `string` \| `null` |
| `created_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "policy_revision": {
      "type": "integer",
      "title": "Policy Revision"
    },
    "membership_revision": {
      "type": "integer",
      "title": "Membership Revision"
    },
    "reserved_rows": {
      "type": "integer",
      "title": "Reserved Rows"
    },
    "provider_requests": {
      "type": "integer",
      "title": "Provider Requests"
    },
    "selection_id": {
      "type": "string",
      "title": "Selection Id"
    },
    "job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Job Id"
    },
    "selection_state": {
      "type": "string",
      "title": "Selection State"
    },
    "job_state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Job State"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "policy_revision",
    "membership_revision",
    "reserved_rows",
    "provider_requests",
    "selection_id",
    "job_id",
    "selection_state",
    "job_state",
    "reason",
    "created_at"
  ],
  "title": "CheckRoundView"
}
```

`CheckTerms`

`object`

| Field | Type and constraints |
| --- | --- |
| `policy_id`Required  | `"source-check-list-v1"` |
| `interval_seconds`Required  | `integer` Minimum: `3600.0` · Maximum: `2592000.0`  |
| `max_records_per_round`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `max_total_rows`Required  | `integer` Minimum: `1.0` · Maximum: `9007199254740991.0`  |
| `max_provider_requests`Required  | `integer` Minimum: `1.0` · Maximum: `9007199254740991.0`  |
| `max_rounds`Required  | `integer` Minimum: `1.0` · Maximum: `9007199254740991.0`  |
| `expires_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "policy_id": {
      "type": "string",
      "const": "source-check-list-v1",
      "title": "Policy Id"
    },
    "interval_seconds": {
      "type": "integer",
      "maximum": 2592000.0,
      "minimum": 3600.0,
      "title": "Interval Seconds"
    },
    "max_records_per_round": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Max Records Per Round"
    },
    "max_total_rows": {
      "type": "integer",
      "maximum": 9007199254740991.0,
      "minimum": 1.0,
      "title": "Max Total Rows"
    },
    "max_provider_requests": {
      "type": "integer",
      "maximum": 9007199254740991.0,
      "minimum": 1.0,
      "title": "Max Provider Requests"
    },
    "max_rounds": {
      "type": "integer",
      "maximum": 9007199254740991.0,
      "minimum": 1.0,
      "title": "Max Rounds"
    },
    "expires_at": {
      "type": "number",
      "exclusiveMaximum": 253402300800.0,
      "exclusiveMinimum": 0.0,
      "title": "Expires At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "policy_id",
    "interval_seconds",
    "max_records_per_round",
    "max_total_rows",
    "max_provider_requests",
    "max_rounds",
    "expires_at"
  ],
  "title": "CheckTerms"
}
```

`ChunkView`

`object`

| Field | Type and constraints |
| --- | --- |
| `position`Required  | `integer` |
| `first_row`Required  | `integer` |
| `rows`Required  | `integer` |
| `valid_rows`Required  | `integer` |
| `invalid_rows`Required  | `integer` |
| `bytes`Required  | `integer` |
| `sha256`Required  | `string` |
| `digest`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "position": {
      "type": "integer",
      "title": "Position"
    },
    "first_row": {
      "type": "integer",
      "title": "First Row"
    },
    "rows": {
      "type": "integer",
      "title": "Rows"
    },
    "valid_rows": {
      "type": "integer",
      "title": "Valid Rows"
    },
    "invalid_rows": {
      "type": "integer",
      "title": "Invalid Rows"
    },
    "bytes": {
      "type": "integer",
      "title": "Bytes"
    },
    "sha256": {
      "type": "string",
      "title": "Sha256"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    }
  },
  "type": "object",
  "required": [
    "position",
    "first_row",
    "rows",
    "valid_rows",
    "invalid_rows",
    "bytes",
    "sha256",
    "digest"
  ],
  "title": "ChunkView"
}
```

`CompanyAvailability`

`object`

No fields declared. See the model for its permitted value.

Complete schema

JSON schema

```
{
  "properties": {},
  "additionalProperties": false,
  "type": "object",
  "title": "CompanyAvailability"
}
```

`CompanyData`

`object`

| Field | Type and constraints |
| --- | --- |
| `COMPANY_ID`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "COMPANY_ID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company ID"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    },
    "COMPANY_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company city"
    },
    "COMPANY_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company state"
    },
    "COMPANY_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company country"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "CompanyData"
}
```

`CompanyEdit`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `COMPANY_ID`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `remove_overrides`Optional  | array of `"COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_LOGO_URL"` Remove selected provided overrides and use the selected owned snapshot values. Requires a catalogue-backed licensed record; omission preserves overrides, null still masks a value. No purchase or source refresh. Min items: `1` · Max items: `64`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "active",
            "archived"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "COMPANY_ID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company ID"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    },
    "COMPANY_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company city"
    },
    "COMPANY_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company state"
    },
    "COMPANY_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company country"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    },
    "remove_overrides": {
      "items": {
        "type": "string",
        "enum": [
          "COMPANY_NAME",
          "COMPANY_DOMAIN",
          "COMPANY_CITY",
          "COMPANY_STATE",
          "COMPANY_COUNTRY",
          "COMPANY_LOGO_URL"
        ]
      },
      "type": "array",
      "maxItems": 64,
      "minItems": 1,
      "title": "Remove Overrides",
      "description": "Remove selected provided overrides and use the selected owned snapshot values. Requires a catalogue-backed licensed record; omission preserves overrides, null still masks a value. No purchase or source refresh."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision"
  ],
  "title": "CompanyEdit"
}
```

`CompanyPreview`

`object`

| Field | Type and constraints |
| --- | --- |
| `COMPANY_ID`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "COMPANY_ID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company ID"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    },
    "COMPANY_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company city"
    },
    "COMPANY_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company state"
    },
    "COMPANY_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company country"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "CompanyPreview"
}
```

`CompanyView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `revision`Required  | `integer` |
| `state`Required  | `"active" \| "archived"` |
| `source`Optional  | `"manual" \| "catalogue"` Default: `"manual"`  |
| `source_state`Optional  | [`SourceState`](https://startwave.io/docs/api/#schema-SourceState) \| `null` |
| `data_access`Optional  | `"user_provided" \| "preview_only" \| "licensed"` Default: `"user_provided"`  |
| `owned_snapshot`Optional  | [`OwnedData`](https://startwave.io/docs/api/#schema-OwnedData) \| `null` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `fields`Required  | [`CompanyData`](https://startwave.io/docs/api/#schema-CompanyData) |
| `overridden_fields`Required  | array of `"COMPANY_ID" \| "COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_LOGO_URL"` Explicit manual overrides present in fields, including nulls; empty for manual records. Max items: `64`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    },
    "source": {
      "type": "string",
      "enum": [
        "manual",
        "catalogue"
      ],
      "title": "Source",
      "default": "manual"
    },
    "source_state": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SourceState"
        },
        {
          "type": "null"
        }
      ]
    },
    "data_access": {
      "type": "string",
      "enum": [
        "user_provided",
        "preview_only",
        "licensed"
      ],
      "title": "Data Access",
      "default": "user_provided"
    },
    "owned_snapshot": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/OwnedData"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "fields": {
      "$ref": "#/components/schemas/CompanyData"
    },
    "overridden_fields": {
      "items": {
        "type": "string",
        "enum": [
          "COMPANY_ID",
          "COMPANY_NAME",
          "COMPANY_DOMAIN",
          "COMPANY_CITY",
          "COMPANY_STATE",
          "COMPANY_COUNTRY",
          "COMPANY_LOGO_URL"
        ]
      },
      "type": "array",
      "maxItems": 64,
      "title": "Overridden Fields",
      "description": "Explicit manual overrides present in fields, including nulls; empty for manual records."
    }
  },
  "type": "object",
  "required": [
    "id",
    "revision",
    "state",
    "created_at",
    "updated_at",
    "fields",
    "overridden_fields"
  ],
  "title": "CompanyView"
}
```

`ComplianceStatus`

`object`

| Field | Type and constraints |
| --- | --- |
| `configured`Required  | `boolean` |
| `profile`Required  | [`SenderProfile`](https://startwave.io/docs/api/#schema-SenderProfile) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "configured": {
      "type": "boolean",
      "title": "Configured"
    },
    "profile": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SenderProfile"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "configured",
    "profile"
  ],
  "title": "ComplianceStatus"
}
```

`Confirmation`

`object`

| Field | Type and constraints |
| --- | --- |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `maximum_cents`Required  | `integer` Minimum: `0.0`  |
| `policy`Required  | `string` Max length: `64`  |
| `provisioning_policy`Optional  | `"inboxkit-provisioning-v1"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Revision"
    },
    "maximum_cents": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Maximum Cents"
    },
    "policy": {
      "type": "string",
      "maxLength": 64,
      "title": "Policy"
    },
    "provisioning_policy": {
      "anyOf": [
        {
          "type": "string",
          "const": "inboxkit-provisioning-v1"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Policy"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "revision",
    "maximum_cents",
    "policy"
  ],
  "title": "Confirmation"
}
```

`Contact`

`object`

| Field | Type and constraints |
| --- | --- |
| `email`Required  | `string` Max length: `254`  |
| `fields`Optional  | `object` |

Complete schema

JSON schema

```
{
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 254,
      "title": "Email"
    },
    "fields": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "maxProperties": 256,
      "title": "Fields"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "email"
  ],
  "title": "Contact"
}
```

`ContactCampaign`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `state`Required  | `string` |
| `archived`Required  | `boolean` |
| `admitted`Required  | `boolean` This workspace Contact has an original campaign admission. Does not imply a send. |
| `contacted`Required  | `boolean` At least one campaign sequence submission was accepted. Not confirmed delivery; excludes manual replies and unlinked historical recipients. |
| `submitted_count`Required  | `integer` |
| `last_submission_recorded_at`Required  | `string` \| `null` |
| `unknown_submission_count`Required  | `integer` Unresolved sequence submission outcomes; zero accepted sends with unknown outcomes must not be labelled never contacted. |
| `lists`Required  | array of [`CampaignListMembership`](https://startwave.io/docs/api/#schema-CampaignListMembership) Current Contact memberships in Lists still connected to this campaign, including archived Lists. Connections do not imply admission or sending authority. Max items: `50`  |
| `eligibility`Optional  | [`RecipientEligibility`](https://startwave.io/docs/api/#schema-RecipientEligibility) \| `null` Current campaign qualification for an admitted recipient. Null means not admitted or unavailable, never eligible by inference. |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "archived": {
      "type": "boolean",
      "title": "Archived"
    },
    "admitted": {
      "type": "boolean",
      "title": "Admitted",
      "description": "This workspace Contact has an original campaign admission. Does not imply a send."
    },
    "contacted": {
      "type": "boolean",
      "title": "Contacted",
      "description": "At least one campaign sequence submission was accepted. Not confirmed delivery; excludes manual replies and unlinked historical recipients."
    },
    "submitted_count": {
      "type": "integer",
      "title": "Submitted Count"
    },
    "last_submission_recorded_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Submission Recorded At"
    },
    "unknown_submission_count": {
      "type": "integer",
      "title": "Unknown Submission Count",
      "description": "Unresolved sequence submission outcomes; zero accepted sends with unknown outcomes must not be labelled never contacted."
    },
    "lists": {
      "items": {
        "$ref": "#/components/schemas/CampaignListMembership"
      },
      "type": "array",
      "maxItems": 50,
      "title": "Lists",
      "description": "Current Contact memberships in Lists still connected to this campaign, including archived Lists. Connections do not imply admission or sending authority."
    },
    "eligibility": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/RecipientEligibility"
        },
        {
          "type": "null"
        }
      ],
      "description": "Current campaign qualification for an admitted recipient. Null means not admitted or unavailable, never eligible by inference."
    }
  },
  "type": "object",
  "required": [
    "id",
    "name",
    "state",
    "archived",
    "admitted",
    "contacted",
    "submitted_count",
    "last_submission_recorded_at",
    "unknown_submission_count",
    "lists"
  ],
  "title": "ContactCampaign"
}
```

`ContactsIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation_id`Optional  | `string` \| `null` |
| `contacts`Required  | array of [`Contact`](https://startwave.io/docs/api/#schema-Contact) Min items: `1` · Max items: `1000`  |
| `expected_revision`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "operation_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9._~-]*$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Operation Id"
    },
    "contacts": {
      "items": {
        "$ref": "#/components/schemas/Contact"
      },
      "type": "array",
      "maxItems": 1000,
      "minItems": 1,
      "title": "Contacts"
    },
    "expected_revision": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "contacts"
  ],
  "title": "ContactsIn"
}
```

`ConversationArchive`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `id`Required  | `string` |
| `actor`Required  | `string` |
| `revision`Required  | `integer` |
| `created_at`Required  | `number` |
| `kind`Required  | `"conversation"` |
| `resource`Required  | `string` |
| `archived`Required  | `0 \| 1` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "kind": {
      "type": "string",
      "const": "conversation",
      "title": "Kind"
    },
    "resource": {
      "type": "string",
      "title": "Resource"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "id",
    "actor",
    "revision",
    "created_at",
    "kind",
    "resource",
    "archived"
  ],
  "title": "ConversationArchive"
}
```

`ConversationAssignment`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `id`Required  | `string` |
| `actor`Required  | `string` |
| `revision`Required  | `integer` |
| `created_at`Required  | `number` |
| `conversation`Required  | `string` |
| `previous_assignee`Required  | `string` \| `null` |
| `assignee`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "conversation": {
      "type": "string",
      "title": "Conversation"
    },
    "previous_assignee": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Previous Assignee"
    },
    "assignee": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Assignee"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "id",
    "actor",
    "revision",
    "created_at",
    "conversation",
    "previous_assignee",
    "assignee"
  ],
  "title": "ConversationAssignment"
}
```

`ConversationChange`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `id`Required  | `string` |
| `actor`Required  | `string` |
| `revision`Required  | `integer` |
| `created_at`Required  | `number` |
| `conversation`Required  | `string` |
| `previous_status`Required  | `"needs_reply" \| "waiting" \| "closed"` |
| `status`Required  | `"needs_reply" \| "waiting" \| "closed"` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "conversation": {
      "type": "string",
      "title": "Conversation"
    },
    "previous_status": {
      "type": "string",
      "enum": [
        "needs_reply",
        "waiting",
        "closed"
      ],
      "title": "Previous Status"
    },
    "status": {
      "type": "string",
      "enum": [
        "needs_reply",
        "waiting",
        "closed"
      ],
      "title": "Status"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "id",
    "actor",
    "revision",
    "created_at",
    "conversation",
    "previous_status",
    "status"
  ],
  "title": "ConversationChange"
}
```

`ConversationDetail`

`object`

| Field | Type and constraints |
| --- | --- |
| `conversation`Required  | [`ConversationDetailRecord`](https://startwave.io/docs/api/#schema-ConversationDetailRecord) |
| `followups`Required  | [`ConversationFollowups`](https://startwave.io/docs/api/#schema-ConversationFollowups) |
| `read_by`Required  | array of [`ConversationReader`](https://startwave.io/docs/api/#schema-ConversationReader) Max items: `20`  |
| `read_by_more`Required  | `boolean` |
| `items`Required  | array of [`InboundMessage`](https://startwave.io/docs/api/#schema-InboundMessage) \| [`UnavailableInboundMessage`](https://startwave.io/docs/api/#schema-UnavailableInboundMessage) \| [`OutboundMessage`](https://startwave.io/docs/api/#schema-OutboundMessage) \| [`UnavailableOutboundMessage`](https://startwave.io/docs/api/#schema-UnavailableOutboundMessage) Max items: `200`  |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "conversation": {
      "$ref": "#/components/schemas/ConversationDetailRecord"
    },
    "followups": {
      "$ref": "#/components/schemas/ConversationFollowups"
    },
    "read_by": {
      "items": {
        "$ref": "#/components/schemas/ConversationReader"
      },
      "type": "array",
      "maxItems": 20,
      "title": "Read By"
    },
    "read_by_more": {
      "type": "boolean",
      "title": "Read By More"
    },
    "items": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/InboundMessage"
          },
          {
            "$ref": "#/components/schemas/UnavailableInboundMessage"
          },
          {
            "$ref": "#/components/schemas/OutboundMessage"
          },
          {
            "$ref": "#/components/schemas/UnavailableOutboundMessage"
          }
        ]
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "conversation",
    "followups",
    "read_by",
    "read_by_more",
    "items",
    "next_cursor"
  ],
  "title": "ConversationDetail"
}
```

`ConversationDetailRecord`

`object`

| Field | Type and constraints |
| --- | --- |
| `workspace`Required  | `string` |
| `id`Required  | `string` |
| `last_activity`Required  | `number` |
| `last_inbound_seq`Required  | `integer` |
| `status`Required  | `"needs_reply" \| "waiting" \| "closed"` |
| `revision`Required  | `integer` |
| `assignee`Required  | `string` \| `null` |
| `archived`Required  | `0 \| 1` |
| `has_sent`Required  | `0 \| 1` |
| `email`Required  | `string` |
| `campaign`Required  | `string` |
| `attention_seq`Required  | `integer` |
| `handoff`Required  | [`ConversationHandoff`](https://startwave.io/docs/api/#schema-ConversationHandoff) \| `null` |
| `inbox`Required  | [`ConversationInbox`](https://startwave.io/docs/api/#schema-ConversationInbox) |
| `unread`Required  | `0 \| 1` |

Complete schema

JSON schema

```
{
  "properties": {
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "last_activity": {
      "type": "number",
      "title": "Last Activity"
    },
    "last_inbound_seq": {
      "type": "integer",
      "title": "Last Inbound Seq"
    },
    "status": {
      "type": "string",
      "enum": [
        "needs_reply",
        "waiting",
        "closed"
      ],
      "title": "Status"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "assignee": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Assignee"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    },
    "has_sent": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Has Sent"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "attention_seq": {
      "type": "integer",
      "title": "Attention Seq"
    },
    "handoff": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ConversationHandoff"
        },
        {
          "type": "null"
        }
      ]
    },
    "inbox": {
      "$ref": "#/components/schemas/ConversationInbox"
    },
    "unread": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Unread"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "workspace",
    "id",
    "last_activity",
    "last_inbound_seq",
    "status",
    "revision",
    "assignee",
    "archived",
    "has_sent",
    "email",
    "campaign",
    "attention_seq",
    "handoff",
    "inbox",
    "unread"
  ],
  "title": "ConversationDetailRecord"
}
```

`ConversationDoNotContact`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `event_id`Required  | `string` |
| `intent`Required  | `"opt_out"` |
| `reply_revision`Required  | `integer` |
| `status`Required  | `"closed"` |
| `conversation_revision`Required  | `integer` |
| `replayed`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "intent": {
      "type": "string",
      "const": "opt_out",
      "title": "Intent"
    },
    "reply_revision": {
      "type": "integer",
      "title": "Reply Revision"
    },
    "status": {
      "type": "string",
      "const": "closed",
      "title": "Status"
    },
    "conversation_revision": {
      "type": "integer",
      "title": "Conversation Revision"
    },
    "replayed": {
      "type": "boolean",
      "title": "Replayed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "event_id",
    "intent",
    "reply_revision",
    "status",
    "conversation_revision",
    "replayed"
  ],
  "title": "ConversationDoNotContact"
}
```

`ConversationFollowups`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"stopped" \| "inactive" \| "in_progress" \| "held" \| "paused" \| "queued" \| "preparing" \| "waiting"` |
| `next_eligible_at`Required  | `number` \| `null` |
| `step`Required  | `integer` \| `null` |
| `stop_id`Required  | `string` \| `null` |
| `stopped_at`Required  | `number` \| `null` |
| `can_stop`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "stopped",
        "inactive",
        "in_progress",
        "held",
        "paused",
        "queued",
        "preparing",
        "waiting"
      ],
      "title": "State"
    },
    "next_eligible_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Eligible At"
    },
    "step": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Step"
    },
    "stop_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Stop Id"
    },
    "stopped_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Stopped At"
    },
    "can_stop": {
      "type": "boolean",
      "title": "Can Stop"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "next_eligible_at",
    "step",
    "stop_id",
    "stopped_at",
    "can_stop"
  ],
  "title": "ConversationFollowups"
}
```

`ConversationHandoff`

`object`

| Field | Type and constraints |
| --- | --- |
| `job_id`Required  | `string` |
| `state`Required  | `"queued" \| "reserved" \| "dispatching" \| "accepted" \| "not_accepted" \| "unknown" \| "cancelled"` |
| `snapshot`Required  | [`HandoffSnapshot`](https://startwave.io/docs/api/#schema-HandoffSnapshot) |
| `resumed_at`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "queued",
        "reserved",
        "dispatching",
        "accepted",
        "not_accepted",
        "unknown",
        "cancelled"
      ],
      "title": "State"
    },
    "snapshot": {
      "$ref": "#/components/schemas/HandoffSnapshot"
    },
    "resumed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resumed At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "job_id",
    "state",
    "snapshot",
    "resumed_at"
  ],
  "title": "ConversationHandoff"
}
```

`ConversationHistory_ConversationArchive_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ConversationArchive`](https://startwave.io/docs/api/#schema-ConversationArchive) Max items: `200`  |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ConversationArchive"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ConversationHistory[ConversationArchive]"
}
```

`ConversationHistory_ConversationAssignment_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ConversationAssignment`](https://startwave.io/docs/api/#schema-ConversationAssignment) Max items: `200`  |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ConversationAssignment"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ConversationHistory[ConversationAssignment]"
}
```

`ConversationHistory_ConversationChange_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ConversationChange`](https://startwave.io/docs/api/#schema-ConversationChange) Max items: `200`  |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ConversationChange"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ConversationHistory[ConversationChange]"
}
```

`ConversationHistory_ConversationNote_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ConversationNote`](https://startwave.io/docs/api/#schema-ConversationNote) Max items: `200`  |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ConversationNote"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ConversationHistory[ConversationNote]"
}
```

`ConversationInbox`

`object`

| Field | Type and constraints |
| --- | --- |
| `workflow`Required  | `"needs_reply" \| "waiting" \| "closed" \| "unknown"` |
| `reply_delivery`Required  | `"queued" \| "sending" \| "unconfirmed" \| "failed" \| "accepted" \| "none" \| "unknown"` |
| `intent`Required  | `string` \| `null` |
| `classification_state`Optional  | `"pending" \| "leased" \| "suggested" \| "applied" \| "failed" \| "unknown"` |

Complete schema

JSON schema

```
{
  "properties": {
    "workflow": {
      "type": "string",
      "enum": [
        "needs_reply",
        "waiting",
        "closed",
        "unknown"
      ],
      "title": "Workflow"
    },
    "reply_delivery": {
      "type": "string",
      "enum": [
        "queued",
        "sending",
        "unconfirmed",
        "failed",
        "accepted",
        "none",
        "unknown"
      ],
      "title": "Reply Delivery"
    },
    "intent": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Intent"
    },
    "classification_state": {
      "type": "string",
      "enum": [
        "pending",
        "leased",
        "suggested",
        "applied",
        "failed",
        "unknown"
      ],
      "title": "Classification State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "workflow",
    "reply_delivery",
    "intent"
  ],
  "title": "ConversationInbox"
}
```

`ConversationListItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `workspace`Required  | `string` |
| `id`Required  | `string` |
| `last_activity`Required  | `number` |
| `last_inbound_seq`Required  | `integer` |
| `status`Required  | `"needs_reply" \| "waiting" \| "closed"` |
| `revision`Required  | `integer` |
| `assignee`Required  | `string` \| `null` |
| `archived`Required  | `0 \| 1` |
| `has_sent`Required  | `0 \| 1` |
| `email`Required  | `string` |
| `campaign`Required  | `string` |
| `attention_seq`Required  | `integer` |
| `handoff`Required  | [`ConversationHandoff`](https://startwave.io/docs/api/#schema-ConversationHandoff) \| `null` |
| `inbox`Required  | [`ConversationInbox`](https://startwave.io/docs/api/#schema-ConversationInbox) |
| `campaign_name`Required  | `string` |
| `unread`Required  | `0 \| 1` |

Complete schema

JSON schema

```
{
  "properties": {
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "last_activity": {
      "type": "number",
      "title": "Last Activity"
    },
    "last_inbound_seq": {
      "type": "integer",
      "title": "Last Inbound Seq"
    },
    "status": {
      "type": "string",
      "enum": [
        "needs_reply",
        "waiting",
        "closed"
      ],
      "title": "Status"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "assignee": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Assignee"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    },
    "has_sent": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Has Sent"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "attention_seq": {
      "type": "integer",
      "title": "Attention Seq"
    },
    "handoff": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ConversationHandoff"
        },
        {
          "type": "null"
        }
      ]
    },
    "inbox": {
      "$ref": "#/components/schemas/ConversationInbox"
    },
    "campaign_name": {
      "type": "string",
      "title": "Campaign Name"
    },
    "unread": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Unread"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "workspace",
    "id",
    "last_activity",
    "last_inbound_seq",
    "status",
    "revision",
    "assignee",
    "archived",
    "has_sent",
    "email",
    "campaign",
    "attention_seq",
    "handoff",
    "inbox",
    "campaign_name",
    "unread"
  ],
  "title": "ConversationListItem"
}
```

`ConversationNote`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `id`Required  | `string` |
| `actor`Required  | `string` |
| `revision`Required  | `integer` |
| `created_at`Required  | `number` |
| `conversation`Required  | `string` |
| `body`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "conversation": {
      "type": "string",
      "title": "Conversation"
    },
    "body": {
      "type": "string",
      "title": "Body"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "id",
    "actor",
    "revision",
    "created_at",
    "conversation",
    "body"
  ],
  "title": "ConversationNote"
}
```

`ConversationPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ConversationListItem`](https://startwave.io/docs/api/#schema-ConversationListItem) Max items: `200`  |
| `next_cursor`Required  | `string` \| `null` Continue with the same filters; bounded search/intent/attention windows may return fewer items or an empty page with a cursor. |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ConversationListItem"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor",
      "description": "Continue with the same filters; bounded search/intent/attention windows may return fewer items or an empty page with a cursor."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ConversationPage"
}
```

`ConversationRead`

`object`

| Field | Type and constraints |
| --- | --- |
| `recorded`Required  | `true` |

Complete schema

JSON schema

```
{
  "properties": {
    "recorded": {
      "type": "boolean",
      "const": true,
      "title": "Recorded"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "recorded"
  ],
  "title": "ConversationRead"
}
```

`ConversationReader`

`object`

| Field | Type and constraints |
| --- | --- |
| `user_id`Required  | `string` |
| `email`Required  | `string` |
| `read_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "user_id": {
      "type": "string",
      "title": "User Id"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "read_at": {
      "type": "number",
      "title": "Read At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "user_id",
    "email",
    "read_at"
  ],
  "title": "ConversationReader"
}
```

`ConversationStop`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `conversation`Required  | `string` |
| `conversation_revision`Required  | `integer` |
| `stopped_at`Required  | `number` |
| `replayed`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "conversation": {
      "type": "string",
      "title": "Conversation"
    },
    "conversation_revision": {
      "type": "integer",
      "title": "Conversation Revision"
    },
    "stopped_at": {
      "type": "number",
      "title": "Stopped At"
    },
    "replayed": {
      "type": "boolean",
      "title": "Replayed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "conversation",
    "conversation_revision",
    "stopped_at",
    "replayed"
  ],
  "title": "ConversationStop"
}
```

`CopyChangeReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `revision`Required  | `integer` Campaign revision accepted by this original, not the current campaign revision. Minimum: `1.0`  |
| `phase`Required  | `"preparations" \| "complete"` Bounded route and pending-work invalidation, not copy generation. |
| `processed`Required  | `integer` Pending jobs/preparations and route rows examined. Not unique recipients, changed rows or a total. Minimum: `0.0`  |
| `created_at`Required  | `number` Original acceptance time, Unix seconds. |
| `completed_at`Required  | `number` \| `null` Invalidation completion time, Unix seconds; null while pending. Does not establish copy readiness. |
| `completion_semantics`Required  | `"invalidation_complete_not_all_copy_ready"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Revision",
      "description": "Campaign revision accepted by this original, not the current campaign revision."
    },
    "phase": {
      "type": "string",
      "enum": [
        "preparations",
        "complete"
      ],
      "title": "Phase",
      "description": "Bounded route and pending-work invalidation, not copy generation."
    },
    "processed": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Processed",
      "description": "Pending jobs/preparations and route rows examined. Not unique recipients, changed rows or a total."
    },
    "created_at": {
      "type": "number",
      "title": "Created At",
      "description": "Original acceptance time, Unix seconds."
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At",
      "description": "Invalidation completion time, Unix seconds; null while pending. Does not establish copy readiness."
    },
    "completion_semantics": {
      "type": "string",
      "const": "invalidation_complete_not_all_copy_ready",
      "title": "Completion Semantics"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "revision",
    "phase",
    "processed",
    "created_at",
    "completed_at",
    "completion_semantics"
  ],
  "title": "CopyChangeReceipt",
  "examples": [
    {
      "campaign": "example-campaign",
      "completion_semantics": "invalidation_complete_not_all_copy_ready",
      "created_at": 1791590400.0,
      "id": "copy-edit",
      "phase": "preparations",
      "processed": 100,
      "revision": 4
    },
    {
      "campaign": "example-campaign",
      "completed_at": 1791590402.0,
      "completion_semantics": "invalidation_complete_not_all_copy_ready",
      "created_at": 1791590400.0,
      "id": "copy-edit",
      "phase": "complete",
      "processed": 125,
      "revision": 4
    }
  ]
}
```

`CopyPolicy`

`object`

| Field | Type and constraints |
| --- | --- |
| `transformer`Required  | `string` |
| `variants_enabled`Required  | `boolean` |
| `brace_syntax`Required  | `boolean` |
| `adds_business_footer`Required  | `boolean` |
| `quality_check`Optional  | `string` Default: `"not_model_reviewed"`  |
| `provider_cost_usd_micros`Optional  | `integer` Default: `0`  |
| `template_formats`Optional  | array of `integer` |
| `required_body_variables`Optional  | array of `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "transformer": {
      "type": "string",
      "title": "Transformer"
    },
    "variants_enabled": {
      "type": "boolean",
      "title": "Variants Enabled"
    },
    "brace_syntax": {
      "type": "boolean",
      "title": "Brace Syntax"
    },
    "adds_business_footer": {
      "type": "boolean",
      "title": "Adds Business Footer"
    },
    "quality_check": {
      "type": "string",
      "title": "Quality Check",
      "default": "not_model_reviewed"
    },
    "provider_cost_usd_micros": {
      "type": "integer",
      "title": "Provider Cost Usd Micros",
      "default": 0
    },
    "template_formats": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "title": "Template Formats"
    },
    "required_body_variables": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Required Body Variables"
    }
  },
  "type": "object",
  "required": [
    "transformer",
    "variants_enabled",
    "brace_syntax",
    "adds_business_footer"
  ],
  "title": "CopyPolicy"
}
```

`CopyPreview`

`object`

| Field | Type and constraints |
| --- | --- |
| `content`Required  | [`PreviewCopy`](https://startwave.io/docs/api/#schema-PreviewCopy) |
| `transformer`Required  | `string` |
| `subject_state`Required  | `"authored" \| "inherited" \| "pending_predecessor"` |
| `quality_check`Optional  | `string` Default: `"not_model_reviewed"`  |
| `provider_cost_usd_micros`Optional  | `integer` Default: `0`  |
| `sender_bound`Optional  | `boolean` Default: `false`  |
| `preview_sender`Optional  | `string` \| `null` |
| `profile_scope`Optional  | `string` Default: `"workspace_default"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "content": {
      "$ref": "#/components/schemas/PreviewCopy"
    },
    "transformer": {
      "type": "string",
      "title": "Transformer"
    },
    "subject_state": {
      "type": "string",
      "enum": [
        "authored",
        "inherited",
        "pending_predecessor"
      ],
      "title": "Subject State"
    },
    "quality_check": {
      "type": "string",
      "title": "Quality Check",
      "default": "not_model_reviewed"
    },
    "provider_cost_usd_micros": {
      "type": "integer",
      "title": "Provider Cost Usd Micros",
      "default": 0
    },
    "sender_bound": {
      "type": "boolean",
      "title": "Sender Bound",
      "default": false
    },
    "preview_sender": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Preview Sender"
    },
    "profile_scope": {
      "type": "string",
      "title": "Profile Scope",
      "default": "workspace_default"
    }
  },
  "type": "object",
  "required": [
    "content",
    "transformer",
    "subject_state"
  ],
  "title": "CopyPreview"
}
```

`CopyPreviewIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `template_format`Optional  | `integer` Default: `1` · Minimum: `1.0` · Maximum: `2.0`  |
| `campaign`Required  | `string` Min length: `1` · Max length: `128`  |
| `recipient`Required  | `string` Min length: `1` · Max length: `320`  |
| `fields`Optional  | `object` |
| `subject`Optional  | `string` \| `null` |
| `body`Required  | `string` Min length: `1` · Max length: `100000`  |
| `step`Required  | `integer` Minimum: `0.0`  |
| `variation`Required  | `integer` Minimum: `0.0` · Maximum: `999999.0`  |
| `sender_mailbox`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "template_format": {
      "type": "integer",
      "maximum": 2.0,
      "minimum": 1.0,
      "title": "Template Format",
      "default": 1
    },
    "campaign": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Campaign"
    },
    "recipient": {
      "type": "string",
      "maxLength": 320,
      "minLength": 1,
      "title": "Recipient"
    },
    "fields": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "maxProperties": 256,
      "title": "Fields"
    },
    "subject": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject"
    },
    "body": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 1,
      "title": "Body"
    },
    "step": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Step"
    },
    "variation": {
      "type": "integer",
      "maximum": 999999.0,
      "minimum": 0.0,
      "title": "Variation"
    },
    "sender_mailbox": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 320
        },
        {
          "type": "null"
        }
      ],
      "title": "Sender Mailbox"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign",
    "recipient",
    "body",
    "step",
    "variation"
  ],
  "title": "CopyPreviewIn"
}
```

`CurrentCampaignStart`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation`Required  | [`CampaignStartResponse`](https://startwave.io/docs/api/#schema-CampaignStartResponse) \| `null` |
| `window_opens_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "operation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CampaignStartResponse"
        },
        {
          "type": "null"
        }
      ]
    },
    "window_opens_at": {
      "type": "number",
      "title": "Window Opens At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation",
    "window_opens_at"
  ],
  "title": "CurrentCampaignStart"
}
```

`CurrentCapacity`

`object`

| Field | Type and constraints |
| --- | --- |
| `billing_model`Required  | `"subscription-30d-v1"` |
| `mode`Required  | `"funded"` |
| `operation`Required  | [`CapacityOperation`](https://startwave.io/docs/api/#schema-CapacityOperation) \| `null` |
| `timeline`Required  | [`CapacityTimeline`](https://startwave.io/docs/api/#schema-CapacityTimeline) |
| `desired_capacity`Required  | [`CapacityMandate`](https://startwave.io/docs/api/#schema-CapacityMandate) |
| `attention`Required  | [`CapacityAttention`](https://startwave.io/docs/api/#schema-CapacityAttention) |

Complete schema

JSON schema

```
{
  "properties": {
    "billing_model": {
      "type": "string",
      "const": "subscription-30d-v1",
      "title": "Billing Model"
    },
    "mode": {
      "type": "string",
      "const": "funded",
      "title": "Mode"
    },
    "operation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CapacityOperation"
        },
        {
          "type": "null"
        }
      ]
    },
    "timeline": {
      "$ref": "#/components/schemas/CapacityTimeline"
    },
    "desired_capacity": {
      "$ref": "#/components/schemas/CapacityMandate"
    },
    "attention": {
      "$ref": "#/components/schemas/CapacityAttention"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "billing_model",
    "mode",
    "operation",
    "timeline",
    "desired_capacity",
    "attention"
  ],
  "title": "CurrentCapacity"
}
```

`CurrentVerificationBatch`

`object`

| Field | Type and constraints |
| --- | --- |
| `batch`Required  | [`VerificationBatchView`](https://startwave.io/docs/api/#schema-VerificationBatchView) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "batch": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/VerificationBatchView"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "batch"
  ],
  "title": "CurrentVerificationBatch"
}
```

`DailyDeliveryCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `dispatch_started`Required  | `integer` Minimum: `0.0`  |
| `accepted`Required  | `integer` Minimum: `0.0`  |
| `declined`Required  | `integer` Minimum: `0.0`  |
| `unknown`Required  | `integer` Minimum: `0.0`  |
| `pending`Required  | `integer` Minimum: `0.0`  |
| `reported_failed`Required  | `integer` Minimum: `0.0`  |
| `delivery_delayed`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "dispatch_started": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Dispatch Started"
    },
    "accepted": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted"
    },
    "declined": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Declined"
    },
    "unknown": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unknown"
    },
    "pending": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Pending"
    },
    "reported_failed": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Reported Failed"
    },
    "delivery_delayed": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Delivery Delayed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "dispatch_started",
    "accepted",
    "declined",
    "unknown",
    "pending",
    "reported_failed",
    "delivery_delayed"
  ],
  "title": "DailyDeliveryCounts"
}
```

`DailyDeliveryDay`

`object`

| Field | Type and constraints |
| --- | --- |
| `date`Required  | `string` |
| `start`Required  | `number` |
| `end`Required  | `number` |
| `counts`Required  | [`DailyDeliveryLanes`](https://startwave.io/docs/api/#schema-DailyDeliveryLanes) |

Complete schema

JSON schema

```
{
  "properties": {
    "date": {
      "type": "string",
      "title": "Date"
    },
    "start": {
      "type": "number",
      "title": "Start"
    },
    "end": {
      "type": "number",
      "title": "End"
    },
    "counts": {
      "$ref": "#/components/schemas/DailyDeliveryLanes"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "date",
    "start",
    "end",
    "counts"
  ],
  "title": "DailyDeliveryDay"
}
```

`DailyDeliveryDays`

`object`

| Field | Type and constraints |
| --- | --- |
| `definition`Required  | `"dispatch-cohort-daily-v1"` |
| `observed_at`Required  | `number` |
| `timezone`Required  | `string` |
| `campaign_id`Required  | `string` \| `null` |
| `window`Required  | [`DeliveryWindow`](https://startwave.io/docs/api/#schema-DeliveryWindow) |
| `days`Required  | array of [`DailyDeliveryDay`](https://startwave.io/docs/api/#schema-DailyDeliveryDay) |

Complete schema

JSON schema

```
{
  "properties": {
    "definition": {
      "type": "string",
      "const": "dispatch-cohort-daily-v1",
      "title": "Definition"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "campaign_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign Id"
    },
    "window": {
      "$ref": "#/components/schemas/DeliveryWindow"
    },
    "days": {
      "items": {
        "$ref": "#/components/schemas/DailyDeliveryDay"
      },
      "type": "array",
      "title": "Days"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "definition",
    "observed_at",
    "timezone",
    "campaign_id",
    "window",
    "days"
  ],
  "title": "DailyDeliveryDays"
}
```

`DailyDeliveryLanes`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | [`DailyDeliveryCounts`](https://startwave.io/docs/api/#schema-DailyDeliveryCounts) |
| `reply`Required  | [`DailyDeliveryCounts`](https://startwave.io/docs/api/#schema-DailyDeliveryCounts) |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "$ref": "#/components/schemas/DailyDeliveryCounts"
    },
    "reply": {
      "$ref": "#/components/schemas/DailyDeliveryCounts"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign",
    "reply"
  ],
  "title": "DailyDeliveryLanes"
}
```

`DataBalance`

`object`

| Field | Type and constraints |
| --- | --- |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `available_minor`Required  | `integer` |
| `promotional_minor`Optional  | `integer` Default: `0`  |
| `debt_minor`Optional  | `integer` Default: `0`  |
| `purchase_blocked`Optional  | `boolean` Default: `false`  |
| `signup_bonus`Optional  | [`SignupBonus`](https://startwave.io/docs/api/#schema-SignupBonus) |

Complete schema

JSON schema

```
{
  "properties": {
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "available_minor": {
      "type": "integer",
      "title": "Available Minor"
    },
    "promotional_minor": {
      "type": "integer",
      "title": "Promotional Minor",
      "default": 0
    },
    "debt_minor": {
      "type": "integer",
      "title": "Debt Minor",
      "default": 0
    },
    "purchase_blocked": {
      "type": "boolean",
      "title": "Purchase Blocked",
      "default": false
    },
    "signup_bonus": {
      "$ref": "#/components/schemas/SignupBonus"
    }
  },
  "type": "object",
  "required": [
    "available_minor"
  ],
  "title": "DataBalance"
}
```

`DataCapabilities`

`object`

| Field | Type and constraints |
| --- | --- |
| `purchases_enabled`Required  | `boolean` |
| `policies`Required  | array of [`DataPolicy`](https://startwave.io/docs/api/#schema-DataPolicy) |
| `field_schemas`Required  | array of [`DataFieldSchema`](https://startwave.io/docs/api/#schema-DataFieldSchema) |
| `max_direct_items`Optional  | `integer` Default: `100`  |
| `enrichment_enabled`Optional  | `boolean` Default: `false`  |
| `funding_enabled`Optional  | `boolean` Default: `false`  |
| `auto_funding_enabled`Optional  | `boolean` Default: `false`  |
| `bulk_enabled`Optional  | `boolean` Default: `false`  |
| `review_confirmation_enabled`Optional  | `boolean` Default: `true`  |
| `review_confirmation_max_rows`Optional  | `integer` Default: `100`  |
| `review_job_confirmation_enabled`Optional  | `boolean` Default: `true`  |
| `review_job_chunk_rows`Optional  | `integer` Default: `25`  |
| `review_confirmation_max_bytes`Optional  | `integer` Default: `1048576`  |
| `review_paid_confirmation_enabled`Optional  | `boolean` Default: `false`  |
| `exports_enabled`Optional  | `boolean` Default: `true`  |
| `export_formats`Optional  | array of `"csv" \| "json" \| "jsonl" \| "xlsx"` |
| `export_max_rows`Optional  | `integer` Default: `100`  |
| `export_max_bytes`Optional  | `integer` Default: `1048576`  |
| `export_retention_seconds`Optional  | `integer` Default: `86400`  |
| `export_workspace_artifacts`Optional  | `integer` Default: `8`  |
| `export_global_artifacts`Optional  | `integer` Default: `64`  |

Complete schema

JSON schema

```
{
  "properties": {
    "purchases_enabled": {
      "type": "boolean",
      "title": "Purchases Enabled"
    },
    "policies": {
      "items": {
        "$ref": "#/components/schemas/DataPolicy"
      },
      "type": "array",
      "title": "Policies"
    },
    "field_schemas": {
      "items": {
        "$ref": "#/components/schemas/DataFieldSchema"
      },
      "type": "array",
      "title": "Field Schemas"
    },
    "max_direct_items": {
      "type": "integer",
      "title": "Max Direct Items",
      "default": 100
    },
    "enrichment_enabled": {
      "type": "boolean",
      "title": "Enrichment Enabled",
      "default": false
    },
    "funding_enabled": {
      "type": "boolean",
      "title": "Funding Enabled",
      "default": false
    },
    "auto_funding_enabled": {
      "type": "boolean",
      "title": "Auto Funding Enabled",
      "default": false
    },
    "bulk_enabled": {
      "type": "boolean",
      "title": "Bulk Enabled",
      "default": false
    },
    "review_confirmation_enabled": {
      "type": "boolean",
      "title": "Review Confirmation Enabled",
      "default": true
    },
    "review_confirmation_max_rows": {
      "type": "integer",
      "title": "Review Confirmation Max Rows",
      "default": 100
    },
    "review_job_confirmation_enabled": {
      "type": "boolean",
      "title": "Review Job Confirmation Enabled",
      "default": true
    },
    "review_job_chunk_rows": {
      "type": "integer",
      "title": "Review Job Chunk Rows",
      "default": 25
    },
    "review_confirmation_max_bytes": {
      "type": "integer",
      "title": "Review Confirmation Max Bytes",
      "default": 1048576
    },
    "review_paid_confirmation_enabled": {
      "type": "boolean",
      "title": "Review Paid Confirmation Enabled",
      "default": false
    },
    "exports_enabled": {
      "type": "boolean",
      "title": "Exports Enabled",
      "default": true
    },
    "export_formats": {
      "items": {
        "type": "string",
        "enum": [
          "csv",
          "json",
          "jsonl",
          "xlsx"
        ]
      },
      "type": "array",
      "title": "Export Formats"
    },
    "export_max_rows": {
      "type": "integer",
      "title": "Export Max Rows",
      "default": 100
    },
    "export_max_bytes": {
      "type": "integer",
      "title": "Export Max Bytes",
      "default": 1048576
    },
    "export_retention_seconds": {
      "type": "integer",
      "title": "Export Retention Seconds",
      "default": 86400
    },
    "export_workspace_artifacts": {
      "type": "integer",
      "title": "Export Workspace Artifacts",
      "default": 8
    },
    "export_global_artifacts": {
      "type": "integer",
      "title": "Export Global Artifacts",
      "default": 64
    }
  },
  "type": "object",
  "required": [
    "purchases_enabled",
    "policies",
    "field_schemas"
  ],
  "title": "DataCapabilities"
}
```

`DataFieldSchema`

`object`

| Field | Type and constraints |
| --- | --- |
| `entity_type`Required  | `"person" \| "company"` |
| `effective`Required  | array of `string` Editable record fields and allowed effective export projection. |
| `licensed`Required  | array of `string` Owned snapshot fields and allowed licensed export projection; availability is not ownership. |
| `defaults`Required  | array of `string` Ordered default export fields from the approved dataset registry. |

Complete schema

JSON schema

```
{
  "properties": {
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "effective": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Effective",
      "description": "Editable record fields and allowed effective export projection."
    },
    "licensed": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Licensed",
      "description": "Owned snapshot fields and allowed licensed export projection; availability is not ownership."
    },
    "defaults": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Defaults",
      "description": "Ordered default export fields from the approved dataset registry."
    }
  },
  "type": "object",
  "required": [
    "entity_type",
    "effective",
    "licensed",
    "defaults"
  ],
  "title": "DataFieldSchema"
}
```

`DataPolicy`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `100` · Pattern: `"^[a-zA-Z0-9_-]+$"`  |
| `entity_type`Required  | `"person" \| "company"` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `unit_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `100000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "pattern": "^[a-zA-Z0-9_-]+$",
      "title": "Id"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "unit_amount_minor": {
      "type": "integer",
      "maximum": 100000.0,
      "minimum": 0.0,
      "title": "Unit Amount Minor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "entity_type",
    "unit_amount_minor"
  ],
  "title": "DataPolicy"
}
```

`DataUsage`

`object`

| Field | Type and constraints |
| --- | --- |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `available_minor`Required  | `integer` |
| `promotional_minor`Optional  | `integer` Default: `0`  |
| `debt_minor`Optional  | `integer` Default: `0`  |
| `purchase_blocked`Optional  | `boolean` Default: `false`  |
| `signup_bonus`Optional  | [`SignupBonus`](https://startwave.io/docs/api/#schema-SignupBonus) |
| `period`Required  | `string` |
| `automatic_exposure_minor`Required  | `integer` |
| `items`Required  | array of [`LedgerItem`](https://startwave.io/docs/api/#schema-LedgerItem) |
| `next_cursor`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "available_minor": {
      "type": "integer",
      "title": "Available Minor"
    },
    "promotional_minor": {
      "type": "integer",
      "title": "Promotional Minor",
      "default": 0
    },
    "debt_minor": {
      "type": "integer",
      "title": "Debt Minor",
      "default": 0
    },
    "purchase_blocked": {
      "type": "boolean",
      "title": "Purchase Blocked",
      "default": false
    },
    "signup_bonus": {
      "$ref": "#/components/schemas/SignupBonus"
    },
    "period": {
      "type": "string",
      "title": "Period"
    },
    "automatic_exposure_minor": {
      "type": "integer",
      "title": "Automatic Exposure Minor"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/LedgerItem"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "available_minor",
    "period",
    "automatic_exposure_minor",
    "items"
  ],
  "title": "DataUsage"
}
```

`DefaultCard`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `method`Required  | `string` Max length: `128` · Pattern: `"^pm_[A-Za-z0-9]+$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "pattern": "^[^_].*$",
      "title": "Id"
    },
    "revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Revision"
    },
    "method": {
      "type": "string",
      "maxLength": 128,
      "pattern": "^pm_[A-Za-z0-9]+$",
      "title": "Method"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "revision",
    "method"
  ],
  "title": "DefaultCard"
}
```

`DeliveredRow`

`object`

| Field | Type and constraints |
| --- | --- |
| `ordinal`Required  | `integer` |
| `key`Required  | `string` \| `null` |
| `record_id`Required  | `string` \| `null` |
| `version_id`Required  | `string` \| `null` |
| `grant_id`Required  | `string` \| `null` |
| `outcome`Required  | `"owned" \| "provided" \| "preview" \| "excluded"` |
| `fields`Required  | `object` \| `null` Original delivered projection, not a request for new fields. Historical keys are preserved without conversion. |
| `reason`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "ordinal": {
      "type": "integer",
      "title": "Ordinal"
    },
    "key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Key"
    },
    "record_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Record Id"
    },
    "version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Version Id"
    },
    "grant_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grant Id"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "owned",
        "provided",
        "preview",
        "excluded"
      ],
      "title": "Outcome"
    },
    "fields": {
      "anyOf": [
        {
          "additionalProperties": {
            "$ref": "#/components/schemas/JsonValue"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Fields",
      "description": "Original delivered projection, not a request for new fields. Historical keys are preserved without conversion."
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "ordinal",
    "key",
    "record_id",
    "version_id",
    "grant_id",
    "outcome",
    "fields",
    "reason"
  ],
  "title": "DeliveredRow"
}
```

`DeliveryCoverage`

`object`

| Field | Type and constraints |
| --- | --- |
| `placement`Required  | `"not_measured"` |
| `recipient_delivery`Required  | `"not_confirmed"` |
| `dsn`Required  | `"correlated_reports_and_receiver_attested_subset"` |
| `dispatch`Required  | `"recorded_intents_not_proven_submission"` |
| `history`Required  | `"not_backfilled"` |
| `reply_labels`Required  | `"current_triage"` |

Complete schema

JSON schema

```
{
  "properties": {
    "placement": {
      "type": "string",
      "const": "not_measured",
      "title": "Placement"
    },
    "recipient_delivery": {
      "type": "string",
      "const": "not_confirmed",
      "title": "Recipient Delivery"
    },
    "dsn": {
      "type": "string",
      "const": "correlated_reports_and_receiver_attested_subset",
      "title": "Dsn"
    },
    "dispatch": {
      "type": "string",
      "const": "recorded_intents_not_proven_submission",
      "title": "Dispatch"
    },
    "history": {
      "type": "string",
      "const": "not_backfilled",
      "title": "History"
    },
    "reply_labels": {
      "type": "string",
      "const": "current_triage",
      "title": "Reply Labels"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "placement",
    "recipient_delivery",
    "dsn",
    "dispatch",
    "history",
    "reply_labels"
  ],
  "title": "DeliveryCoverage"
}
```

`DeliveryDispatchCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `dispatch_started`Required  | `integer` Minimum: `0.0`  |
| `accepted`Required  | `integer` Minimum: `0.0`  |
| `declined`Required  | `integer` Minimum: `0.0`  |
| `unknown`Required  | `integer` Minimum: `0.0`  |
| `pending`Required  | `integer` Minimum: `0.0`  |
| `dispatch_acceptance_rate`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "dispatch_started": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Dispatch Started"
    },
    "accepted": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted"
    },
    "declined": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Declined"
    },
    "unknown": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unknown"
    },
    "pending": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Pending"
    },
    "dispatch_acceptance_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Dispatch Acceptance Rate"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "dispatch_started",
    "accepted",
    "declined",
    "unknown",
    "pending",
    "dispatch_acceptance_rate"
  ],
  "title": "DeliveryDispatchCounts"
}
```

`DeliveryDispatchLanes`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | [`DeliveryDispatchCounts`](https://startwave.io/docs/api/#schema-DeliveryDispatchCounts) |
| `reply`Required  | [`DeliveryDispatchCounts`](https://startwave.io/docs/api/#schema-DeliveryDispatchCounts) |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "$ref": "#/components/schemas/DeliveryDispatchCounts"
    },
    "reply": {
      "$ref": "#/components/schemas/DeliveryDispatchCounts"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "campaign",
    "reply"
  ],
  "title": "DeliveryDispatchLanes"
}
```

`DeliveryEngagement`

`object`

| Field | Type and constraints |
| --- | --- |
| `accepted_first_touches`Required  | `integer` Minimum: `0.0`  |
| `replied`Required  | `integer` Minimum: `0.0`  |
| `out_of_office_replies`Required  | `integer` Minimum: `0.0`  |
| `human_replied`Required  | `integer` Minimum: `0.0`  |
| `unclassified_replies`Required  | `integer` Minimum: `0.0`  |
| `reported_failed_first_touches`Required  | `integer` Minimum: `0.0`  |
| `human_reply_rate`Required  | `number` \| `null` |
| `reply_rate`Required  | `number` \| `null` |
| `reported_failure_rate`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "accepted_first_touches": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted First Touches"
    },
    "replied": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Replied"
    },
    "out_of_office_replies": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Out Of Office Replies"
    },
    "human_replied": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Human Replied"
    },
    "unclassified_replies": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unclassified Replies"
    },
    "reported_failed_first_touches": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Reported Failed First Touches"
    },
    "human_reply_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Human Reply Rate"
    },
    "reply_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reply Rate"
    },
    "reported_failure_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reported Failure Rate"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "accepted_first_touches",
    "replied",
    "out_of_office_replies",
    "human_replied",
    "unclassified_replies",
    "reported_failed_first_touches",
    "human_reply_rate",
    "reply_rate",
    "reported_failure_rate"
  ],
  "title": "DeliveryEngagement"
}
```

`DeliveryEvidence`

`object`

| Field | Type and constraints |
| --- | --- |
| `accepted_messages`Required  | `integer` Minimum: `0.0`  |
| `reported_failed_messages`Required  | `integer` Minimum: `0.0`  |
| `delayed_messages`Required  | `integer` Minimum: `0.0`  |
| `reported_failure_rate`Required  | `number` \| `null` |
| `lanes`Required  | [`DeliveryEvidenceLanes`](https://startwave.io/docs/api/#schema-DeliveryEvidenceLanes) |
| `no_reported_failure_messages`Required  | `integer` Minimum: `0.0`  |
| `no_reported_failure_rate`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "accepted_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted Messages"
    },
    "reported_failed_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Reported Failed Messages"
    },
    "delayed_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Delayed Messages"
    },
    "reported_failure_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reported Failure Rate"
    },
    "lanes": {
      "$ref": "#/components/schemas/DeliveryEvidenceLanes"
    },
    "no_reported_failure_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "No Reported Failure Messages"
    },
    "no_reported_failure_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "No Reported Failure Rate"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "accepted_messages",
    "reported_failed_messages",
    "delayed_messages",
    "reported_failure_rate",
    "lanes",
    "no_reported_failure_messages",
    "no_reported_failure_rate"
  ],
  "title": "DeliveryEvidence"
}
```

`DeliveryEvidenceLanes`

`object`

| Field | Type and constraints |
| --- | --- |
| `first_touch`Required  | [`DeliveryLaneEvidence`](https://startwave.io/docs/api/#schema-DeliveryLaneEvidence) |
| `follow_up`Required  | [`DeliveryLaneEvidence`](https://startwave.io/docs/api/#schema-DeliveryLaneEvidence) |
| `reply`Required  | [`DeliveryLaneEvidence`](https://startwave.io/docs/api/#schema-DeliveryLaneEvidence) |

Complete schema

JSON schema

```
{
  "properties": {
    "first_touch": {
      "$ref": "#/components/schemas/DeliveryLaneEvidence"
    },
    "follow_up": {
      "$ref": "#/components/schemas/DeliveryLaneEvidence"
    },
    "reply": {
      "$ref": "#/components/schemas/DeliveryLaneEvidence"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "first_touch",
    "follow_up",
    "reply"
  ],
  "title": "DeliveryEvidenceLanes"
}
```

`DeliveryLaneEvidence`

`object`

| Field | Type and constraints |
| --- | --- |
| `accepted_messages`Required  | `integer` Minimum: `0.0`  |
| `reported_failed_messages`Required  | `integer` Minimum: `0.0`  |
| `delayed_messages`Required  | `integer` Minimum: `0.0`  |
| `reported_failure_rate`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "accepted_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted Messages"
    },
    "reported_failed_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Reported Failed Messages"
    },
    "delayed_messages": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Delayed Messages"
    },
    "reported_failure_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reported Failure Rate"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "accepted_messages",
    "reported_failed_messages",
    "delayed_messages",
    "reported_failure_rate"
  ],
  "title": "DeliveryLaneEvidence"
}
```

`DeliveryReportedOutcome`

`object`

| Field | Type and constraints |
| --- | --- |
| `action`Required  | `string` |
| `status`Required  | `string` |
| `accepted_jobs`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "action": {
      "type": "string",
      "title": "Action"
    },
    "status": {
      "type": "string",
      "title": "Status"
    },
    "accepted_jobs": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted Jobs"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "action",
    "status",
    "accepted_jobs"
  ],
  "title": "DeliveryReportedOutcome"
}
```

`DeliverySummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `definition_version`Required  | `"delivery-v2"` |
| `window`Required  | [`DeliveryWindow`](https://startwave.io/docs/api/#schema-DeliveryWindow) |
| `observed_at`Required  | `number` |
| `campaign_id`Required  | `string` \| `null` |
| `counts`Required  | [`DeliveryDispatchLanes`](https://startwave.io/docs/api/#schema-DeliveryDispatchLanes) |
| `engagement`Required  | [`DeliveryEngagement`](https://startwave.io/docs/api/#schema-DeliveryEngagement) |
| `delivery_evidence`Required  | [`DeliveryEvidence`](https://startwave.io/docs/api/#schema-DeliveryEvidence) |
| `reported_outcomes`Required  | array of [`DeliveryReportedOutcome`](https://startwave.io/docs/api/#schema-DeliveryReportedOutcome) |
| `recipient_delivery_rate`Required  | `null` |
| `inbox_placement_rate`Required  | `null` |
| `coverage`Required  | [`DeliveryCoverage`](https://startwave.io/docs/api/#schema-DeliveryCoverage) |
| `definition`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "definition_version": {
      "type": "string",
      "const": "delivery-v2",
      "title": "Definition Version"
    },
    "window": {
      "$ref": "#/components/schemas/DeliveryWindow"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "campaign_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign Id"
    },
    "counts": {
      "$ref": "#/components/schemas/DeliveryDispatchLanes"
    },
    "engagement": {
      "$ref": "#/components/schemas/DeliveryEngagement"
    },
    "delivery_evidence": {
      "$ref": "#/components/schemas/DeliveryEvidence"
    },
    "reported_outcomes": {
      "items": {
        "$ref": "#/components/schemas/DeliveryReportedOutcome"
      },
      "type": "array",
      "title": "Reported Outcomes"
    },
    "recipient_delivery_rate": {
      "type": "null",
      "title": "Recipient Delivery Rate"
    },
    "inbox_placement_rate": {
      "type": "null",
      "title": "Inbox Placement Rate"
    },
    "coverage": {
      "$ref": "#/components/schemas/DeliveryCoverage"
    },
    "definition": {
      "type": "string",
      "title": "Definition"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "definition_version",
    "window",
    "observed_at",
    "campaign_id",
    "counts",
    "engagement",
    "delivery_evidence",
    "reported_outcomes",
    "recipient_delivery_rate",
    "inbox_placement_rate",
    "coverage",
    "definition"
  ],
  "title": "DeliverySummary"
}
```

`DeliveryWindow`

`object`

| Field | Type and constraints |
| --- | --- |
| `start`Required  | `number` |
| `end`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "start": {
      "type": "number",
      "title": "Start"
    },
    "end": {
      "type": "number",
      "title": "End"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "start",
    "end"
  ],
  "title": "DeliveryWindow"
}
```

`DoNotContactIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `event_id`Required  | `string` Min length: `1` · Max length: `256`  |
| `expected_reply_revision`Required  | `integer` Minimum: `1.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "event_id": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "title": "Event Id"
    },
    "expected_reply_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Reply Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "event_id",
    "expected_reply_revision"
  ],
  "title": "DoNotContactIn"
}
```

`DomainSetCapabilities`

`object`

| Field | Type and constraints |
| --- | --- |
| `enabled`Optional  | `boolean` Default: `true`  |
| `kind`Optional  | `"company_domain"` Default: `"company_domain"`  |
| `max_upload_rows`Optional  | `integer` Default: `10000`  |
| `max_upload_bytes`Optional  | `integer` Default: `4194304`  |
| `max_query_domains`Optional  | `integer` Default: `10000`  |
| `max_query_bytes`Optional  | `integer` Default: `4194304`  |
| `max_references`Optional  | `integer` Default: `2`  |
| `workspace_retained_sets`Optional  | `integer` Default: `25`  |
| `workspace_retained_bytes`Optional  | `integer` Default: `33554432`  |
| `installation_retained_bytes`Optional  | `integer` Default: `268435456`  |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled",
      "default": true
    },
    "kind": {
      "type": "string",
      "const": "company_domain",
      "title": "Kind",
      "default": "company_domain"
    },
    "max_upload_rows": {
      "type": "integer",
      "title": "Max Upload Rows",
      "default": 10000
    },
    "max_upload_bytes": {
      "type": "integer",
      "title": "Max Upload Bytes",
      "default": 4194304
    },
    "max_query_domains": {
      "type": "integer",
      "title": "Max Query Domains",
      "default": 10000
    },
    "max_query_bytes": {
      "type": "integer",
      "title": "Max Query Bytes",
      "default": 4194304
    },
    "max_references": {
      "type": "integer",
      "title": "Max References",
      "default": 2
    },
    "workspace_retained_sets": {
      "type": "integer",
      "title": "Workspace Retained Sets",
      "default": 25
    },
    "workspace_retained_bytes": {
      "type": "integer",
      "title": "Workspace Retained Bytes",
      "default": 33554432
    },
    "installation_retained_bytes": {
      "type": "integer",
      "title": "Installation Retained Bytes",
      "default": 268435456
    }
  },
  "type": "object",
  "title": "DomainSetCapabilities"
}
```

`DomainSetCreate`

`object`

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200` · Pattern: `"\\S"`  |
| `format`Required  | `"csv" \| "lines"` |
| `content`Required  | `string` Min length: `1` · Max length: `4194304`  |
| `allow_invalid_rows`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Name"
    },
    "format": {
      "type": "string",
      "enum": [
        "csv",
        "lines"
      ],
      "title": "Format"
    },
    "content": {
      "type": "string",
      "maxLength": 4194304,
      "minLength": 1,
      "title": "Content"
    },
    "allow_invalid_rows": {
      "type": "boolean",
      "title": "Allow Invalid Rows",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name",
    "format",
    "content"
  ],
  "title": "DomainSetCreate"
}
```

`DomainSetEdit`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `name`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "active",
            "archived"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "pattern": "\\S"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision"
  ],
  "title": "DomainSetEdit"
}
```

`DomainSetError`

`object`

| Field | Type and constraints |
| --- | --- |
| `row`Required  | `integer` |
| `code`Optional  | `"invalid_domain_identifier"` Default: `"invalid_domain_identifier"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "row": {
      "type": "integer",
      "title": "Row"
    },
    "code": {
      "type": "string",
      "const": "invalid_domain_identifier",
      "title": "Code",
      "default": "invalid_domain_identifier"
    }
  },
  "type": "object",
  "required": [
    "row"
  ],
  "title": "DomainSetError"
}
```

`DomainSetFilters`

`object`

| Field | Type and constraints |
| --- | --- |
| `include`Optional  | [`DomainSetReference`](https://startwave.io/docs/api/#schema-DomainSetReference) \| `null` |
| `exclude`Optional  | [`DomainSetReference`](https://startwave.io/docs/api/#schema-DomainSetReference) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "include": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DomainSetReference"
        },
        {
          "type": "null"
        }
      ]
    },
    "exclude": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DomainSetReference"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "DomainSetFilters"
}
```

`DomainSetReference`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Id"
    },
    "digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Digest"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "digest"
  ],
  "title": "DomainSetReference"
}
```

`DomainSetView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `name`Required  | `string` |
| `kind`Optional  | `"company_domain"` Default: `"company_domain"`  |
| `state`Required  | `"active" \| "archived"` |
| `revision`Required  | `integer` |
| `digest`Required  | `string` |
| `domain_count`Required  | `integer` |
| `input_rows`Required  | `integer` |
| `invalid_rows`Required  | `integer` |
| `duplicate_rows`Required  | `integer` |
| `payload_bytes`Required  | `integer` |
| `sample`Required  | array of `string` Max items: `20`  |
| `errors`Required  | array of [`DomainSetError`](https://startwave.io/docs/api/#schema-DomainSetError) Max items: `20`  |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "kind": {
      "type": "string",
      "const": "company_domain",
      "title": "Kind",
      "default": "company_domain"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "domain_count": {
      "type": "integer",
      "title": "Domain Count"
    },
    "input_rows": {
      "type": "integer",
      "title": "Input Rows"
    },
    "invalid_rows": {
      "type": "integer",
      "title": "Invalid Rows"
    },
    "duplicate_rows": {
      "type": "integer",
      "title": "Duplicate Rows"
    },
    "payload_bytes": {
      "type": "integer",
      "title": "Payload Bytes"
    },
    "sample": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "maxItems": 20,
      "title": "Sample"
    },
    "errors": {
      "items": {
        "$ref": "#/components/schemas/DomainSetError"
      },
      "type": "array",
      "maxItems": 20,
      "title": "Errors"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "name",
    "state",
    "revision",
    "digest",
    "domain_count",
    "input_rows",
    "invalid_rows",
    "duplicate_rows",
    "payload_bytes",
    "sample",
    "errors",
    "created_at",
    "updated_at"
  ],
  "title": "DomainSetView"
}
```

`EducationHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `school_name`Optional  | `string` \| `null` |
| `school_url`Optional  | `string` \| `null` |
| `school_location`Optional  | `string` \| `null` |
| `degree_name`Optional  | `string` \| `null` |
| `field_of_study`Optional  | `string` \| `null` |
| `start_year`Optional  | `string` \| `null` |
| `end_year`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "school_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "School Name"
    },
    "school_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "School Url"
    },
    "school_location": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "School Location"
    },
    "degree_name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Degree Name"
    },
    "field_of_study": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Field Of Study"
    },
    "start_year": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Start Year"
    },
    "end_year": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "End Year"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "EducationHistory"
}
```

`EffectiveSenderIdentity`

`object`

| Field | Type and constraints |
| --- | --- |
| `mailbox`Required  | `string` |
| `revision`Required  | `integer` |
| `full_name`Required  | `string` |
| `job_title`Required  | `string` |
| `effective_name`Required  | `string` |
| `effective_title`Required  | `string` |
| `source`Required  | `"mailbox" \| "local_part" \| "default" \| "mailbox_name"` |

Complete schema

JSON schema

```
{
  "properties": {
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "full_name": {
      "type": "string",
      "title": "Full Name"
    },
    "job_title": {
      "type": "string",
      "title": "Job Title"
    },
    "effective_name": {
      "type": "string",
      "title": "Effective Name"
    },
    "effective_title": {
      "type": "string",
      "title": "Effective Title"
    },
    "source": {
      "type": "string",
      "enum": [
        "mailbox",
        "local_part",
        "default",
        "mailbox_name"
      ],
      "title": "Source"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "mailbox",
    "revision",
    "full_name",
    "job_title",
    "effective_name",
    "effective_title",
    "source"
  ],
  "title": "EffectiveSenderIdentity"
}
```

`EligibilityCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `qualified`Optional  | `integer` Default: `0`  |
| `preparing`Optional  | `integer` Default: `0`  |
| `waiting`Optional  | `integer` Default: `0`  |
| `ineligible`Optional  | `integer` Default: `0`  |
| `contacted`Optional  | `integer` Default: `0`  |
| `stopped`Optional  | `integer` Default: `0`  |
| `needs_review`Optional  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "qualified": {
      "type": "integer",
      "title": "Qualified",
      "default": 0
    },
    "preparing": {
      "type": "integer",
      "title": "Preparing",
      "default": 0
    },
    "waiting": {
      "type": "integer",
      "title": "Waiting",
      "default": 0
    },
    "ineligible": {
      "type": "integer",
      "title": "Ineligible",
      "default": 0
    },
    "contacted": {
      "type": "integer",
      "title": "Contacted",
      "default": 0
    },
    "stopped": {
      "type": "integer",
      "title": "Stopped",
      "default": 0
    },
    "needs_review": {
      "type": "integer",
      "title": "Needs Review",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "EligibilityCounts"
}
```

`EmploymentComparison`

`object`

| Field | Type and constraints |
| --- | --- |
| `JOB_TITLE`Required  | `"unchanged" \| "changed" \| "became_available" \| "became_unavailable" \| "unavailable"` |
| `COMPANY_NAME`Required  | `"unchanged" \| "changed" \| "became_available" \| "became_unavailable" \| "unavailable"` |
| `COMPANY_DOMAIN`Required  | `"unchanged" \| "changed" \| "became_available" \| "became_unavailable" \| "unavailable"` |

Complete schema

JSON schema

```
{
  "properties": {
    "JOB_TITLE": {
      "type": "string",
      "enum": [
        "unchanged",
        "changed",
        "became_available",
        "became_unavailable",
        "unavailable"
      ],
      "title": "Job Title"
    },
    "COMPANY_NAME": {
      "type": "string",
      "enum": [
        "unchanged",
        "changed",
        "became_available",
        "became_unavailable",
        "unavailable"
      ],
      "title": "Company Name"
    },
    "COMPANY_DOMAIN": {
      "type": "string",
      "enum": [
        "unchanged",
        "changed",
        "became_available",
        "became_unavailable",
        "unavailable"
      ],
      "title": "Company Domain"
    }
  },
  "type": "object",
  "required": [
    "JOB_TITLE",
    "COMPANY_NAME",
    "COMPANY_DOMAIN"
  ],
  "title": "EmploymentComparison"
}
```

`EnrichmentMatch`

`object`

| Field | Type and constraints |
| --- | --- |
| `key`Required  | `string` |
| `status`Required  | `"matched" \| "ambiguous" \| "conflicting" \| "not_found"` |
| `record_id`Optional  | `string` \| `null` |
| `version_id`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "key": {
      "type": "string",
      "title": "Key"
    },
    "status": {
      "type": "string",
      "enum": [
        "matched",
        "ambiguous",
        "conflicting",
        "not_found"
      ],
      "title": "Status"
    },
    "record_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Record Id"
    },
    "version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Version Id"
    }
  },
  "type": "object",
  "required": [
    "key",
    "status"
  ],
  "title": "EnrichmentMatch"
}
```

`ExclusionBatchIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ExclusionIn`](https://startwave.io/docs/api/#schema-ExclusionIn) Min items: `1` · Max items: `200`  |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ExclusionIn"
      },
      "type": "array",
      "maxItems": 200,
      "minItems": 1,
      "title": "Items"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items"
  ],
  "title": "ExclusionBatchIn"
}
```

`ExclusionHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ExclusionOriginal`](https://startwave.io/docs/api/#schema-ExclusionOriginal) |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ExclusionOriginal"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ExclusionHistory"
}
```

`ExclusionIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `email`Optional  | `string` \| `null` |
| `domain`Optional  | `string` \| `null` |
| `reason`Required  | `string` Min length: `1` · Max length: `500` · Pattern: `"\\S"`  |
| `evidence`Required  | `string` Min length: `1` · Max length: `2000` · Pattern: `"\\S"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "email": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 254,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Email"
    },
    "domain": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 253,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Domain"
    },
    "reason": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Reason"
    },
    "evidence": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Evidence"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "reason",
    "evidence"
  ],
  "title": "ExclusionIn"
}
```

`ExclusionOriginal`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `id`Required  | `string` |
| `scope`Required  | `"email" \| "domain"` |
| `email`Optional  | `string` Present only for email scope. |
| `domain`Optional  | `string` Present only for domain scope. |
| `reason`Required  | `string` |
| `evidence`Required  | `string` |
| `actor`Required  | `string` |
| `added`Required  | `0 \| 1` |
| `created_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "scope": {
      "type": "string",
      "enum": [
        "email",
        "domain"
      ],
      "title": "Scope"
    },
    "email": {
      "type": "string",
      "title": "Email",
      "description": "Present only for email scope."
    },
    "domain": {
      "type": "string",
      "title": "Domain",
      "description": "Present only for domain scope."
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "evidence": {
      "type": "string",
      "title": "Evidence"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "added": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Added"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "id",
    "scope",
    "reason",
    "evidence",
    "actor",
    "added",
    "created_at"
  ],
  "title": "ExclusionOriginal"
}
```

`ExclusionPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ExclusionRecord`](https://startwave.io/docs/api/#schema-ExclusionRecord) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ExclusionRecord"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ExclusionPage"
}
```

`ExclusionRecord`

`object`

| Field | Type and constraints |
| --- | --- |
| `scope`Required  | `"email" \| "domain"` |
| `email`Optional  | `string` Present only for email scope. |
| `domain`Optional  | `string` Present only for domain scope. |
| `reason`Required  | `string` |
| `created_at`Required  | `number` |
| `cleanup_pending`Required  | `0 \| 1` |

Complete schema

JSON schema

```
{
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "email",
        "domain"
      ],
      "title": "Scope"
    },
    "email": {
      "type": "string",
      "title": "Email",
      "description": "Present only for email scope."
    },
    "domain": {
      "type": "string",
      "title": "Domain",
      "description": "Present only for domain scope."
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "cleanup_pending": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Cleanup Pending"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "scope",
    "reason",
    "created_at",
    "cleanup_pending"
  ],
  "title": "ExclusionRecord"
}
```

`ExclusionResults`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ExclusionOriginal`](https://startwave.io/docs/api/#schema-ExclusionOriginal) |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ExclusionOriginal"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items"
  ],
  "title": "ExclusionResults"
}
```

`ExpansionReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `additional_cents`Required  | `integer` |
| `added_daily_sends`Required  | `integer` |
| `allocated_daily_sends`Required  | `integer` |
| `lease_until`Required  | `string` |
| `committed_at`Required  | `string` |
| `next_term_cents`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "additional_cents": {
      "type": "integer",
      "title": "Additional Cents"
    },
    "added_daily_sends": {
      "type": "integer",
      "title": "Added Daily Sends"
    },
    "allocated_daily_sends": {
      "type": "integer",
      "title": "Allocated Daily Sends"
    },
    "lease_until": {
      "type": "string",
      "title": "Lease Until"
    },
    "committed_at": {
      "type": "string",
      "title": "Committed At"
    },
    "next_term_cents": {
      "type": "integer",
      "title": "Next Term Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "additional_cents",
    "added_daily_sends",
    "allocated_daily_sends",
    "lease_until",
    "committed_at",
    "next_term_cents"
  ],
  "title": "ExpansionReceipt"
}
```

`FacetOption`

`object`

| Field | Type and constraints |
| --- | --- |
| `value`Required  | `string` |
| `count`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "value": {
      "type": "string",
      "title": "Value"
    },
    "count": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Count"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "value",
    "count"
  ],
  "title": "FacetOption"
}
```

`FacetPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `field`Required  | `string` |
| `options`Required  | array of [`FacetOption`](https://startwave.io/docs/api/#schema-FacetOption) |
| `count_status`Required  | `"exact" \| "estimated" \| "lower_bound"` |
| `count_error_upper_bound`Required  | `integer` \| `null` |
| `scanned_candidates`Optional  | `integer` \| `null` |
| `truncated`Required  | `boolean` |
| `observed_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "field": {
      "type": "string",
      "title": "Field"
    },
    "options": {
      "items": {
        "$ref": "#/components/schemas/FacetOption"
      },
      "type": "array",
      "title": "Options"
    },
    "count_status": {
      "type": "string",
      "enum": [
        "exact",
        "estimated",
        "lower_bound"
      ],
      "title": "Count Status"
    },
    "count_error_upper_bound": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Count Error Upper Bound"
    },
    "scanned_candidates": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Scanned Candidates"
    },
    "truncated": {
      "type": "boolean",
      "title": "Truncated"
    },
    "observed_at": {
      "type": "string",
      "title": "Observed At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "field",
    "options",
    "count_status",
    "count_error_upper_bound",
    "truncated",
    "observed_at"
  ],
  "title": "FacetPage"
}
```

`FacetRequest`

`object`

| Field | Type and constraints |
| --- | --- |
| `query`Required  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) |
| `field`Required  | `string` Min length: `1` · Max length: `80`  |
| `text`Optional  | `string` Default: `""` · Max length: `80` · Pattern: `"^[^\\x00-\\x1f\\x7f]*$"`  |
| `limit`Optional  | `integer` Default: `50` · Minimum: `1.0` · Maximum: `100.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "query": {
      "$ref": "#/components/schemas/SearchQuery-Input"
    },
    "field": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "title": "Field"
    },
    "text": {
      "type": "string",
      "maxLength": 80,
      "pattern": "^[^\\x00-\\x1f\\x7f]*$",
      "title": "Text",
      "default": ""
    },
    "limit": {
      "type": "integer",
      "maximum": 100.0,
      "minimum": 1.0,
      "title": "Limit",
      "default": 50
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "query",
    "field"
  ],
  "title": "FacetRequest"
}
```

`FieldDefinition`

`object`

| Field | Type and constraints |
| --- | --- |
| `label`Required  | `string` |
| `group`Required  | `"Contact" \| "Company"` |
| `type`Required  | `"text" \| "date" \| "number" \| "integer" \| "strings" \| "text_list" \| "work_history" \| "education_history" \| "posts"` |
| `operators`Required  | array of `string` |
| `normalization`Required  | `"none" \| "email" \| "phone" \| "person_linkedin" \| "company_linkedin" \| "domain"` |
| `searchable`Required  | `boolean` |
| `facetable`Optional  | `boolean` Default: `false`  |
| `preview`Required  | `boolean` |
| `exportable`Required  | `boolean` |
| `fields`Optional  | `object` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "label": {
      "type": "string",
      "title": "Label"
    },
    "group": {
      "type": "string",
      "enum": [
        "Contact",
        "Company"
      ],
      "title": "Group"
    },
    "type": {
      "type": "string",
      "enum": [
        "text",
        "date",
        "number",
        "integer",
        "strings",
        "text_list",
        "work_history",
        "education_history",
        "posts"
      ],
      "title": "Type"
    },
    "operators": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Operators"
    },
    "normalization": {
      "type": "string",
      "enum": [
        "none",
        "email",
        "phone",
        "person_linkedin",
        "company_linkedin",
        "domain"
      ],
      "title": "Normalization"
    },
    "searchable": {
      "type": "boolean",
      "title": "Searchable"
    },
    "facetable": {
      "type": "boolean",
      "title": "Facetable",
      "default": false
    },
    "preview": {
      "type": "boolean",
      "title": "Preview"
    },
    "exportable": {
      "type": "boolean",
      "title": "Exportable"
    },
    "fields": {
      "anyOf": [
        {
          "additionalProperties": {
            "$ref": "#/components/schemas/NestedFieldDefinition"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Fields"
    }
  },
  "type": "object",
  "required": [
    "label",
    "group",
    "type",
    "operators",
    "normalization",
    "searchable",
    "preview",
    "exportable"
  ],
  "title": "FieldDefinition"
}
```

`FileReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `format`Optional  | `"csv_v1" \| "json_v1" \| "jsonl_v1" \| "xlsx_v1"` Default: `"csv_v1"`  |
| `columns`Required  | array of `string` Ordered column names recorded when this file was created. |
| `rows`Required  | `integer` Minimum: `0.0` · Maximum: `5000000.0`  |
| `bytes`Required  | `integer` Minimum: `1.0` · Maximum: `4294967296.0`  |
| `sha256`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `snapshot_at`Optional  | `string` \| `null` Exclusion exports: consistent database snapshot established when file generation begins. |

Complete schema

JSON schema

```
{
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "csv_v1",
        "json_v1",
        "jsonl_v1",
        "xlsx_v1"
      ],
      "title": "Format",
      "default": "csv_v1"
    },
    "columns": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Columns",
      "description": "Ordered column names recorded when this file was created."
    },
    "rows": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 0.0,
      "title": "Rows"
    },
    "bytes": {
      "type": "integer",
      "maximum": 4294967296.0,
      "minimum": 1.0,
      "title": "Bytes"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Sha256"
    },
    "snapshot_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Snapshot At",
      "description": "Exclusion exports: consistent database snapshot established when file generation begins."
    }
  },
  "type": "object",
  "required": [
    "columns",
    "rows",
    "bytes",
    "sha256"
  ],
  "title": "FileReceipt"
}
```

`FilterOption`

`object`

| Field | Type and constraints |
| --- | --- |
| `value`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `label`Required  | `string` Min length: `1` · Max length: `200` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "value": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[^\\x00-\\x1f\\x7f]+$",
      "title": "Value"
    },
    "label": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "pattern": "^[^\\x00-\\x1f\\x7f]+$",
      "title": "Label"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "value",
    "label"
  ],
  "title": "FilterOption"
}
```

`FilterOptions`

`object`

| Field | Type and constraints |
| --- | --- |
| `version`Required  | `string` Min length: `1` · Max length: `100` · Pattern: `"^[a-zA-Z0-9_-]+$"`  |
| `fields`Required  | array of [`FilterVocabulary`](https://startwave.io/docs/api/#schema-FilterVocabulary) Min items: `1` · Max items: `16`  |

Complete schema

JSON schema

```
{
  "properties": {
    "version": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "pattern": "^[a-zA-Z0-9_-]+$",
      "title": "Version"
    },
    "fields": {
      "items": {
        "$ref": "#/components/schemas/FilterVocabulary"
      },
      "type": "array",
      "maxItems": 16,
      "minItems": 1,
      "title": "Fields"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "version",
    "fields"
  ],
  "title": "FilterOptions"
}
```

`FilterVocabulary`

`object`

| Field | Type and constraints |
| --- | --- |
| `entity_type`Required  | `"person" \| "company"` |
| `field`Required  | `string` Min length: `1` · Max length: `80`  |
| `options`Required  | array of [`FilterOption`](https://startwave.io/docs/api/#schema-FilterOption) Min items: `1` · Max items: `256`  |

Complete schema

JSON schema

```
{
  "properties": {
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "field": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "title": "Field"
    },
    "options": {
      "items": {
        "$ref": "#/components/schemas/FilterOption"
      },
      "type": "array",
      "maxItems": 256,
      "minItems": 1,
      "title": "Options"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "entity_type",
    "field",
    "options"
  ],
  "title": "FilterVocabulary"
}
```

`FundingAmount`

`object`

| Field | Type and constraints |
| --- | --- |
| `amount_minor`Required  | `integer` Minimum: `500.0` · Maximum: `100000.0`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `billing_revision`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "amount_minor": {
      "type": "integer",
      "maximum": 100000.0,
      "minimum": 500.0,
      "title": "Amount Minor"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "billing_revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Billing Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "amount_minor",
    "billing_revision"
  ],
  "title": "FundingAmount"
}
```

`FundingConfirmation`

`object`

| Field | Type and constraints |
| --- | --- |
| `review_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "review_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Review Id"
    },
    "expected_digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Expected Digest"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "review_id",
    "expected_digest"
  ],
  "title": "FundingConfirmation"
}
```

`FundingHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`FundingHistoryItem`](https://startwave.io/docs/api/#schema-FundingHistoryItem) |
| `next_cursor`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/FundingHistoryItem"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items"
  ],
  "title": "FundingHistory"
}
```

`FundingHistoryItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `digest`Required  | `string` |
| `amount_minor`Required  | `integer` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `policy_id`Required  | `"data-funding-test-v1" \| "data-funding-live-v1"` |
| `method`Required  | `string` |
| `reviewed_method`Optional  | [`ReviewedCard`](https://startwave.io/docs/api/#schema-ReviewedCard) \| `null` Immutable original reviewed card label, not the current default or a later recovery method. Null means unavailable; never backfilled from live card metadata. |
| `billing_revision`Required  | `integer` |
| `mode`Required  | `"test" \| "live"` |
| `state`Required  | `"reviewed" \| "pending" \| "completed" \| "cancelled" \| "expired"` |
| `created_at`Required  | `number` |
| `expires_at`Required  | `number` |
| `automatic`Required  | `boolean` |
| `submitted_at`Optional  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "policy_id": {
      "type": "string",
      "enum": [
        "data-funding-test-v1",
        "data-funding-live-v1"
      ],
      "title": "Policy Id"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "reviewed_method": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedCard"
        },
        {
          "type": "null"
        }
      ],
      "description": "Immutable original reviewed card label, not the current default or a later recovery method. Null means unavailable; never backfilled from live card metadata."
    },
    "billing_revision": {
      "type": "integer",
      "title": "Billing Revision"
    },
    "mode": {
      "type": "string",
      "enum": [
        "test",
        "live"
      ],
      "title": "Mode"
    },
    "state": {
      "type": "string",
      "enum": [
        "reviewed",
        "pending",
        "completed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "automatic": {
      "type": "boolean",
      "title": "Automatic"
    },
    "submitted_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Submitted At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "digest",
    "amount_minor",
    "policy_id",
    "method",
    "billing_revision",
    "mode",
    "state",
    "created_at",
    "expires_at",
    "automatic"
  ],
  "title": "FundingHistoryItem"
}
```

`FundingReadiness`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"ready" \| "card_required" \| "consent_required" \| "unavailable" \| "restricted" \| "attention"` |
| `available_minor`Required  | `integer` |
| `has_card`Required  | `boolean` |
| `automatic_charge_minor`Optional  | `integer` Default: `0`  |
| `blocker`Optional  | `string` Default: `""`  |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "ready",
        "card_required",
        "consent_required",
        "unavailable",
        "restricted",
        "attention"
      ],
      "title": "State"
    },
    "available_minor": {
      "type": "integer",
      "title": "Available Minor"
    },
    "has_card": {
      "type": "boolean",
      "title": "Has Card"
    },
    "automatic_charge_minor": {
      "type": "integer",
      "title": "Automatic Charge Minor",
      "default": 0
    },
    "blocker": {
      "type": "string",
      "title": "Blocker",
      "default": ""
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "available_minor",
    "has_card"
  ],
  "title": "FundingReadiness"
}
```

`FundingReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `digest`Required  | `string` |
| `amount_minor`Required  | `integer` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `policy_id`Required  | `"data-funding-test-v1" \| "data-funding-live-v1"` |
| `method`Required  | `string` |
| `reviewed_method`Optional  | [`ReviewedCard`](https://startwave.io/docs/api/#schema-ReviewedCard) \| `null` Immutable original reviewed card label, not the current default or a later recovery method. Null means unavailable; never backfilled from live card metadata. |
| `billing_revision`Required  | `integer` |
| `mode`Required  | `"test" \| "live"` |
| `state`Required  | `"reviewed" \| "pending" \| "completed" \| "cancelled" \| "expired"` |
| `created_at`Required  | `number` |
| `expires_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "policy_id": {
      "type": "string",
      "enum": [
        "data-funding-test-v1",
        "data-funding-live-v1"
      ],
      "title": "Policy Id"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "reviewed_method": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedCard"
        },
        {
          "type": "null"
        }
      ],
      "description": "Immutable original reviewed card label, not the current default or a later recovery method. Null means unavailable; never backfilled from live card metadata."
    },
    "billing_revision": {
      "type": "integer",
      "title": "Billing Revision"
    },
    "mode": {
      "type": "string",
      "enum": [
        "test",
        "live"
      ],
      "title": "Mode"
    },
    "state": {
      "type": "string",
      "enum": [
        "reviewed",
        "pending",
        "completed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "digest",
    "amount_minor",
    "policy_id",
    "method",
    "billing_revision",
    "mode",
    "state",
    "created_at",
    "expires_at"
  ],
  "title": "FundingReview"
}
```

`FundingView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `digest`Required  | `string` |
| `amount_minor`Required  | `integer` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `policy_id`Required  | `"data-funding-test-v1" \| "data-funding-live-v1"` |
| `method`Required  | `string` |
| `reviewed_method`Optional  | [`ReviewedCard`](https://startwave.io/docs/api/#schema-ReviewedCard) \| `null` Immutable original reviewed card label, not the current default or a later recovery method. Null means unavailable; never backfilled from live card metadata. |
| `billing_revision`Required  | `integer` |
| `mode`Required  | `"test" \| "live"` |
| `state`Required  | `"reviewed" \| "pending" \| "completed" \| "cancelled" \| "expired"` |
| `created_at`Required  | `number` |
| `expires_at`Required  | `number` |
| `status`Required  | `"reviewed" \| "creation_unknown" \| "requires_payment_method" \| "requires_confirmation" \| "requires_action" \| "processing" \| "succeeded" \| "canceled" \| "expired"` |
| `client_secret`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "policy_id": {
      "type": "string",
      "enum": [
        "data-funding-test-v1",
        "data-funding-live-v1"
      ],
      "title": "Policy Id"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "reviewed_method": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedCard"
        },
        {
          "type": "null"
        }
      ],
      "description": "Immutable original reviewed card label, not the current default or a later recovery method. Null means unavailable; never backfilled from live card metadata."
    },
    "billing_revision": {
      "type": "integer",
      "title": "Billing Revision"
    },
    "mode": {
      "type": "string",
      "enum": [
        "test",
        "live"
      ],
      "title": "Mode"
    },
    "state": {
      "type": "string",
      "enum": [
        "reviewed",
        "pending",
        "completed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "status": {
      "type": "string",
      "enum": [
        "reviewed",
        "creation_unknown",
        "requires_payment_method",
        "requires_confirmation",
        "requires_action",
        "processing",
        "succeeded",
        "canceled",
        "expired"
      ],
      "title": "Status"
    },
    "client_secret": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Client Secret"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "digest",
    "amount_minor",
    "policy_id",
    "method",
    "billing_revision",
    "mode",
    "state",
    "created_at",
    "expires_at",
    "status"
  ],
  "title": "FundingView"
}
```

`HTTPValidationError`

`object`

| Field | Type and constraints |
| --- | --- |
| `detail`Optional  | array of [`ValidationError`](https://startwave.io/docs/api/#schema-ValidationError) |

Complete schema

JSON schema

```
{
  "properties": {
    "detail": {
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      },
      "type": "array",
      "title": "Detail"
    }
  },
  "type": "object",
  "title": "HTTPValidationError"
}
```

`HandoffRecipient`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `email`Required  | `string` |
| `name`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "name": {
      "type": "string",
      "title": "Name"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "email",
    "name"
  ],
  "title": "HandoffRecipient"
}
```

`HandoffSnapshot`

`object`

| Field | Type and constraints |
| --- | --- |
| `person`Required  | [`HandoffRecipient`](https://startwave.io/docs/api/#schema-HandoffRecipient) |
| `route`Required  | [`ReplyRule`](https://startwave.io/docs/api/#schema-ReplyRule) |
| `config_revision`Required  | `integer` |
| `recipients`Required  | array of `string` Min items: `2` · Max items: `2`  |

Complete schema

JSON schema

```
{
  "properties": {
    "person": {
      "$ref": "#/components/schemas/HandoffRecipient"
    },
    "route": {
      "$ref": "#/components/schemas/ReplyRule"
    },
    "config_revision": {
      "type": "integer",
      "title": "Config Revision"
    },
    "recipients": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "maxItems": 2,
      "minItems": 2,
      "title": "Recipients"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "person",
    "route",
    "config_revision",
    "recipients"
  ],
  "title": "HandoffSnapshot"
}
```

`HistoricalPlacementProviders`

`object`

Retained provider maps predate placement-v1 normalization and are returned without revalidation.

Complete schema

JSON schema

```
{
  "additionalProperties": true,
  "type": "object",
  "title": "HistoricalPlacementProviders",
  "description": "Retained provider maps predate placement-v1 normalization and are returned without revalidation.",
  "x-opaque-reason": "Historical provider group keys and values are immutable evidence predating placement-v1 normalization."
}
```

`IdentifierDefinition`

`object`

| Field | Type and constraints |
| --- | --- |
| `label`Required  | `string` |
| `fields`Required  | array of `string` |
| `default`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "label": {
      "type": "string",
      "title": "Label"
    },
    "fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Fields"
    },
    "default": {
      "type": "boolean",
      "title": "Default"
    }
  },
  "type": "object",
  "required": [
    "label",
    "fields",
    "default"
  ],
  "title": "IdentifierDefinition"
}
```

`IdentifierUnlock`

`object`

| Field | Type and constraints |
| --- | --- |
| `inputs`Required  | array of [`ResolveInput`](https://startwave.io/docs/api/#schema-ResolveInput) Min items: `1` · Max items: `100`  |
| `policy_id`Required  | `string` Min length: `1` · Max length: `100`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `10000000.0`  |
| `action`Required  | `"unlock"` |
| `resource`Required  | `"people" \| "companies"` |

Complete schema

JSON schema

```
{
  "properties": {
    "inputs": {
      "items": {
        "$ref": "#/components/schemas/ResolveInput"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Inputs"
    },
    "policy_id": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "title": "Policy Id"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor"
    },
    "action": {
      "type": "string",
      "const": "unlock",
      "title": "Action"
    },
    "resource": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Resource"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "inputs",
    "policy_id",
    "max_amount_minor",
    "action",
    "resource"
  ],
  "title": "IdentifierUnlock"
}
```

`ImportCapabilities`

`object`

| Field | Type and constraints |
| --- | --- |
| `kinds`Optional  | array of `string` Default: `["records", "identifiers", "ids", "suppressions", "contact_history"]`  |
| `formats`Optional  | array of `"csv" \| "ndjson"` Default: `["csv", "ndjson"]`  |
| `column_schemas`Required  | array of [`ImportColumnSchema`](https://startwave.io/docs/api/#schema-ImportColumnSchema) Accepted staging columns, including optional caller key. Identifier availability additionally requires the current search schema. |
| `max_columns`Optional  | `integer` Default: `200`  |
| `campaign_fields`Optional  | `boolean` Person record uploads accept an optional campaign_fields string map; CSV targets use campaign_fields.<variable>. These supplied variables are for campaign admission, not catalogue data. Default: `true`  |
| `max_chunk_bytes`Optional  | `integer` Default: `1048576`  |
| `max_chunk_rows`Optional  | `integer` Default: `1000`  |
| `max_chunks`Optional  | `integer` Default: `50000`  |
| `max_row_bytes`Optional  | `integer` Default: `270336`  |
| `max_rows`Optional  | `integer` Default: `5000000`  |
| `max_bytes`Optional  | `integer` Default: `8589934592`  |
| `workspace_reserved_bytes`Optional  | `integer` Default: `17179869184`  |
| `global_reserved_bytes`Optional  | `integer` Default: `68719476736`  |
| `workspace_reserved_rows`Optional  | `integer` Default: `5000000`  |
| `global_reserved_rows`Optional  | `integer` Default: `20000000`  |
| `workspace_active_imports`Optional  | `integer` Default: `100`  |
| `global_active_imports`Optional  | `integer` Default: `1000`  |
| `retention_seconds`Optional  | `integer` Default: `86400`  |
| `execution_enabled`Optional  | `boolean` Default: `true`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kinds": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Kinds",
      "default": [
        "records",
        "identifiers",
        "ids",
        "suppressions",
        "contact_history"
      ]
    },
    "formats": {
      "items": {
        "type": "string",
        "enum": [
          "csv",
          "ndjson"
        ]
      },
      "type": "array",
      "title": "Formats",
      "default": [
        "csv",
        "ndjson"
      ]
    },
    "column_schemas": {
      "items": {
        "$ref": "#/components/schemas/ImportColumnSchema"
      },
      "type": "array",
      "title": "Column Schemas",
      "description": "Accepted staging columns, including optional caller key. Identifier availability additionally requires the current search schema."
    },
    "max_columns": {
      "type": "integer",
      "title": "Max Columns",
      "default": 200
    },
    "campaign_fields": {
      "type": "boolean",
      "title": "Campaign Fields",
      "description": "Person record uploads accept an optional campaign_fields string map; CSV targets use campaign_fields.<variable>. These supplied variables are for campaign admission, not catalogue data.",
      "default": true
    },
    "max_chunk_bytes": {
      "type": "integer",
      "title": "Max Chunk Bytes",
      "default": 1048576
    },
    "max_chunk_rows": {
      "type": "integer",
      "title": "Max Chunk Rows",
      "default": 1000
    },
    "max_chunks": {
      "type": "integer",
      "title": "Max Chunks",
      "default": 50000
    },
    "max_row_bytes": {
      "type": "integer",
      "title": "Max Row Bytes",
      "default": 270336
    },
    "max_rows": {
      "type": "integer",
      "title": "Max Rows",
      "default": 5000000
    },
    "max_bytes": {
      "type": "integer",
      "title": "Max Bytes",
      "default": 8589934592
    },
    "workspace_reserved_bytes": {
      "type": "integer",
      "title": "Workspace Reserved Bytes",
      "default": 17179869184
    },
    "global_reserved_bytes": {
      "type": "integer",
      "title": "Global Reserved Bytes",
      "default": 68719476736
    },
    "workspace_reserved_rows": {
      "type": "integer",
      "title": "Workspace Reserved Rows",
      "default": 5000000
    },
    "global_reserved_rows": {
      "type": "integer",
      "title": "Global Reserved Rows",
      "default": 20000000
    },
    "workspace_active_imports": {
      "type": "integer",
      "title": "Workspace Active Imports",
      "default": 100
    },
    "global_active_imports": {
      "type": "integer",
      "title": "Global Active Imports",
      "default": 1000
    },
    "retention_seconds": {
      "type": "integer",
      "title": "Retention Seconds",
      "default": 86400
    },
    "execution_enabled": {
      "type": "boolean",
      "title": "Execution Enabled",
      "default": true
    }
  },
  "type": "object",
  "required": [
    "column_schemas"
  ],
  "title": "ImportCapabilities"
}
```

`ImportColumnSchema`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"records" \| "identifiers" \| "ids" \| "suppressions" \| "contact_history"` |
| `entity_type`Required  | `"person" \| "company"` \| `null` |
| `fields`Required  | array of `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "records",
        "identifiers",
        "ids",
        "suppressions",
        "contact_history"
      ],
      "title": "Kind"
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "person",
            "company"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Type"
    },
    "fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Fields"
    }
  },
  "type": "object",
  "required": [
    "kind",
    "entity_type",
    "fields"
  ],
  "title": "ImportColumnSchema"
}
```

`ImportCreate`

`object`

| Field | Type and constraints |
| --- | --- |
| `entity_type`Optional  | `"person" \| "company"` \| `null` |
| `kind`Required  | `"records" \| "identifiers" \| "ids" \| "suppressions" \| "contact_history"` |
| `defaults`Optional  | [`SuppressionDefaults`](https://startwave.io/docs/api/#schema-SuppressionDefaults) \| `null` |
| `history_source`Optional  | `string` \| `null` Optional immutable source label for contact-history rows without their own source column. |
| `format`Optional  | `"ndjson" \| "csv"` Default: `"ndjson"`  |
| `columns`Optional  | `object` |
| `max_rows`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `max_bytes`Required  | `integer` Minimum: `1.0` · Maximum: `8589934592.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "entity_type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "person",
            "company"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Type"
    },
    "kind": {
      "type": "string",
      "enum": [
        "records",
        "identifiers",
        "ids",
        "suppressions",
        "contact_history"
      ],
      "title": "Kind"
    },
    "defaults": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SuppressionDefaults"
        },
        {
          "type": "null"
        }
      ]
    },
    "history_source": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "pattern": "^[^\\x00-\\x1f\\x7f]+$"
        },
        {
          "type": "null"
        }
      ],
      "title": "History Source",
      "description": "Optional immutable source label for contact-history rows without their own source column."
    },
    "format": {
      "type": "string",
      "enum": [
        "ndjson",
        "csv"
      ],
      "title": "Format",
      "default": "ndjson"
    },
    "columns": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "maxProperties": 200,
      "title": "Columns"
    },
    "max_rows": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Max Rows"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 8589934592.0,
      "minimum": 1.0,
      "title": "Max Bytes"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "max_rows",
    "max_bytes"
  ],
  "title": "ImportCreate"
}
```

`ImportRow`

`object`

| Field | Type and constraints |
| --- | --- |
| `ordinal`Required  | `integer` |
| `key`Required  | `string` \| `null` |
| `data`Required  | `object` \| `null` |
| `error`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "ordinal": {
      "type": "integer",
      "title": "Ordinal"
    },
    "key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Key"
    },
    "data": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Data"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error"
    }
  },
  "type": "object",
  "required": [
    "ordinal",
    "key",
    "data",
    "error"
  ],
  "title": "ImportRow"
}
```

`ImportRows`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ImportRow`](https://startwave.io/docs/api/#schema-ImportRow) |
| `next_after`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ImportRow"
      },
      "type": "array",
      "title": "Items"
    },
    "next_after": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next After"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_after"
  ],
  "title": "ImportRows"
}
```

`ImportSeal`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_chunks`Required  | `integer` Minimum: `1.0` · Maximum: `50000.0`  |
| `expected_rows`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `allow_invalid_rows`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_chunks": {
      "type": "integer",
      "maximum": 50000.0,
      "minimum": 1.0,
      "title": "Expected Chunks"
    },
    "expected_rows": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Expected Rows"
    },
    "expected_digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Expected Digest"
    },
    "allow_invalid_rows": {
      "type": "boolean",
      "title": "Allow Invalid Rows",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_chunks",
    "expected_rows",
    "expected_digest"
  ],
  "title": "ImportSeal"
}
```

`ImportView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"uploading" \| "sealed" \| "cancelled" \| "expired"` |
| `parameters`Required  | [`ManifestConfig`](https://startwave.io/docs/api/#schema-ManifestConfig) |
| `chunks`Required  | `integer` |
| `rows`Required  | `integer` |
| `valid_rows`Required  | `integer` |
| `invalid_rows`Required  | `integer` |
| `uploaded_bytes`Required  | `integer` |
| `digest`Required  | `string` |
| `created_at`Required  | `string` |
| `expires_at`Required  | `string` |
| `sealed_at`Required  | `string` \| `null` |
| `purged`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "uploading",
        "sealed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "parameters": {
      "$ref": "#/components/schemas/ManifestConfig"
    },
    "chunks": {
      "type": "integer",
      "title": "Chunks"
    },
    "rows": {
      "type": "integer",
      "title": "Rows"
    },
    "valid_rows": {
      "type": "integer",
      "title": "Valid Rows"
    },
    "invalid_rows": {
      "type": "integer",
      "title": "Invalid Rows"
    },
    "uploaded_bytes": {
      "type": "integer",
      "title": "Uploaded Bytes"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    },
    "sealed_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sealed At"
    },
    "purged": {
      "type": "boolean",
      "title": "Purged"
    }
  },
  "type": "object",
  "required": [
    "id",
    "state",
    "parameters",
    "chunks",
    "rows",
    "valid_rows",
    "invalid_rows",
    "uploaded_bytes",
    "digest",
    "created_at",
    "expires_at",
    "sealed_at",
    "purged"
  ],
  "title": "ImportView"
}
```

`InboundAvailability`

`object`

| Field | Type and constraints |
| --- | --- |
| `observed_at`Required  | `number` |
| `available_daily_limit`Required  | `integer` Minimum: `0.0`  |
| `available_remaining_units`Required  | `integer` Minimum: `0.0`  |
| `unavailable_mailboxes`Required  | `integer` Minimum: `0.0`  |
| `issues`Required  | array of [`InboundIssue`](https://startwave.io/docs/api/#schema-InboundIssue) Max items: `1000`  |

Complete schema

JSON schema

```
{
  "properties": {
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "available_daily_limit": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Available Daily Limit"
    },
    "available_remaining_units": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Available Remaining Units"
    },
    "unavailable_mailboxes": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unavailable Mailboxes"
    },
    "issues": {
      "items": {
        "$ref": "#/components/schemas/InboundIssue"
      },
      "type": "array",
      "maxItems": 1000,
      "title": "Issues"
    }
  },
  "type": "object",
  "required": [
    "observed_at",
    "available_daily_limit",
    "available_remaining_units",
    "unavailable_mailboxes",
    "issues"
  ],
  "title": "InboundAvailability"
}
```

`InboundIssue`

`object`

| Field | Type and constraints |
| --- | --- |
| `mailbox`Required  | `string` |
| `reason`Required  | `string` |
| `last_checked_at`Required  | `number` \| `null` |
| `last_success_at`Required  | `number` \| `null` |
| `failure_since`Required  | `number` \| `null` |
| `failure_count`Required  | `integer` Minimum: `0.0`  |
| `next_retry_at`Required  | `number` \| `null` |
| `duration_ms`Required  | `integer` \| `null` |
| `severity`Required  | `"retrying" \| "attention"` |

Complete schema

JSON schema

```
{
  "properties": {
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "last_checked_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Checked At"
    },
    "last_success_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Success At"
    },
    "failure_since": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Failure Since"
    },
    "failure_count": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Failure Count"
    },
    "next_retry_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Retry At"
    },
    "duration_ms": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Duration Ms"
    },
    "severity": {
      "type": "string",
      "enum": [
        "retrying",
        "attention"
      ],
      "title": "Severity"
    }
  },
  "type": "object",
  "required": [
    "mailbox",
    "reason",
    "last_checked_at",
    "last_success_at",
    "failure_since",
    "failure_count",
    "next_retry_at",
    "duration_ms",
    "severity"
  ],
  "title": "InboundIssue"
}
```

`InboundMessage`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `direction`Required  | `"in" \| "out"` |
| `authorship`Required  | `"external" \| "campaign" \| "human" \| "automation"` |
| `occurred_at`Required  | `number` |
| `event_id`Required  | `string` |
| `message_id`Required  | `string` |
| `kind`Required  | `string` |
| `content`Required  | `string` |
| `intent`Required  | `string` |
| `revision`Required  | `integer` |
| `delivery_action`Required  | `string` \| `null` |
| `delivery_status`Required  | `string` \| `null` |
| `delivery_confidence`Required  | `string` \| `null` |
| `classification`Optional  | [`ReplyClassificationObservation`](https://startwave.io/docs/api/#schema-ReplyClassificationObservation) \| [`AgentClassificationObservation`](https://startwave.io/docs/api/#schema-AgentClassificationObservation) |
| `participants`Required  | [`MessageParticipants`](https://startwave.io/docs/api/#schema-MessageParticipants) \| `null` |
| `subject`Optional  | `string` |
| `attachments`Optional  | array of [`MessageAttachment`](https://startwave.io/docs/api/#schema-MessageAttachment) |
| `attachments_state`Optional  | `"available" \| "none" \| "unavailable" \| "original_only"` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "direction": {
      "type": "string",
      "enum": [
        "in",
        "out"
      ],
      "title": "Direction"
    },
    "authorship": {
      "type": "string",
      "enum": [
        "external",
        "campaign",
        "human",
        "automation"
      ],
      "title": "Authorship"
    },
    "occurred_at": {
      "type": "number",
      "title": "Occurred At"
    },
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "message_id": {
      "type": "string",
      "title": "Message Id"
    },
    "kind": {
      "type": "string",
      "title": "Kind"
    },
    "content": {
      "type": "string",
      "title": "Content"
    },
    "intent": {
      "type": "string",
      "title": "Intent"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "delivery_action": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Delivery Action"
    },
    "delivery_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Delivery Status"
    },
    "delivery_confidence": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Delivery Confidence"
    },
    "classification": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReplyClassificationObservation"
        },
        {
          "$ref": "#/components/schemas/AgentClassificationObservation"
        }
      ],
      "title": "Classification"
    },
    "participants": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MessageParticipants"
        },
        {
          "type": "null"
        }
      ]
    },
    "subject": {
      "type": "string",
      "title": "Subject"
    },
    "attachments": {
      "items": {
        "$ref": "#/components/schemas/MessageAttachment"
      },
      "type": "array",
      "title": "Attachments"
    },
    "attachments_state": {
      "type": "string",
      "enum": [
        "available",
        "none",
        "unavailable",
        "original_only"
      ],
      "title": "Attachments State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "direction",
    "authorship",
    "occurred_at",
    "event_id",
    "message_id",
    "kind",
    "content",
    "intent",
    "revision",
    "delivery_action",
    "delivery_status",
    "delivery_confidence",
    "participants"
  ],
  "title": "InboundMessage"
}
```

`InboxEvent`

`object`

| Field | Type and constraints |
| --- | --- |
| `event_id`Required  | `string` |
| `message_id`Required  | `string` |
| `kind`Required  | `string` |
| `content`Required  | `string` |
| `received_at`Required  | `number` |
| `intent`Required  | `string` |
| `revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "message_id": {
      "type": "string",
      "title": "Message Id"
    },
    "kind": {
      "type": "string",
      "title": "Kind"
    },
    "content": {
      "type": "string",
      "title": "Content"
    },
    "received_at": {
      "type": "number",
      "title": "Received At"
    },
    "intent": {
      "type": "string",
      "title": "Intent"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "event_id",
    "message_id",
    "kind",
    "content",
    "received_at",
    "intent",
    "revision"
  ],
  "title": "InboxEvent"
}
```

`InboxPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`InboxEvent`](https://startwave.io/docs/api/#schema-InboxEvent) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/InboxEvent"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "InboxPage"
}
```

`IncludedAdmission`

`object`

| Field | Type and constraints |
| --- | --- |
| `person_id`Required  | `string` |
| `grant_id`Required  | `string` |
| `benefit_id`Required  | `string` \| `null` |
| `planned_at`Required  | `number` |
| `access_origin`Required  | `"included_sequence" \| "already_owned"` |

Complete schema

JSON schema

```
{
  "properties": {
    "person_id": {
      "type": "string",
      "title": "Person Id"
    },
    "grant_id": {
      "type": "string",
      "title": "Grant Id"
    },
    "benefit_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Benefit Id"
    },
    "planned_at": {
      "type": "number",
      "title": "Planned At"
    },
    "access_origin": {
      "type": "string",
      "enum": [
        "included_sequence",
        "already_owned"
      ],
      "title": "Access Origin"
    }
  },
  "type": "object",
  "required": [
    "person_id",
    "grant_id",
    "benefit_id",
    "planned_at",
    "access_origin"
  ],
  "title": "IncludedAdmission"
}
```

`IncludedPreparationCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `name_checks_authorized`Optional  | `integer` Default: `0`  |
| `name_reserve_authorized_usd_micros`Optional  | `integer` Default: `0`  |
| `candidates`Optional  | `integer` Default: `0`  |
| `checks_authorized`Optional  | `integer` Default: `0`  |
| `check_cost_authorized_cents`Optional  | `integer` Default: `0`  |
| `pending`Optional  | `integer` Default: `0`  |
| `validated`Optional  | `integer` Default: `0`  |
| `held`Optional  | `integer` Default: `0`  |
| `cancelled`Optional  | `integer` Default: `0`  |
| `included`Optional  | `integer` Default: `0`  |
| `admitted`Optional  | `integer` Default: `0`  |
| `grant_waits`Optional  | `object` |
| `held_reasons`Optional  | `object` |

Complete schema

JSON schema

```
{
  "properties": {
    "name_checks_authorized": {
      "type": "integer",
      "title": "Name Checks Authorized",
      "default": 0
    },
    "name_reserve_authorized_usd_micros": {
      "type": "integer",
      "title": "Name Reserve Authorized Usd Micros",
      "default": 0
    },
    "candidates": {
      "type": "integer",
      "title": "Candidates",
      "default": 0
    },
    "checks_authorized": {
      "type": "integer",
      "title": "Checks Authorized",
      "default": 0
    },
    "check_cost_authorized_cents": {
      "type": "integer",
      "title": "Check Cost Authorized Cents",
      "default": 0
    },
    "pending": {
      "type": "integer",
      "title": "Pending",
      "default": 0
    },
    "validated": {
      "type": "integer",
      "title": "Validated",
      "default": 0
    },
    "held": {
      "type": "integer",
      "title": "Held",
      "default": 0
    },
    "cancelled": {
      "type": "integer",
      "title": "Cancelled",
      "default": 0
    },
    "included": {
      "type": "integer",
      "title": "Included",
      "default": 0
    },
    "admitted": {
      "type": "integer",
      "title": "Admitted",
      "default": 0
    },
    "grant_waits": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Grant Waits"
    },
    "held_reasons": {
      "additionalProperties": {
        "type": "integer"
      },
      "propertyNames": {
        "enum": [
          "included_preparation_email_required",
          "included_preparation_source_invalid",
          "included_preparation_email_not_valid",
          "included_preparation_check_ceiling",
          "included_preparation_verification_unresolved",
          "included_preparation_provider_budget_exhausted",
          "included_preparation_authority_ended"
        ]
      },
      "type": "object",
      "title": "Held Reasons"
    }
  },
  "type": "object",
  "title": "IncludedPreparationCounts"
}
```

`IncludedPreparationTerms`

`object`

| Field | Type and constraints |
| --- | --- |
| `grant_contacts`Optional  | `boolean` Default: `false`  |
| `max_candidates`Required  | `integer` Minimum: `1.0` · Maximum: `2000.0`  |
| `max_checks`Required  | `integer` Minimum: `0.0` · Maximum: `2000.0`  |
| `max_check_cost_cents`Required  | `integer` Minimum: `0.0` · Maximum: `100000000.0`  |
| `max_name_checks`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `2000.0`  |
| `max_name_reserve_usd_micros`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `2000000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "grant_contacts": {
      "type": "boolean",
      "title": "Grant Contacts",
      "default": false
    },
    "max_candidates": {
      "type": "integer",
      "maximum": 2000.0,
      "minimum": 1.0,
      "title": "Max Candidates"
    },
    "max_checks": {
      "type": "integer",
      "maximum": 2000.0,
      "minimum": 0.0,
      "title": "Max Checks"
    },
    "max_check_cost_cents": {
      "type": "integer",
      "maximum": 100000000.0,
      "minimum": 0.0,
      "title": "Max Check Cost Cents"
    },
    "max_name_checks": {
      "type": "integer",
      "maximum": 2000.0,
      "minimum": 0.0,
      "title": "Max Name Checks",
      "default": 0
    },
    "max_name_reserve_usd_micros": {
      "type": "integer",
      "maximum": 2000000.0,
      "minimum": 0.0,
      "title": "Max Name Reserve Usd Micros",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "max_candidates",
    "max_checks",
    "max_check_cost_cents"
  ],
  "title": "IncludedPreparationTerms"
}
```

`Insight`

`object`

| Field | Type and constraints |
| --- | --- |
| `code`Required  | `string` |
| `campaign`Optional  | `string` \| `null` |
| `severity`Required  | `"info" \| "warning"` |
| `count`Optional  | `integer` \| `null` |
| `action`Required  | `"inspect" \| "refill" \| "review_capacity" \| "refresh"` |

Complete schema

JSON schema

```
{
  "properties": {
    "code": {
      "type": "string",
      "title": "Code"
    },
    "campaign": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign"
    },
    "severity": {
      "type": "string",
      "enum": [
        "info",
        "warning"
      ],
      "title": "Severity"
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Count"
    },
    "action": {
      "type": "string",
      "enum": [
        "inspect",
        "refill",
        "review_capacity",
        "refresh"
      ],
      "title": "Action"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "code",
    "severity",
    "action"
  ],
  "title": "Insight"
}
```

`IntentResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `intent`Required  | `string` |
| `revision`Required  | `integer` |
| `replayed`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "intent": {
      "type": "string",
      "title": "Intent"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "replayed": {
      "type": "boolean",
      "title": "Replayed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "intent",
    "revision",
    "replayed"
  ],
  "title": "IntentResult"
}
```

`JobArtifact`

`object`

| Field | Type and constraints |
| --- | --- |
| `job_id`Required  | `string` |
| `state`Required  | `"pending" \| "publishing" \| "ready" \| "failed" \| "cancelled" \| "expired"` |
| `reserved_bytes`Required  | `integer` |
| `expires_at`Required  | `string` |
| `reason`Required  | `string` \| `null` |
| `receipt`Required  | [`FileReceipt`](https://startwave.io/docs/api/#schema-FileReceipt) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "publishing",
        "ready",
        "failed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "reserved_bytes": {
      "type": "integer",
      "title": "Reserved Bytes"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "receipt": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/FileReceipt"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "job_id",
    "state",
    "reserved_bytes",
    "expires_at",
    "reason",
    "receipt"
  ],
  "title": "JobArtifact"
}
```

`JobCampaignProgress`

`object`

| Field | Type and constraints |
| --- | --- |
| `processed`Optional  | `integer` Default: `0`  |
| `added`Optional  | `integer` Default: `0`  |
| `held`Optional  | `integer` Default: `0`  |
| `already_admitted`Optional  | `integer` Default: `0`  |
| `reason_counts`Optional  | `object` \| `null` Recorded admission/duplicate reasons for processed rows. Absent on historical progress, never inferred as zero. |
| `campaign_revision`Required  | `integer` |
| `audience_revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "processed": {
      "type": "integer",
      "title": "Processed",
      "default": 0
    },
    "added": {
      "type": "integer",
      "title": "Added",
      "default": 0
    },
    "held": {
      "type": "integer",
      "title": "Held",
      "default": 0
    },
    "already_admitted": {
      "type": "integer",
      "title": "Already Admitted",
      "default": 0
    },
    "reason_counts": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason Counts",
      "description": "Recorded admission/duplicate reasons for processed rows. Absent on historical progress, never inferred as zero."
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    }
  },
  "type": "object",
  "required": [
    "campaign_revision",
    "audience_revision"
  ],
  "title": "JobCampaignProgress"
}
```

`JobCapabilities`

`object`

| Field | Type and constraints |
| --- | --- |
| `kinds`Optional  | array of `string` Default: `["import_records", "list_membership", "suppressions", "contact_history", "export_suppressions", "export_campaign", "campaign_admission"]`  |
| `max_records`Optional  | `integer` Default: `5000000`  |
| `chunk_rows`Optional  | `integer` Default: `100`  |
| `workspace_active_jobs`Optional  | `integer` Default: `10`  |
| `global_active_jobs`Optional  | `integer` Default: `100`  |
| `lifetime_seconds`Optional  | `integer` Default: `604800`  |
| `worker_recent`Optional  | `boolean` Default: `false`  |
| `file_worker_recent`Optional  | `boolean` Default: `false`  |
| `provider_jobs_enabled`Optional  | `boolean` Default: `false`  |
| `source_check_rows`Optional  | `integer` Default: `25`  |
| `source_check_worker_recent`Optional  | `boolean` Default: `false`  |
| `exports_enabled`Optional  | `boolean` Default: `true`  |
| `preparation_enabled`Optional  | `boolean` Default: `true`  |
| `file_max_bytes`Optional  | `integer` Default: `4294967296`  |
| `workspace_files`Optional  | `integer` Default: `2`  |
| `global_files`Optional  | `integer` Default: `8`  |
| `unlock_input_kinds`Optional  | array of `"ids" \| "source_records" \| "source_versions" \| "identifiers"` Default: `[]`  |
| `refresh_input_kinds`Optional  | array of `"ids"` Default: `[]`  |
| `membership_scope_kinds`Optional  | array of `"ids" \| "list" \| "query" \| "records"` Default: `["ids", "list", "records"]`  |
| `membership_scope_resources`Optional  | array of `"contacts" \| "accounts" \| "people" \| "companies"` Default: `["contacts", "accounts"]`  |
| `campaign_scope_kinds`Optional  | array of `"ids" \| "list" \| "records"` Default: `["ids", "list", "records"]`  |
| `campaign_scope_resources`Optional  | array of `"contacts"` Default: `["contacts"]`  |
| `max_scope_ids`Optional  | `integer` Default: `1000`  |
| `company_caps_enabled`Optional  | `boolean` Default: `false`  |
| `unlock_scope_kinds`Optional  | array of `"ids" \| "list" \| "query" \| "records"` Default: `[]`  |
| `unlock_scope_resources`Optional  | array of `"contacts" \| "accounts" \| "people" \| "companies"` Default: `[]`  |
| `refresh_scope_kinds`Optional  | array of `"ids" \| "list" \| "query" \| "records"` Default: `[]`  |
| `refresh_scope_resources`Optional  | array of `"contacts" \| "accounts" \| "people" \| "companies"` Default: `[]`  |
| `export_scope_kinds`Optional  | array of `"ids" \| "list" \| "query" \| "records"` Default: `["ids", "list", "records"]`  |
| `export_scope_resources`Optional  | array of `"contacts" \| "accounts" \| "people" \| "companies"` Default: `["contacts", "accounts", "people", "companies"]`  |
| `export_input_kinds`Optional  | array of `"ids" \| "identifiers"` Default: `["ids"]`  |
| `export_version_modes`Optional  | array of `"owned_only" \| "owned_or_new" \| "latest" \| "updates_only"` Default: `["owned_only"]`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kinds": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Kinds",
      "default": [
        "import_records",
        "list_membership",
        "suppressions",
        "contact_history",
        "export_suppressions",
        "export_campaign",
        "campaign_admission"
      ]
    },
    "max_records": {
      "type": "integer",
      "title": "Max Records",
      "default": 5000000
    },
    "chunk_rows": {
      "type": "integer",
      "title": "Chunk Rows",
      "default": 100
    },
    "workspace_active_jobs": {
      "type": "integer",
      "title": "Workspace Active Jobs",
      "default": 10
    },
    "global_active_jobs": {
      "type": "integer",
      "title": "Global Active Jobs",
      "default": 100
    },
    "lifetime_seconds": {
      "type": "integer",
      "title": "Lifetime Seconds",
      "default": 604800
    },
    "worker_recent": {
      "type": "boolean",
      "title": "Worker Recent",
      "default": false
    },
    "file_worker_recent": {
      "type": "boolean",
      "title": "File Worker Recent",
      "default": false
    },
    "provider_jobs_enabled": {
      "type": "boolean",
      "title": "Provider Jobs Enabled",
      "default": false
    },
    "source_check_rows": {
      "type": "integer",
      "title": "Source Check Rows",
      "default": 25
    },
    "source_check_worker_recent": {
      "type": "boolean",
      "title": "Source Check Worker Recent",
      "default": false
    },
    "exports_enabled": {
      "type": "boolean",
      "title": "Exports Enabled",
      "default": true
    },
    "preparation_enabled": {
      "type": "boolean",
      "title": "Preparation Enabled",
      "default": true
    },
    "file_max_bytes": {
      "type": "integer",
      "title": "File Max Bytes",
      "default": 4294967296
    },
    "workspace_files": {
      "type": "integer",
      "title": "Workspace Files",
      "default": 2
    },
    "global_files": {
      "type": "integer",
      "title": "Global Files",
      "default": 8
    },
    "unlock_input_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "source_records",
          "source_versions",
          "identifiers"
        ]
      },
      "type": "array",
      "title": "Unlock Input Kinds",
      "default": []
    },
    "refresh_input_kinds": {
      "items": {
        "type": "string",
        "const": "ids"
      },
      "type": "array",
      "title": "Refresh Input Kinds",
      "default": []
    },
    "membership_scope_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "list",
          "query",
          "records"
        ]
      },
      "type": "array",
      "title": "Membership Scope Kinds",
      "default": [
        "ids",
        "list",
        "records"
      ]
    },
    "membership_scope_resources": {
      "items": {
        "type": "string",
        "enum": [
          "contacts",
          "accounts",
          "people",
          "companies"
        ]
      },
      "type": "array",
      "title": "Membership Scope Resources",
      "default": [
        "contacts",
        "accounts"
      ]
    },
    "campaign_scope_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "list",
          "records"
        ]
      },
      "type": "array",
      "title": "Campaign Scope Kinds",
      "default": [
        "ids",
        "list",
        "records"
      ]
    },
    "campaign_scope_resources": {
      "items": {
        "type": "string",
        "const": "contacts"
      },
      "type": "array",
      "title": "Campaign Scope Resources",
      "default": [
        "contacts"
      ]
    },
    "max_scope_ids": {
      "type": "integer",
      "title": "Max Scope Ids",
      "default": 1000
    },
    "company_caps_enabled": {
      "type": "boolean",
      "title": "Company Caps Enabled",
      "default": false
    },
    "unlock_scope_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "list",
          "query",
          "records"
        ]
      },
      "type": "array",
      "title": "Unlock Scope Kinds",
      "default": []
    },
    "unlock_scope_resources": {
      "items": {
        "type": "string",
        "enum": [
          "contacts",
          "accounts",
          "people",
          "companies"
        ]
      },
      "type": "array",
      "title": "Unlock Scope Resources",
      "default": []
    },
    "refresh_scope_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "list",
          "query",
          "records"
        ]
      },
      "type": "array",
      "title": "Refresh Scope Kinds",
      "default": []
    },
    "refresh_scope_resources": {
      "items": {
        "type": "string",
        "enum": [
          "contacts",
          "accounts",
          "people",
          "companies"
        ]
      },
      "type": "array",
      "title": "Refresh Scope Resources",
      "default": []
    },
    "export_scope_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "list",
          "query",
          "records"
        ]
      },
      "type": "array",
      "title": "Export Scope Kinds",
      "default": [
        "ids",
        "list",
        "records"
      ]
    },
    "export_scope_resources": {
      "items": {
        "type": "string",
        "enum": [
          "contacts",
          "accounts",
          "people",
          "companies"
        ]
      },
      "type": "array",
      "title": "Export Scope Resources",
      "default": [
        "contacts",
        "accounts",
        "people",
        "companies"
      ]
    },
    "export_input_kinds": {
      "items": {
        "type": "string",
        "enum": [
          "ids",
          "identifiers"
        ]
      },
      "type": "array",
      "title": "Export Input Kinds",
      "default": [
        "ids"
      ]
    },
    "export_version_modes": {
      "items": {
        "type": "string",
        "enum": [
          "owned_only",
          "owned_or_new",
          "latest",
          "updates_only"
        ]
      },
      "type": "array",
      "title": "Export Version Modes",
      "default": [
        "owned_only"
      ]
    }
  },
  "type": "object",
  "title": "JobCapabilities"
}
```

`JobConfirm`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `quote_revision`Required  | `integer` Minimum: `1.0`  |
| `currency`Required  | `"usd"` |
| `max_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `10000000.0`  |
| `destination`Optional  | [`JobExistingList`](https://startwave.io/docs/api/#schema-JobExistingList) \| [`JobNewList`](https://startwave.io/docs/api/#schema-JobNewList) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "quote_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Quote Revision"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor"
    },
    "destination": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/components/schemas/JobExistingList"
            },
            {
              "$ref": "#/components/schemas/JobNewList"
            }
          ],
          "discriminator": {
            "propertyName": "kind",
            "mapping": {
              "existing": "#/components/schemas/JobExistingList",
              "new": "#/components/schemas/JobNewList"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Destination"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision",
    "quote_revision",
    "currency",
    "max_amount_minor"
  ],
  "title": "JobConfirm"
}
```

`JobCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `processed`Optional  | `integer` Default: `0`  |
| `created`Optional  | `integer` Default: `0`  |
| `added`Optional  | `integer` Default: `0`  |
| `removed`Optional  | `integer` Default: `0`  |
| `unchanged`Optional  | `integer` Default: `0`  |
| `invalid`Optional  | `integer` Default: `0`  |
| `newly_granted`Optional  | `integer` Default: `0`  |
| `already_owned`Optional  | `integer` Default: `0`  |
| `excluded`Optional  | `integer` Default: `0`  |
| `checked`Optional  | `integer` Default: `0`  |
| `changed`Optional  | `integer` Default: `0`  |
| `missing`Optional  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "processed": {
      "type": "integer",
      "title": "Processed",
      "default": 0
    },
    "created": {
      "type": "integer",
      "title": "Created",
      "default": 0
    },
    "added": {
      "type": "integer",
      "title": "Added",
      "default": 0
    },
    "removed": {
      "type": "integer",
      "title": "Removed",
      "default": 0
    },
    "unchanged": {
      "type": "integer",
      "title": "Unchanged",
      "default": 0
    },
    "invalid": {
      "type": "integer",
      "title": "Invalid",
      "default": 0
    },
    "newly_granted": {
      "type": "integer",
      "title": "Newly Granted",
      "default": 0
    },
    "already_owned": {
      "type": "integer",
      "title": "Already Owned",
      "default": 0
    },
    "excluded": {
      "type": "integer",
      "title": "Excluded",
      "default": 0
    },
    "checked": {
      "type": "integer",
      "title": "Checked",
      "default": 0
    },
    "changed": {
      "type": "integer",
      "title": "Changed",
      "default": 0
    },
    "missing": {
      "type": "integer",
      "title": "Missing",
      "default": 0
    }
  },
  "type": "object",
  "title": "JobCounts"
}
```

`JobExistingList`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Optional  | `"existing"` Default: `"existing"`  |
| `list_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_membership_revision`Required  | `integer` Minimum: `1.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "existing",
      "title": "Kind",
      "default": "existing"
    },
    "list_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "List Id"
    },
    "expected_membership_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Membership Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "list_id",
    "expected_membership_revision"
  ],
  "title": "JobExistingList"
}
```

`JobExport`

`object`

| Field | Type and constraints |
| --- | --- |
| `version_mode`Optional  | `"owned_only" \| "owned_or_new" \| "latest" \| "updates_only"` Default: `"owned_only"`  |
| `projection`Optional  | `"effective" \| "licensed"` Default: `"effective"`  |
| `fields`Required  | array of `"FIRST_NAME" \| "LAST_NAME" \| "MIDDLE_NAME" \| "JOB_TITLE" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT" \| "COMPANY_ID" \| "COMPANY_LOGO_URL"` Min items: `1` · Max items: `55`  |
| `file_format`Optional  | `"csv" \| "json" \| "jsonl" \| "xlsx"` Default: `"csv"`  |
| `max_bytes`Optional  | `integer` Default: `67108864` · Minimum: `1.0` · Maximum: `4294967296.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "version_mode": {
      "type": "string",
      "enum": [
        "owned_only",
        "owned_or_new",
        "latest",
        "updates_only"
      ],
      "title": "Version Mode",
      "default": "owned_only"
    },
    "projection": {
      "type": "string",
      "enum": [
        "effective",
        "licensed"
      ],
      "title": "Projection",
      "default": "effective"
    },
    "fields": {
      "items": {
        "type": "string",
        "enum": [
          "FIRST_NAME",
          "LAST_NAME",
          "MIDDLE_NAME",
          "JOB_TITLE",
          "DEPARTMENT",
          "SENIORITY_LEVEL",
          "HEADLINE",
          "SUMMARY",
          "SKILLS",
          "WORK_EXPERIENCE",
          "EDUCATION_HISTORY",
          "POSTS",
          "CURRENT_BUSINESS_EMAIL",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE",
          "EMAILS",
          "PHONES",
          "MOBILE_PHONE",
          "MOBILE_PHONE_VALIDATION_STATUS",
          "LINKEDIN_URL",
          "PERSONAL_CITY",
          "PERSONAL_STATE",
          "PERSONAL_COUNTRY",
          "PERSONAL_ADDRESS",
          "PERSONAL_ZIP",
          "LAST_UPDATED",
          "COMPANY_NAME",
          "COMPANY_DOMAIN",
          "COMPANY_DESCRIPTION",
          "COMPANY_INDUSTRY",
          "COMPANY_REVENUE_RANGE",
          "COMPANY_NUM_EMPLOYEE_RANGE",
          "COMPANY_OWNERSHIP",
          "COMPANY_LATEST_FUNDING_STAGE",
          "COMPANY_LATEST_FUNDING_ROUND_DATE",
          "COMPANY_TOTAL_FUNDING",
          "COMPANY_STOCK_EXCHANGE",
          "COMPANY_TICKER_SYMBOL",
          "COMPANY_STOCK_SYMBOL",
          "COMPANY_MARKET_CAPITALIZATION",
          "COMPANY_TOTAL_REVENUE",
          "COMPANY_NUMBER_OF_FOLLOWERS",
          "COMPANY_CITY",
          "COMPANY_STATE",
          "COMPANY_COUNTRY",
          "COMPANY_COUNTRY_NUMERIC",
          "COMPANY_ADDRESS",
          "COMPANY_ZIP_CODE",
          "COMPANY_FOUNDED_YEAR",
          "COMPANY_LINKEDIN_URL",
          "COMPANY_FACEBOOK_URL",
          "COMPANY_TWITTER_URL",
          "COMPANY_ANGELLIST_URL",
          "COMPANY_TECHNOLOGIES",
          "COMPANY_RETAIL_LOCATION_COUNT",
          "COMPANY_ID",
          "COMPANY_LOGO_URL"
        ]
      },
      "type": "array",
      "maxItems": 55,
      "minItems": 1,
      "title": "Fields"
    },
    "file_format": {
      "type": "string",
      "enum": [
        "csv",
        "json",
        "jsonl",
        "xlsx"
      ],
      "title": "File Format",
      "default": "csv"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 4294967296.0,
      "minimum": 1.0,
      "title": "Max Bytes",
      "default": 67108864
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "fields"
  ],
  "title": "JobExport"
}
```

`JobIdsScope`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"ids"` |
| `resource`Required  | `"contacts" \| "accounts" \| "people" \| "companies"` |
| `ids`Required  | array of `string` Min items: `1` · Max items: `1000`  |
| `max_per_company`Optional  | `integer` \| `null` People source IDs only. Company cap in supplied ID order before max_records; missing company IDs remain independent. |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "ids",
      "title": "Kind"
    },
    "resource": {
      "type": "string",
      "enum": [
        "contacts",
        "accounts",
        "people",
        "companies"
      ],
      "title": "Resource"
    },
    "ids": {
      "items": {
        "type": "string",
        "maxLength": 256,
        "minLength": 1,
        "pattern": "^[^\\x00-\\x1f\\x7f]+$"
      },
      "type": "array",
      "maxItems": 1000,
      "minItems": 1,
      "title": "Ids"
    },
    "max_per_company": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 5000000.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Per Company",
      "description": "People source IDs only. Company cap in supplied ID order before max_records; missing company IDs remain independent."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "resource",
    "ids"
  ],
  "title": "JobIdsScope"
}
```

`JobListScope`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"list"` |
| `list_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_membership_revision`Required  | `integer` Minimum: `1.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "list",
      "title": "Kind"
    },
    "list_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "List Id"
    },
    "expected_membership_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Membership Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "list_id",
    "expected_membership_revision"
  ],
  "title": "JobListScope"
}
```

`JobNewList`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Optional  | `"new"` Default: `"new"`  |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "new",
      "title": "Kind",
      "default": "new"
    },
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name"
  ],
  "title": "JobNewList"
}
```

`JobQueryScope-Input`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"query"` |
| `resource`Required  | `"people" \| "companies"` |
| `query`Required  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) |
| `max_per_company`Optional  | `integer` \| `null` People only. Whole-query COMPANY_ID cap before max_records; missing company IDs remain independent. |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "query",
      "title": "Kind"
    },
    "resource": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Resource"
    },
    "query": {
      "$ref": "#/components/schemas/SearchQuery-Input"
    },
    "max_per_company": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 5000000.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Per Company",
      "description": "People only. Whole-query COMPANY_ID cap before max_records; missing company IDs remain independent."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "resource",
    "query"
  ],
  "title": "JobQueryScope"
}
```

`JobQueryScope-Output`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"query"` |
| `resource`Required  | `"people" \| "companies"` |
| `query`Required  | [`SearchQuery-Output`](https://startwave.io/docs/api/#schema-SearchQuery-Output) |
| `max_per_company`Optional  | `integer` \| `null` People only. Whole-query COMPANY_ID cap before max_records; missing company IDs remain independent. |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "query",
      "title": "Kind"
    },
    "resource": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Resource"
    },
    "query": {
      "$ref": "#/components/schemas/SearchQuery-Output"
    },
    "max_per_company": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 5000000.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Per Company",
      "description": "People only. Whole-query COMPANY_ID cap before max_records; missing company IDs remain independent."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "resource",
    "query"
  ],
  "title": "JobQueryScope"
}
```

`JobQuote`

`object`

| Field | Type and constraints |
| --- | --- |
| `phase`Required  | `"preparing" \| "ready" \| "confirmed"` Default: `"preparing"`  |
| `revision`Required  | `integer` Default: `1`  |
| `expires_at`Required  | `string` \| `null` |
| `currency`Required  | `"usd"` Default: `"usd"`  |
| `amount_minor`Required  | `integer` Default: `0`  |
| `counts`Required  | [`JobQuoteCounts`](https://startwave.io/docs/api/#schema-JobQuoteCounts) |
| `destination`Required  | [`JobExistingList`](https://startwave.io/docs/api/#schema-JobExistingList) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "phase": {
      "type": "string",
      "enum": [
        "preparing",
        "ready",
        "confirmed"
      ],
      "title": "Phase",
      "default": "preparing"
    },
    "revision": {
      "type": "integer",
      "title": "Revision",
      "default": 1
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires At"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor",
      "default": 0
    },
    "counts": {
      "$ref": "#/components/schemas/JobQuoteCounts"
    },
    "destination": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/JobExistingList"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "phase",
    "revision",
    "expires_at",
    "currency",
    "amount_minor",
    "counts",
    "destination"
  ],
  "title": "JobQuote"
}
```

`JobQuoteCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `selected`Required  | `integer` Default: `0`  |
| `deliverable`Required  | `integer` Default: `0`  |
| `excluded`Required  | `integer` Default: `0`  |
| `owned_current`Required  | `integer` Default: `0`  |
| `owned_changed`Required  | `integer` Default: `0`  |
| `owned_not_checked`Required  | `integer` Default: `0`  |
| `needs_unlock`Required  | `integer` Default: `0`  |
| `provided`Required  | `integer` Default: `0`  |
| `unavailable`Required  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "selected": {
      "type": "integer",
      "title": "Selected",
      "default": 0
    },
    "deliverable": {
      "type": "integer",
      "title": "Deliverable",
      "default": 0
    },
    "excluded": {
      "type": "integer",
      "title": "Excluded",
      "default": 0
    },
    "owned_current": {
      "type": "integer",
      "title": "Owned Current",
      "default": 0
    },
    "owned_changed": {
      "type": "integer",
      "title": "Owned Changed",
      "default": 0
    },
    "owned_not_checked": {
      "type": "integer",
      "title": "Owned Not Checked",
      "default": 0
    },
    "needs_unlock": {
      "type": "integer",
      "title": "Needs Unlock",
      "default": 0
    },
    "provided": {
      "type": "integer",
      "title": "Provided",
      "default": 0
    },
    "unavailable": {
      "type": "integer",
      "title": "Unavailable",
      "default": 0
    }
  },
  "type": "object",
  "required": [
    "selected",
    "deliverable",
    "excluded",
    "owned_current",
    "owned_changed",
    "owned_not_checked",
    "needs_unlock",
    "provided",
    "unavailable"
  ],
  "title": "JobQuoteCounts"
}
```

`JobRecordFilter`

`object`

| Field | Type and constraints |
| --- | --- |
| `ownership`Optional  | `"all" \| "net_new" \| "saved"` Default: `"all"`  |
| `q`Optional  | `string` Default: `""` · Max length: `200`  |
| `data_access`Optional  | `"licensed"` \| `null` |
| `view`Optional  | `"saved" \| "contacts"` Default: `"saved"`  |
| `source_freshness`Optional  | `"current" \| "update_available" \| "unavailable"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "ownership": {
      "type": "string",
      "enum": [
        "all",
        "net_new",
        "saved"
      ],
      "title": "Ownership",
      "default": "all"
    },
    "q": {
      "type": "string",
      "maxLength": 200,
      "title": "Q",
      "default": ""
    },
    "data_access": {
      "anyOf": [
        {
          "type": "string",
          "const": "licensed"
        },
        {
          "type": "null"
        }
      ],
      "title": "Data Access"
    },
    "view": {
      "type": "string",
      "enum": [
        "saved",
        "contacts"
      ],
      "title": "View",
      "default": "saved"
    },
    "source_freshness": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "current",
            "update_available",
            "unavailable"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Freshness"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "JobRecordFilter"
}
```

`JobRecordsScope`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"records"` |
| `resource`Required  | `"contacts" \| "accounts"` |
| `query`Required  | [`JobRecordFilter`](https://startwave.io/docs/api/#schema-JobRecordFilter) |
| `list_id`Optional  | `string` \| `null` |
| `expected_membership_revision`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "records",
      "title": "Kind"
    },
    "resource": {
      "type": "string",
      "enum": [
        "contacts",
        "accounts"
      ],
      "title": "Resource"
    },
    "query": {
      "$ref": "#/components/schemas/JobRecordFilter"
    },
    "list_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "List Id"
    },
    "expected_membership_revision": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Membership Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "resource",
    "query"
  ],
  "title": "JobRecordsScope"
}
```

`JobRequest`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"import_records" \| "list_membership" \| "unlock" \| "refresh" \| "export" \| "suppressions" \| "contact_history" \| "export_suppressions" \| "export_campaign" \| "campaign_admission"` |
| `import_id`Optional  | `string` \| `null` |
| `expected_digest`Optional  | `string` \| `null` |
| `scope`Optional  | [`JobIdsScope`](https://startwave.io/docs/api/#schema-JobIdsScope) \| [`JobListScope`](https://startwave.io/docs/api/#schema-JobListScope) \| [`JobQueryScope-Input`](https://startwave.io/docs/api/#schema-JobQueryScope-Input) \| [`JobRecordsScope`](https://startwave.io/docs/api/#schema-JobRecordsScope) \| `null` |
| `max_records`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `prepare`Optional  | `boolean` Prepare a native scoped action without spending or producing an artifact. Explicit confirmation is required before execution. Default: `false`  |
| `list_id`Optional  | `string` \| `null` |
| `expected_membership_revision`Optional  | `integer` \| `null` |
| `action`Optional  | `"add" \| "remove"` Default: `"add"`  |
| `purchase`Optional  | [`OrderTerms`](https://startwave.io/docs/api/#schema-OrderTerms) \| `null` |
| `export`Optional  | [`JobExport`](https://startwave.io/docs/api/#schema-JobExport) \| `null` |
| `review`Optional  | `null` |
| `delivery`Optional  | `null` |
| `campaign`Optional  | [`CampaignAdmissionTarget`](https://startwave.io/docs/api/#schema-CampaignAdmissionTarget) \| `null` |
| `exclusions`Optional  | [`SuppressionExport`](https://startwave.io/docs/api/#schema-SuppressionExport) \| `null` |
| `recipients`Optional  | [`CampaignExport`](https://startwave.io/docs/api/#schema-CampaignExport) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "import_records",
        "list_membership",
        "unlock",
        "refresh",
        "export",
        "suppressions",
        "contact_history",
        "export_suppressions",
        "export_campaign",
        "campaign_admission"
      ],
      "title": "Kind"
    },
    "import_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Import Id"
    },
    "expected_digest": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Digest"
    },
    "scope": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/components/schemas/JobIdsScope"
            },
            {
              "$ref": "#/components/schemas/JobListScope"
            },
            {
              "$ref": "#/components/schemas/JobQueryScope-Input"
            },
            {
              "$ref": "#/components/schemas/JobRecordsScope"
            }
          ],
          "discriminator": {
            "propertyName": "kind",
            "mapping": {
              "ids": "#/components/schemas/JobIdsScope",
              "list": "#/components/schemas/JobListScope",
              "query": "#/components/schemas/JobQueryScope-Input",
              "records": "#/components/schemas/JobRecordsScope"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Scope"
    },
    "max_records": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Max Records"
    },
    "prepare": {
      "type": "boolean",
      "title": "Prepare",
      "description": "Prepare a native scoped action without spending or producing an artifact. Explicit confirmation is required before execution.",
      "default": false
    },
    "list_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "List Id"
    },
    "expected_membership_revision": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Membership Revision"
    },
    "action": {
      "type": "string",
      "enum": [
        "add",
        "remove"
      ],
      "title": "Action",
      "default": "add"
    },
    "purchase": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/OrderTerms"
        },
        {
          "type": "null"
        }
      ]
    },
    "export": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/JobExport"
        },
        {
          "type": "null"
        }
      ]
    },
    "review": {
      "type": "null",
      "title": "Review"
    },
    "delivery": {
      "type": "null",
      "title": "Delivery"
    },
    "campaign": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CampaignAdmissionTarget"
        },
        {
          "type": "null"
        }
      ]
    },
    "exclusions": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SuppressionExport"
        },
        {
          "type": "null"
        }
      ]
    },
    "recipients": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CampaignExport"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "max_records"
  ],
  "title": "JobRequest"
}
```

`JobResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `ordinal`Required  | `integer` |
| `key`Required  | `string` \| `null` |
| `record_id`Required  | `string` \| `null` |
| `outcome`Required  | `"created" \| "added" \| "removed" \| "unchanged" \| "invalid" \| "newly_granted" \| "already_owned" \| "excluded" \| "checked" \| "changed" \| "missing"` |
| `reason`Required  | `string` \| `null` |
| `order_id`Optional  | `string` \| `null` |
| `version_id`Optional  | `string` \| `null` |
| `grant_id`Optional  | `string` \| `null` |
| `amount_minor`Optional  | `integer` Default: `0`  |
| `source_check_revision`Optional  | `integer` \| `null` |
| `suppression_operation_id`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "ordinal": {
      "type": "integer",
      "title": "Ordinal"
    },
    "key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Key"
    },
    "record_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Record Id"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "created",
        "added",
        "removed",
        "unchanged",
        "invalid",
        "newly_granted",
        "already_owned",
        "excluded",
        "checked",
        "changed",
        "missing"
      ],
      "title": "Outcome"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "order_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Order Id"
    },
    "version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Version Id"
    },
    "grant_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grant Id"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor",
      "default": 0
    },
    "source_check_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Check Revision"
    },
    "suppression_operation_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Suppression Operation Id"
    }
  },
  "type": "object",
  "required": [
    "ordinal",
    "key",
    "record_id",
    "outcome",
    "reason"
  ],
  "title": "JobResult"
}
```

`JobResults`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`JobResult`](https://startwave.io/docs/api/#schema-JobResult) |
| `next_after`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/JobResult"
      },
      "type": "array",
      "title": "Items"
    },
    "next_after": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next After"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_after"
  ],
  "title": "JobResults"
}
```

`JobResume`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_membership_revision`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "expected_membership_revision": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Membership Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision"
  ],
  "title": "JobResume"
}
```

`JobView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `parameters`Required  | [`RecordedJobCreate`](https://startwave.io/docs/api/#schema-RecordedJobCreate) |
| `entity_type`Required  | `"person" \| "company"` \| `null` |
| `state`Required  | `"queued" \| "action_required" \| "completed" \| "partial" \| "failed" \| "cancelled"` |
| `revision`Required  | `integer` |
| `counts`Required  | [`JobCounts`](https://startwave.io/docs/api/#schema-JobCounts) |
| `total_rows`Required  | `integer` |
| `total_rows_relation`Optional  | `"eq" \| "ceiling"` Default: `"eq"`  |
| `target_revision`Required  | `integer` \| `null` |
| `reason`Required  | `string` \| `null` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `expires_at`Required  | `string` |
| `completed_at`Required  | `string` \| `null` |
| `policy`Optional  | [`DataPolicy`](https://startwave.io/docs/api/#schema-DataPolicy) \| `null` |
| `amount_minor`Optional  | `integer` Default: `0`  |
| `funding_required_minor`Optional  | `integer` Default: `0`  |
| `pending_order_id`Optional  | `string` \| `null` |
| `quote`Optional  | [`JobQuote`](https://startwave.io/docs/api/#schema-JobQuote) \| `null` |
| `campaign_progress`Optional  | [`JobCampaignProgress`](https://startwave.io/docs/api/#schema-JobCampaignProgress) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "parameters": {
      "$ref": "#/components/schemas/RecordedJobCreate"
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "person",
            "company"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Type"
    },
    "state": {
      "type": "string",
      "enum": [
        "queued",
        "action_required",
        "completed",
        "partial",
        "failed",
        "cancelled"
      ],
      "title": "State"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "counts": {
      "$ref": "#/components/schemas/JobCounts"
    },
    "total_rows": {
      "type": "integer",
      "title": "Total Rows"
    },
    "total_rows_relation": {
      "type": "string",
      "enum": [
        "eq",
        "ceiling"
      ],
      "title": "Total Rows Relation",
      "default": "eq"
    },
    "target_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Revision"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At"
    },
    "policy": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DataPolicy"
        },
        {
          "type": "null"
        }
      ]
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor",
      "default": 0
    },
    "funding_required_minor": {
      "type": "integer",
      "title": "Funding Required Minor",
      "default": 0
    },
    "pending_order_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pending Order Id"
    },
    "quote": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/JobQuote"
        },
        {
          "type": "null"
        }
      ]
    },
    "campaign_progress": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/JobCampaignProgress"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "id",
    "parameters",
    "entity_type",
    "state",
    "revision",
    "counts",
    "total_rows",
    "target_revision",
    "reason",
    "created_at",
    "updated_at",
    "expires_at",
    "completed_at"
  ],
  "title": "JobView"
}
```

`JsonValue`

`value`

Complete schema

JSON schema

```
{}
```

`KeywordGroup`

`object`

| Field | Type and constraints |
| --- | --- |
| `mode`Optional  | `"OR" \| "AND" \| "EXCLUDE"` Default: `"OR"`  |
| `keywords`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `match_mode`Optional  | `"exact" \| "like" \| "phrase"` Default: `"like"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "mode": {
      "type": "string",
      "enum": [
        "OR",
        "AND",
        "EXCLUDE"
      ],
      "title": "Mode",
      "default": "OR"
    },
    "keywords": {
      "items": {
        "type": "string",
        "maxLength": 256,
        "minLength": 1,
        "pattern": "^[^\\x00-\\x1f\\x7f]+$"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Keywords"
    },
    "match_mode": {
      "type": "string",
      "enum": [
        "exact",
        "like",
        "phrase"
      ],
      "title": "Match Mode",
      "default": "like"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "keywords"
  ],
  "title": "KeywordGroup"
}
```

`Keywords`

`object`

| Field | Type and constraints |
| --- | --- |
| `type`Required  | `"keyword_group"` |
| `operator`Optional  | `"AND" \| "OR"` Default: `"AND"`  |
| `groups`Required  | array of [`KeywordGroup`](https://startwave.io/docs/api/#schema-KeywordGroup) Min items: `1` · Max items: `10`  |

Complete schema

JSON schema

```
{
  "properties": {
    "type": {
      "type": "string",
      "const": "keyword_group",
      "title": "Type"
    },
    "operator": {
      "type": "string",
      "enum": [
        "AND",
        "OR"
      ],
      "title": "Operator",
      "default": "AND"
    },
    "groups": {
      "items": {
        "$ref": "#/components/schemas/KeywordGroup"
      },
      "type": "array",
      "maxItems": 10,
      "minItems": 1,
      "title": "Groups"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "type",
    "groups"
  ],
  "title": "Keywords"
}
```

`LaunchIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `review_id`Required  | `string` Min length: `1` · Max length: `128`  |
| `capacity_operation`Required  | `string` Min length: `1` · Max length: `128`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "review_id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Review Id"
    },
    "capacity_operation": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Capacity Operation"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "review_id",
    "capacity_operation"
  ],
  "title": "LaunchIn"
}
```

`LaunchResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `state`Required  | `"started"` |
| `campaign_revision`Required  | `integer` |
| `capacity_operation`Required  | `string` |
| `send_price_cents`Required  | `integer` |
| `send_budget_cents`Required  | `integer` |
| `started_at`Required  | `number` |
| `commercial_policy_version`Optional  | `string` \| `null` |
| `source_refill_id`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "state": {
      "type": "string",
      "const": "started",
      "title": "State"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "capacity_operation": {
      "type": "string",
      "title": "Capacity Operation"
    },
    "send_price_cents": {
      "type": "integer",
      "title": "Send Price Cents"
    },
    "send_budget_cents": {
      "type": "integer",
      "title": "Send Budget Cents"
    },
    "started_at": {
      "type": "number",
      "title": "Started At"
    },
    "commercial_policy_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Commercial Policy Version"
    },
    "source_refill_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Refill Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "state",
    "campaign_revision",
    "capacity_operation",
    "send_price_cents",
    "send_budget_cents",
    "started_at"
  ],
  "title": "LaunchResult"
}
```

`LeaseHealthItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `workspace`Required  | `string` |
| `operation`Required  | `string` |
| `mailbox`Required  | `string` |
| `domain`Required  | `string` |
| `generation`Required  | `string` |
| `revision`Required  | `integer` |
| `daily_capacity`Required  | `integer` |
| `started_at`Required  | `number` |
| `ended_at`Required  | `number` \| `null` |
| `state`Required  | `"current" \| "historical"` |
| `history_before_started_at`Required  | `"known_absent" \| "unknown"` |
| `transition`Required  | [`LeaseTransition`](https://startwave.io/docs/api/#schema-LeaseTransition) |
| `inbound`Required  | [`LeaseInbound`](https://startwave.io/docs/api/#schema-LeaseInbound) |
| `placement_samples`Required  | array of [`LeasePlacementSample`](https://startwave.io/docs/api/#schema-LeasePlacementSample) |

Complete schema

JSON schema

```
{
  "properties": {
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "operation": {
      "type": "string",
      "title": "Operation"
    },
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "domain": {
      "type": "string",
      "title": "Domain"
    },
    "generation": {
      "type": "string",
      "title": "Generation"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "daily_capacity": {
      "type": "integer",
      "title": "Daily Capacity"
    },
    "started_at": {
      "type": "number",
      "title": "Started At"
    },
    "ended_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ended At"
    },
    "state": {
      "type": "string",
      "enum": [
        "current",
        "historical"
      ],
      "title": "State"
    },
    "history_before_started_at": {
      "type": "string",
      "enum": [
        "known_absent",
        "unknown"
      ],
      "title": "History Before Started At"
    },
    "transition": {
      "$ref": "#/components/schemas/LeaseTransition"
    },
    "inbound": {
      "$ref": "#/components/schemas/LeaseInbound"
    },
    "placement_samples": {
      "items": {
        "$ref": "#/components/schemas/LeasePlacementSample"
      },
      "type": "array",
      "title": "Placement Samples"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "workspace",
    "operation",
    "mailbox",
    "domain",
    "generation",
    "revision",
    "daily_capacity",
    "started_at",
    "ended_at",
    "state",
    "history_before_started_at",
    "transition",
    "inbound",
    "placement_samples"
  ],
  "title": "LeaseHealthItem"
}
```

`LeaseHealthPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`LeaseHealthItem`](https://startwave.io/docs/api/#schema-LeaseHealthItem) |
| `next_cursor`Required  | `string` \| `null` |
| `definition`Required  | `"lease-health-v1"` |
| `workspace`Required  | `string` |
| `observed_at`Required  | `number` |
| `coverage`Required  | `"local_proven_tenancy_intervals_and_sender_sliced_samples"` |
| `placement_semantics`Required  | `"advisory_sample_not_delivery_guarantee_or_replacement_authority"` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/LeaseHealthItem"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "definition": {
      "type": "string",
      "const": "lease-health-v1",
      "title": "Definition"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "coverage": {
      "type": "string",
      "const": "local_proven_tenancy_intervals_and_sender_sliced_samples",
      "title": "Coverage"
    },
    "placement_semantics": {
      "type": "string",
      "const": "advisory_sample_not_delivery_guarantee_or_replacement_authority",
      "title": "Placement Semantics"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "definition",
    "workspace",
    "observed_at",
    "coverage",
    "placement_semantics"
  ],
  "title": "LeaseHealthPage"
}
```

`LeaseInbound`

`object`

| Field | Type and constraints |
| --- | --- |
| `observed_at`Required  | `number` \| `null` |
| `success_at`Required  | `number` \| `null` |
| `error`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "observed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Observed At"
    },
    "success_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Success At"
    },
    "error": {
      "type": "string",
      "title": "Error"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "observed_at",
    "success_at",
    "error"
  ],
  "title": "LeaseInbound"
}
```

`LeasePlacementSample`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `source`Required  | `string` |
| `test_code`Required  | `string` |
| `state`Required  | `string` |
| `created_at`Required  | `number` |
| `observed_at`Required  | `number` |
| `evidence_error`Required  | `string` |
| `sender`Required  | [`LeasePlacementSender`](https://startwave.io/docs/api/#schema-LeasePlacementSender) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "source": {
      "type": "string",
      "title": "Source"
    },
    "test_code": {
      "type": "string",
      "title": "Test Code"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "evidence_error": {
      "type": "string",
      "title": "Evidence Error"
    },
    "sender": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/LeasePlacementSender"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "source",
    "test_code",
    "state",
    "created_at",
    "observed_at",
    "evidence_error",
    "sender"
  ],
  "title": "LeasePlacementSample"
}
```

`LeasePlacementSender`

`object`

| Field | Type and constraints |
| --- | --- |
| `mailbox`Required  | `string` |
| `business_counts`Required  | [`PlacementCounts`](https://startwave.io/docs/api/#schema-PlacementCounts) |
| `providers`Required  | `object` \| [`HistoricalPlacementProviders`](https://startwave.io/docs/api/#schema-HistoricalPlacementProviders) |
| `measurement`Required  | `string` |
| `content_applicability`Required  | `string` |
| `send_attribution`Required  | `"unknown"` |

Complete schema

JSON schema

```
{
  "properties": {
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "business_counts": {
      "$ref": "#/components/schemas/PlacementCounts"
    },
    "providers": {
      "anyOf": [
        {
          "additionalProperties": {
            "$ref": "#/components/schemas/PlacementCounts"
          },
          "type": "object"
        },
        {
          "$ref": "#/components/schemas/HistoricalPlacementProviders"
        }
      ],
      "title": "Providers"
    },
    "measurement": {
      "type": "string",
      "title": "Measurement"
    },
    "content_applicability": {
      "type": "string",
      "title": "Content Applicability"
    },
    "send_attribution": {
      "type": "string",
      "const": "unknown",
      "title": "Send Attribution"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "mailbox",
    "business_counts",
    "providers",
    "measurement",
    "content_applicability",
    "send_attribution"
  ],
  "title": "LeasePlacementSender"
}
```

`LeaseTransition`

`object`

| Field | Type and constraints |
| --- | --- |
| `started_by`Required  | `string` |
| `ended_by`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "started_by": {
      "type": "string",
      "title": "Started By"
    },
    "ended_by": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Ended By"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "started_by",
    "ended_by"
  ],
  "title": "LeaseTransition"
}
```

`LedgerEntry`

`object`

| Field | Type and constraints |
| --- | --- |
| `event_id`Required  | `string` |
| `kind`Required  | `string` |
| `amount`Required  | `integer` |
| `created_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "kind": {
      "type": "string",
      "title": "Kind"
    },
    "amount": {
      "type": "integer",
      "title": "Amount"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "event_id",
    "kind",
    "amount",
    "created_at"
  ],
  "title": "LedgerEntry"
}
```

`LedgerItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `reference`Required  | `string` |
| `kind`Required  | `"funding" \| "order" \| "reversal" \| "promotion"` |
| `amount_minor`Required  | `integer` |
| `order_id`Required  | `string` \| `null` |
| `created_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "reference": {
      "type": "string",
      "title": "Reference"
    },
    "kind": {
      "type": "string",
      "enum": [
        "funding",
        "order",
        "reversal",
        "promotion"
      ],
      "title": "Kind"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "order_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Order Id"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "reference",
    "kind",
    "amount_minor",
    "order_id",
    "created_at"
  ],
  "title": "LedgerItem"
}
```

`LedgerPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`LedgerEntry`](https://startwave.io/docs/api/#schema-LedgerEntry) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/LedgerEntry"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "LedgerPage"
}
```

`LegacyFundingEntry`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `string` |
| `created_at`Required  | `number` |
| `completed_at`Required  | `number` \| `null` |
| `submitted_at`Required  | `number` \| `null` |
| `amount_cents`Required  | `integer` |
| `method`Required  | `string` |
| `revision`Required  | `integer` |
| `automatic`Required  | `boolean` |
| `consent_revision`Required  | `integer` \| `null` |
| `funding_inputs`Required  | [`LegacyFundingPreview`](https://startwave.io/docs/api/#schema-LegacyFundingPreview) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At"
    },
    "submitted_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Submitted At"
    },
    "amount_cents": {
      "type": "integer",
      "title": "Amount Cents"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "automatic": {
      "type": "boolean",
      "title": "Automatic"
    },
    "consent_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Consent Revision"
    },
    "funding_inputs": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/LegacyFundingPreview"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "created_at",
    "completed_at",
    "submitted_at",
    "amount_cents",
    "method",
    "revision",
    "automatic",
    "consent_revision",
    "funding_inputs"
  ],
  "title": "LegacyFundingEntry"
}
```

`LegacyFundingHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`LegacyFundingEntry`](https://startwave.io/docs/api/#schema-LegacyFundingEntry) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/LegacyFundingEntry"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "LegacyFundingHistory"
}
```

`LegacyFundingPreview`

`object`

| Field | Type and constraints |
| --- | --- |
| `spendable_cents`Required  | `integer` |
| `renewal_cents`Required  | `integer` |
| `amount_cents`Required  | `integer` |
| `policy`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "spendable_cents": {
      "type": "integer",
      "title": "Spendable Cents"
    },
    "renewal_cents": {
      "type": "integer",
      "title": "Renewal Cents"
    },
    "amount_cents": {
      "type": "integer",
      "title": "Amount Cents"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "spendable_cents",
    "renewal_cents",
    "amount_cents",
    "policy"
  ],
  "title": "LegacyFundingPreview"
}
```

`LegacyFundingResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `status`Required  | `string` |
| `amount_cents`Required  | `integer` |
| `method`Optional  | `string` |
| `client_secret`Optional  | `string` Only returned for an authorized confirmation requiring provider interaction. |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "status": {
      "type": "string",
      "title": "Status"
    },
    "amount_cents": {
      "type": "integer",
      "title": "Amount Cents"
    },
    "method": {
      "type": "string",
      "title": "Method"
    },
    "client_secret": {
      "type": "string",
      "title": "Client Secret",
      "description": "Only returned for an authorized confirmation requiring provider interaction."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "status",
    "amount_cents"
  ],
  "title": "LegacyFundingResult"
}
```

`LegacySendingPolicyReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `consumer_id`Required  | `string` |
| `revision`Required  | `integer` |
| `slow_ramp`Required  | `boolean` |
| `mailbox_daily_limit`Required  | `7 \| 15` |
| `operation`Required  | `string` |
| `kind`Required  | `"sending_policy"` |
| `recorded_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "consumer_id": {
      "type": "string",
      "title": "Consumer Id"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "slow_ramp": {
      "type": "boolean",
      "title": "Slow Ramp"
    },
    "mailbox_daily_limit": {
      "type": "integer",
      "enum": [
        7,
        15
      ],
      "title": "Mailbox Daily Limit"
    },
    "operation": {
      "type": "string",
      "title": "Operation"
    },
    "kind": {
      "type": "string",
      "const": "sending_policy",
      "title": "Kind"
    },
    "recorded_at": {
      "type": "string",
      "title": "Recorded At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "consumer_id",
    "revision",
    "slow_ramp",
    "mailbox_daily_limit",
    "operation",
    "kind",
    "recorded_at"
  ],
  "title": "LegacySendingPolicyReceipt"
}
```

`ListCampaign`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `state`Required  | `string` |
| `archived`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "archived": {
      "type": "boolean",
      "title": "Archived"
    }
  },
  "type": "object",
  "required": [
    "id",
    "name",
    "state",
    "archived"
  ],
  "title": "ListCampaign"
}
```

`ListCampaigns`

`object`

| Field | Type and constraints |
| --- | --- |
| `total`Required  | `integer` |
| `items`Required  | array of [`ListCampaign`](https://startwave.io/docs/api/#schema-ListCampaign) |

Complete schema

JSON schema

```
{
  "properties": {
    "total": {
      "type": "integer",
      "title": "Total"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/ListCampaign"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "total",
    "items"
  ],
  "title": "ListCampaigns"
}
```

`ListCreate`

`object`

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `entity_type`Required  | `"person" \| "company"` |

Complete schema

JSON schema

```
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name",
    "entity_type"
  ],
  "title": "ListCreate"
}
```

`ListEdit`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `name`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "active",
            "archived"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Name"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision"
  ],
  "title": "ListEdit"
}
```

`ListView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `entity_type`Required  | `"person" \| "company"` |
| `state`Required  | `"active" \| "archived"` |
| `revision`Required  | `integer` |
| `membership_revision`Required  | `integer` |
| `member_count`Required  | `integer` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `campaigns`Optional  | [`ListCampaigns`](https://startwave.io/docs/api/#schema-ListCampaigns) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "membership_revision": {
      "type": "integer",
      "title": "Membership Revision"
    },
    "member_count": {
      "type": "integer",
      "title": "Member Count"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "campaigns": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ListCampaigns"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "id",
    "name",
    "entity_type",
    "state",
    "revision",
    "membership_revision",
    "member_count",
    "created_at",
    "updated_at"
  ],
  "title": "ListView"
}
```

`LookupResult_CompanyPreview_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview) |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CompanyPreview"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "items"
  ],
  "title": "LookupResult[CompanyPreview]"
}
```

`LookupResult_CompanyView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CompanyView`](https://startwave.io/docs/api/#schema-CompanyView) |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CompanyView"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "items"
  ],
  "title": "LookupResult[CompanyView]"
}
```

`LookupResult_PersonPreview_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/PersonPreview"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "items"
  ],
  "title": "LookupResult[PersonPreview]"
}
```

`LookupResult_PersonView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`PersonView`](https://startwave.io/docs/api/#schema-PersonView) |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/PersonView"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "items"
  ],
  "title": "LookupResult[PersonView]"
}
```

`MailboxObservation`

`object`

| Field | Type and constraints |
| --- | --- |
| `mailbox`Required  | `string` |
| `generation`Required  | `string` |
| `domain`Required  | `string` |
| `ramp_day`Required  | `integer` Minimum: `0.0`  |
| `started_at`Required  | `string` \| `null` |
| `provenance`Required  | `string` \| `null` |
| `introduction_started_at`Required  | `string` \| `null` |
| `introduction_provenance`Required  | `string` \| `null` |
| `effective_daily_limit`Required  | `integer` Minimum: `0.0` · Maximum: `15000.0`  |
| `committed_units`Required  | `integer` Minimum: `0.0`  |
| `remaining_units`Required  | `integer` Minimum: `0.0` · Maximum: `15000.0`  |
| `reason`Required  | `string` |
| `next_admission_at`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "generation": {
      "type": "string",
      "title": "Generation"
    },
    "domain": {
      "type": "string",
      "title": "Domain"
    },
    "ramp_day": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Ramp Day"
    },
    "started_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Started At"
    },
    "provenance": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provenance"
    },
    "introduction_started_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Introduction Started At"
    },
    "introduction_provenance": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Introduction Provenance"
    },
    "effective_daily_limit": {
      "type": "integer",
      "maximum": 15000.0,
      "minimum": 0.0,
      "title": "Effective Daily Limit"
    },
    "committed_units": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Committed Units"
    },
    "remaining_units": {
      "type": "integer",
      "maximum": 15000.0,
      "minimum": 0.0,
      "title": "Remaining Units"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "next_admission_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Admission At"
    }
  },
  "type": "object",
  "required": [
    "mailbox",
    "generation",
    "domain",
    "ramp_day",
    "started_at",
    "provenance",
    "introduction_started_at",
    "introduction_provenance",
    "effective_daily_limit",
    "committed_units",
    "remaining_units",
    "reason",
    "next_admission_at"
  ],
  "title": "MailboxObservation"
}
```

`MailboxPlan`

`object`

| Field | Type and constraints |
| --- | --- |
| `retained`Required  | `integer` |
| `available`Required  | `integer` |
| `purchase`Required  | `integer` |
| `assign_purchased`Required  | `integer` |
| `spare_purchased`Required  | `integer` |
| `release`Required  | `integer` |
| `purchase_domains`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "retained": {
      "type": "integer",
      "title": "Retained"
    },
    "available": {
      "type": "integer",
      "title": "Available"
    },
    "purchase": {
      "type": "integer",
      "title": "Purchase"
    },
    "assign_purchased": {
      "type": "integer",
      "title": "Assign Purchased"
    },
    "spare_purchased": {
      "type": "integer",
      "title": "Spare Purchased"
    },
    "release": {
      "type": "integer",
      "title": "Release"
    },
    "purchase_domains": {
      "type": "integer",
      "title": "Purchase Domains"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "retained",
    "available",
    "purchase",
    "assign_purchased",
    "spare_purchased",
    "release",
    "purchase_domains"
  ],
  "title": "MailboxPlan"
}
```

`MailboxRecovery`

`object`

| Field | Type and constraints |
| --- | --- |
| `replacement_needed`Required  | `integer` |
| `restricted`Required  | `integer` |
| `limited`Required  | `boolean` |
| `pending`Required  | `boolean` |
| `error`Required  | `string` |
| `source_last_polled_at`Required  | `number` \| `null` |
| `source_poll_failed`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "replacement_needed": {
      "type": "integer",
      "title": "Replacement Needed"
    },
    "restricted": {
      "type": "integer",
      "title": "Restricted"
    },
    "limited": {
      "type": "boolean",
      "title": "Limited"
    },
    "pending": {
      "type": "boolean",
      "title": "Pending"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "source_last_polled_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Last Polled At"
    },
    "source_poll_failed": {
      "type": "boolean",
      "title": "Source Poll Failed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "replacement_needed",
    "restricted",
    "limited",
    "pending",
    "error",
    "source_last_polled_at",
    "source_poll_failed"
  ],
  "title": "MailboxRecovery"
}
```

`MandateChange`

`object`

| Field | Type and constraints |
| --- | --- |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `enabled`Required  | `boolean` |
| `policy_id`Required  | `"data-autopay-test-v1" \| "data-autopay-live-v1"` |
| `billing_revision`Required  | `integer` Minimum: `0.0`  |
| `low_water_minor`Required  | `integer` Minimum: `0.0` · Maximum: `100000.0`  |
| `refill_minor`Required  | `integer` Minimum: `500.0` · Maximum: `100000.0`  |
| `max_charge_minor`Required  | `integer` Minimum: `500.0` · Maximum: `100000.0`  |
| `max_month_minor`Required  | `integer` Minimum: `500.0` · Maximum: `10000000.0`  |
| `expires_at`Optional  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Revision"
    },
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "policy_id": {
      "type": "string",
      "enum": [
        "data-autopay-test-v1",
        "data-autopay-live-v1"
      ],
      "title": "Policy Id"
    },
    "billing_revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Billing Revision"
    },
    "low_water_minor": {
      "type": "integer",
      "maximum": 100000.0,
      "minimum": 0.0,
      "title": "Low Water Minor"
    },
    "refill_minor": {
      "type": "integer",
      "maximum": 100000.0,
      "minimum": 500.0,
      "title": "Refill Minor"
    },
    "max_charge_minor": {
      "type": "integer",
      "maximum": 100000.0,
      "minimum": 500.0,
      "title": "Max Charge Minor"
    },
    "max_month_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 500.0,
      "title": "Max Month Minor"
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "revision",
    "enabled",
    "policy_id",
    "billing_revision",
    "low_water_minor",
    "refill_minor",
    "max_charge_minor",
    "max_month_minor"
  ],
  "title": "MandateChange"
}
```

`MandateView`

`object`

| Field | Type and constraints |
| --- | --- |
| `available`Required  | `boolean` |
| `policy_id`Required  | `"data-autopay-test-v1" \| "data-autopay-live-v1"` \| `null` |
| `revision`Required  | `integer` |
| `enabled`Required  | `boolean` |
| `terms`Optional  | [`MandateChange`](https://startwave.io/docs/api/#schema-MandateChange) \| `null` |
| `updated_at`Optional  | `number` \| `null` |
| `operation`Optional  | `string` \| `null` |
| `error`Optional  | `string` Default: `""`  |
| `blocker`Optional  | `string` Current local authority/configuration blocker, separate from the last worker error. Empty is not a promise of payment or evidence of provider health. Default: `""`  |
| `next_attempt`Optional  | `number` \| `null` |
| `defaults`Optional  | [`MandateChange`](https://startwave.io/docs/api/#schema-MandateChange) \| `null` |
| `readiness`Required  | [`FundingReadiness`](https://startwave.io/docs/api/#schema-FundingReadiness) |

Complete schema

JSON schema

```
{
  "properties": {
    "available": {
      "type": "boolean",
      "title": "Available"
    },
    "policy_id": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "data-autopay-test-v1",
            "data-autopay-live-v1"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Policy Id"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "terms": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MandateChange"
        },
        {
          "type": "null"
        }
      ]
    },
    "updated_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Updated At"
    },
    "operation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Operation"
    },
    "error": {
      "type": "string",
      "title": "Error",
      "default": ""
    },
    "blocker": {
      "type": "string",
      "title": "Blocker",
      "description": "Current local authority/configuration blocker, separate from the last worker error. Empty is not a promise of payment or evidence of provider health.",
      "default": ""
    },
    "next_attempt": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Attempt"
    },
    "defaults": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MandateChange"
        },
        {
          "type": "null"
        }
      ]
    },
    "readiness": {
      "$ref": "#/components/schemas/FundingReadiness"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "available",
    "policy_id",
    "revision",
    "enabled",
    "readiness"
  ],
  "title": "MandateView"
}
```

`ManifestConfig`

`object`

| Field | Type and constraints |
| --- | --- |
| `entity_type`Optional  | `"person" \| "company"` \| `null` |
| `kind`Required  | `"records" \| "identifiers" \| "ids" \| "suppressions" \| "contact_history" \| "source_records" \| "source_versions" \| "export_rows"` |
| `defaults`Optional  | [`SuppressionDefaults`](https://startwave.io/docs/api/#schema-SuppressionDefaults) \| `null` |
| `history_source`Optional  | `string` \| `null` Optional immutable source label for contact-history rows without their own source column. |
| `format`Optional  | `"ndjson" \| "csv"` Default: `"ndjson"`  |
| `columns`Optional  | `object` |
| `max_rows`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `max_bytes`Required  | `integer` Minimum: `1.0` · Maximum: `8589934592.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "entity_type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "person",
            "company"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Entity Type"
    },
    "kind": {
      "type": "string",
      "enum": [
        "records",
        "identifiers",
        "ids",
        "suppressions",
        "contact_history",
        "source_records",
        "source_versions",
        "export_rows"
      ],
      "title": "Kind"
    },
    "defaults": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SuppressionDefaults"
        },
        {
          "type": "null"
        }
      ]
    },
    "history_source": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "pattern": "^[^\\x00-\\x1f\\x7f]+$"
        },
        {
          "type": "null"
        }
      ],
      "title": "History Source",
      "description": "Optional immutable source label for contact-history rows without their own source column."
    },
    "format": {
      "type": "string",
      "enum": [
        "ndjson",
        "csv"
      ],
      "title": "Format",
      "default": "ndjson"
    },
    "columns": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "maxProperties": 200,
      "title": "Columns"
    },
    "max_rows": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Max Rows"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 8589934592.0,
      "minimum": 1.0,
      "title": "Max Bytes"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "max_rows",
    "max_bytes"
  ],
  "title": "ManifestConfig"
}
```

`MaterializationStatus`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"not_started" \| "pending" \| "complete"` |
| `next_attempt`Required  | `number` \| `null` |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "not_started",
        "pending",
        "complete"
      ],
      "title": "State"
    },
    "next_attempt": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Attempt"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "next_attempt",
    "blocker"
  ],
  "title": "MaterializationStatus"
}
```

`MembershipChange`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_membership_revision`Required  | `integer` |
| `action`Required  | `"add" \| "remove"` |
| `ids`Required  | array of `string` Min items: `1` · Max items: `200`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_membership_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Membership Revision"
    },
    "action": {
      "type": "string",
      "enum": [
        "add",
        "remove"
      ],
      "title": "Action"
    },
    "ids": {
      "items": {
        "type": "string",
        "pattern": "^[a-f0-9]{32}$"
      },
      "type": "array",
      "maxItems": 200,
      "minItems": 1,
      "title": "Ids"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_membership_revision",
    "action",
    "ids"
  ],
  "title": "MembershipChange"
}
```

`MembershipCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `added`Optional  | `integer` Default: `0`  |
| `already_present`Optional  | `integer` Default: `0`  |
| `removed`Optional  | `integer` Default: `0`  |
| `not_present`Optional  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "added": {
      "type": "integer",
      "title": "Added",
      "default": 0
    },
    "already_present": {
      "type": "integer",
      "title": "Already Present",
      "default": 0
    },
    "removed": {
      "type": "integer",
      "title": "Removed",
      "default": 0
    },
    "not_present": {
      "type": "integer",
      "title": "Not Present",
      "default": 0
    }
  },
  "type": "object",
  "title": "MembershipCounts"
}
```

`MessageAddress`

`object`

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Max length: `200`  |
| `email`Required  | `string` Max length: `254`  |

Complete schema

JSON schema

```
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "title": "Name"
    },
    "email": {
      "type": "string",
      "maxLength": 254,
      "title": "Email"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name",
    "email"
  ],
  "title": "MessageAddress"
}
```

`MessageAttachment`

`object`

| Field | Type and constraints |
| --- | --- |
| `filename`Required  | `string` \| `null` |
| `content_type`Required  | `string` |
| `size_bytes`Required  | `integer` |
| `id`Optional  | `integer` \| `null` |
| `sha256`Optional  | `string` \| `null` |
| `original`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "filename": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Filename"
    },
    "content_type": {
      "type": "string",
      "title": "Content Type"
    },
    "size_bytes": {
      "type": "integer",
      "title": "Size Bytes"
    },
    "id": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Id"
    },
    "sha256": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sha256"
    },
    "original": {
      "type": "boolean",
      "title": "Original",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "filename",
    "content_type",
    "size_bytes"
  ],
  "title": "MessageAttachment"
}
```

`MessageCopy`

`object`

| Field | Type and constraints |
| --- | --- |
| `subject`Required  | `string` |
| `body`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "subject": {
      "type": "string",
      "title": "Subject"
    },
    "body": {
      "type": "string",
      "title": "Body"
    }
  },
  "type": "object",
  "required": [
    "subject",
    "body"
  ],
  "title": "MessageCopy"
}
```

`MessageParticipants`

`object`

| Field | Type and constraints |
| --- | --- |
| `subject`Required  | `string` Max length: `500`  |
| `message_id`Required  | `string` Max length: `1000`  |
| `in_reply_to`Required  | `string` Max length: `2048`  |
| `references`Required  | array of `string` Max items: `100`  |
| `provenance`Required  | `"original_mime"` |
| `from`Required  | array of [`MessageAddress`](https://startwave.io/docs/api/#schema-MessageAddress) Max items: `100`  |
| `reply_to`Required  | array of [`MessageAddress`](https://startwave.io/docs/api/#schema-MessageAddress) Max items: `100`  |
| `to`Required  | array of [`MessageAddress`](https://startwave.io/docs/api/#schema-MessageAddress) Max items: `100`  |
| `cc`Required  | array of [`MessageAddress`](https://startwave.io/docs/api/#schema-MessageAddress) Max items: `100`  |
| `mailbox`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "subject": {
      "type": "string",
      "maxLength": 500,
      "title": "Subject"
    },
    "message_id": {
      "type": "string",
      "maxLength": 1000,
      "title": "Message Id"
    },
    "in_reply_to": {
      "type": "string",
      "maxLength": 2048,
      "title": "In Reply To"
    },
    "references": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "maxItems": 100,
      "title": "References"
    },
    "provenance": {
      "type": "string",
      "const": "original_mime",
      "title": "Provenance"
    },
    "from": {
      "items": {
        "$ref": "#/components/schemas/MessageAddress"
      },
      "type": "array",
      "maxItems": 100,
      "title": "From"
    },
    "reply_to": {
      "items": {
        "$ref": "#/components/schemas/MessageAddress"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Reply To"
    },
    "to": {
      "items": {
        "$ref": "#/components/schemas/MessageAddress"
      },
      "type": "array",
      "maxItems": 100,
      "title": "To"
    },
    "cc": {
      "items": {
        "$ref": "#/components/schemas/MessageAddress"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Cc"
    },
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "subject",
    "message_id",
    "in_reply_to",
    "references",
    "provenance",
    "from",
    "reply_to",
    "to",
    "cc",
    "mailbox"
  ],
  "title": "MessageParticipants"
}
```

`NameMapping`

`object`

| Field | Type and constraints |
| --- | --- |
| `source_field`Required  | `string` Min length: `1` · Max length: `128`  |
| `target_field`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[a-zA-Z_][a-zA-Z_0-9]*$"`  |
| `source_kind`Optional  | `"full_name" \| "first_name"` Default: `"full_name"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "source_field": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Source Field"
    },
    "target_field": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "pattern": "^[a-zA-Z_][a-zA-Z_0-9]*$",
      "title": "Target Field"
    },
    "source_kind": {
      "type": "string",
      "enum": [
        "full_name",
        "first_name"
      ],
      "title": "Source Kind",
      "default": "full_name"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "source_field",
    "target_field"
  ],
  "title": "NameMapping"
}
```

`Nested-Input`

`object`

| Field | Type and constraints |
| --- | --- |
| `type`Required  | `"nested"` |
| `filters`Required  | `object` |
| `exclude`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "type": {
      "type": "string",
      "const": "nested",
      "title": "Type"
    },
    "filters": {
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Keywords"
          },
          {
            "$ref": "#/components/schemas/Picklist"
          },
          {
            "$ref": "#/components/schemas/Presence"
          },
          {
            "$ref": "#/components/schemas/Range"
          },
          {
            "$ref": "#/components/schemas/Nested-Input"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "exists": "#/components/schemas/Presence",
            "keyword_group": "#/components/schemas/Keywords",
            "nested": "#/components/schemas/Nested-Input",
            "picklist": "#/components/schemas/Picklist",
            "range": "#/components/schemas/Range"
          }
        }
      },
      "type": "object",
      "maxProperties": 20,
      "minProperties": 1,
      "title": "Filters"
    },
    "exclude": {
      "type": "boolean",
      "title": "Exclude",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "type",
    "filters"
  ],
  "title": "Nested"
}
```

`Nested-Output`

`object`

| Field | Type and constraints |
| --- | --- |
| `type`Required  | `"nested"` |
| `filters`Required  | `object` |
| `exclude`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "type": {
      "type": "string",
      "const": "nested",
      "title": "Type"
    },
    "filters": {
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Keywords"
          },
          {
            "$ref": "#/components/schemas/Picklist"
          },
          {
            "$ref": "#/components/schemas/Presence"
          },
          {
            "$ref": "#/components/schemas/Range"
          },
          {
            "$ref": "#/components/schemas/Nested-Output"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "exists": "#/components/schemas/Presence",
            "keyword_group": "#/components/schemas/Keywords",
            "nested": "#/components/schemas/Nested-Output",
            "picklist": "#/components/schemas/Picklist",
            "range": "#/components/schemas/Range"
          }
        }
      },
      "type": "object",
      "maxProperties": 20,
      "minProperties": 1,
      "title": "Filters"
    },
    "exclude": {
      "type": "boolean",
      "title": "Exclude",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "type",
    "filters"
  ],
  "title": "Nested"
}
```

`NestedFieldDefinition`

`object`

| Field | Type and constraints |
| --- | --- |
| `operators`Required  | array of `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "operators": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Operators"
    }
  },
  "type": "object",
  "required": [
    "operators"
  ],
  "title": "NestedFieldDefinition"
}
```

`NoteIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `body`Required  | `string` Min length: `1` · Max length: `10000` · Pattern: `"\\S"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "body": {
      "type": "string",
      "maxLength": 10000,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Body"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "body"
  ],
  "title": "NoteIn"
}
```

`Observation`

`object`

| Field | Type and constraints |
| --- | --- |
| `consumer_id`Required  | `string` |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `ramp_enforced`Required  | `true` |
| `ramp_policy_version`Required  | `"ramp-v1"` |
| `observed_at`Required  | `string` Format: `"date-time"`  |
| `valid_until`Required  | `string` Format: `"date-time"`  |
| `quota_day`Required  | `string` |
| `quota_timezone`Required  | `string` |
| `roster_fingerprint`Required  | `string` Pattern: `"^[0-9a-f]{64}$"`  |
| `nominal_daily_limit`Required  | `integer` Minimum: `0.0` · Maximum: `30000.0`  |
| `effective_daily_limit`Required  | `integer` Minimum: `0.0` · Maximum: `30000.0`  |
| `remaining_units`Required  | `integer` Minimum: `0.0` · Maximum: `30000.0`  |
| `committed_units`Required  | `integer` Minimum: `0.0`  |
| `items`Required  | array of [`MailboxObservation`](https://startwave.io/docs/api/#schema-MailboxObservation) Max items: `1000`  |

Complete schema

JSON schema

```
{
  "properties": {
    "consumer_id": {
      "type": "string",
      "title": "Consumer Id"
    },
    "revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Revision"
    },
    "ramp_enforced": {
      "type": "boolean",
      "const": true,
      "title": "Ramp Enforced"
    },
    "ramp_policy_version": {
      "type": "string",
      "const": "ramp-v1",
      "title": "Ramp Policy Version"
    },
    "observed_at": {
      "type": "string",
      "format": "date-time",
      "title": "Observed At"
    },
    "valid_until": {
      "type": "string",
      "format": "date-time",
      "title": "Valid Until"
    },
    "quota_day": {
      "type": "string",
      "title": "Quota Day"
    },
    "quota_timezone": {
      "type": "string",
      "title": "Quota Timezone"
    },
    "roster_fingerprint": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "title": "Roster Fingerprint"
    },
    "nominal_daily_limit": {
      "type": "integer",
      "maximum": 30000.0,
      "minimum": 0.0,
      "title": "Nominal Daily Limit"
    },
    "effective_daily_limit": {
      "type": "integer",
      "maximum": 30000.0,
      "minimum": 0.0,
      "title": "Effective Daily Limit"
    },
    "remaining_units": {
      "type": "integer",
      "maximum": 30000.0,
      "minimum": 0.0,
      "title": "Remaining Units"
    },
    "committed_units": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Committed Units"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/MailboxObservation"
      },
      "type": "array",
      "maxItems": 1000,
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "consumer_id",
    "revision",
    "ramp_enforced",
    "ramp_policy_version",
    "observed_at",
    "valid_until",
    "quota_day",
    "quota_timezone",
    "roster_fingerprint",
    "nominal_daily_limit",
    "effective_daily_limit",
    "remaining_units",
    "committed_units",
    "items"
  ],
  "title": "Observation"
}
```

`Operation`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `kind`Required  | `"people.create" \| "people.edit" \| "companies.create" \| "companies.edit" \| "lists.create" \| "lists.edit" \| "lists.membership" \| "people.save_source" \| "companies.save_source" \| "people.check_source" \| "companies.check_source" \| "people.refresh_preview" \| "companies.refresh_preview" \| "searches.create" \| "searches.edit" \| "search_sets.create" \| "search_sets.edit" \| "data_jobs.resume" \| "data_jobs.confirm"` |
| `resource_id`Required  | `string` |
| `state`Optional  | `"completed"` Default: `"completed"`  |
| `revision`Required  | `integer` |
| `membership_revision`Optional  | `integer` \| `null` |
| `counts`Optional  | [`MembershipCounts`](https://startwave.io/docs/api/#schema-MembershipCounts) \| `null` |
| `changed_ids`Optional  | array of `string` \| `null` |
| `source_check_revision`Optional  | `integer` \| `null` |
| `freshness`Optional  | `"current" \| "update_available" \| "unavailable"` \| `null` |
| `source_comparison`Optional  | [`SourceComparison`](https://startwave.io/docs/api/#schema-SourceComparison) \| `null` |
| `created_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "kind": {
      "type": "string",
      "enum": [
        "people.create",
        "people.edit",
        "companies.create",
        "companies.edit",
        "lists.create",
        "lists.edit",
        "lists.membership",
        "people.save_source",
        "companies.save_source",
        "people.check_source",
        "companies.check_source",
        "people.refresh_preview",
        "companies.refresh_preview",
        "searches.create",
        "searches.edit",
        "search_sets.create",
        "search_sets.edit",
        "data_jobs.resume",
        "data_jobs.confirm"
      ],
      "title": "Kind"
    },
    "resource_id": {
      "type": "string",
      "title": "Resource Id"
    },
    "state": {
      "type": "string",
      "const": "completed",
      "title": "State",
      "default": "completed"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "membership_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Membership Revision"
    },
    "counts": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MembershipCounts"
        },
        {
          "type": "null"
        }
      ]
    },
    "changed_ids": {
      "anyOf": [
        {
          "items": {
            "type": "string",
            "pattern": "^[a-f0-9]{32}$"
          },
          "type": "array",
          "maxItems": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Changed Ids"
    },
    "source_check_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Check Revision"
    },
    "freshness": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "current",
            "update_available",
            "unavailable"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Freshness"
    },
    "source_comparison": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SourceComparison"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "kind",
    "resource_id",
    "revision",
    "created_at"
  ],
  "title": "Operation"
}
```

`OrderResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `record_id`Required  | `string` |
| `version_id`Required  | `string` |
| `outcome`Required  | `"newly_granted" \| "already_owned" \| "missing_email" \| "missing_licensed_data" \| "invalid_contact"` |
| `amount_minor`Required  | `integer` |
| `snapshot`Optional  | [`OwnedSnapshot`](https://startwave.io/docs/api/#schema-OwnedSnapshot) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "record_id": {
      "type": "string",
      "title": "Record Id"
    },
    "version_id": {
      "type": "string",
      "title": "Version Id"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "newly_granted",
        "already_owned",
        "missing_email",
        "missing_licensed_data",
        "invalid_contact"
      ],
      "title": "Outcome"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "snapshot": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/OwnedSnapshot"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "record_id",
    "version_id",
    "outcome",
    "amount_minor"
  ],
  "title": "OrderResult"
}
```

`OrderSummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"awaiting_funds" \| "completed" \| "cancelled"` |
| `created_at`Required  | `string` |
| `completed_at`Required  | `string` \| `null` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `amount_minor`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "awaiting_funds",
        "completed",
        "cancelled"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "amount_minor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Amount Minor"
    }
  },
  "type": "object",
  "required": [
    "id",
    "state",
    "created_at",
    "completed_at"
  ],
  "title": "OrderSummary"
}
```

`OrderTerms`

`object`

| Field | Type and constraints |
| --- | --- |
| `policy_id`Required  | `string` Min length: `1` · Max length: `100`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `10000000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "policy_id": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "title": "Policy Id"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "policy_id",
    "max_amount_minor"
  ],
  "title": "OrderTerms"
}
```

`OrderView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"awaiting_funds" \| "completed" \| "cancelled"` |
| `policy`Required  | [`DataPolicy`](https://startwave.io/docs/api/#schema-DataPolicy) |
| `currency`Required  | `"usd"` |
| `max_amount_minor`Required  | `integer` |
| `amount_minor`Required  | `integer` |
| `funding_required_minor`Required  | `integer` |
| `automatic_funding`Optional  | `boolean` Default: `false`  |
| `funding_error`Optional  | `string` Default: `""`  |
| `items`Required  | array of [`OrderResult`](https://startwave.io/docs/api/#schema-OrderResult) |
| `matches`Optional  | array of [`EnrichmentMatch`](https://startwave.io/docs/api/#schema-EnrichmentMatch) \| `null` |
| `created_at`Required  | `string` |
| `completed_at`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "awaiting_funds",
        "completed",
        "cancelled"
      ],
      "title": "State"
    },
    "policy": {
      "$ref": "#/components/schemas/DataPolicy"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency"
    },
    "max_amount_minor": {
      "type": "integer",
      "title": "Max Amount Minor"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "funding_required_minor": {
      "type": "integer",
      "title": "Funding Required Minor"
    },
    "automatic_funding": {
      "type": "boolean",
      "title": "Automatic Funding",
      "default": false
    },
    "funding_error": {
      "type": "string",
      "title": "Funding Error",
      "default": ""
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/OrderResult"
      },
      "type": "array",
      "title": "Items"
    },
    "matches": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/EnrichmentMatch"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Matches"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "state",
    "policy",
    "currency",
    "max_amount_minor",
    "amount_minor",
    "funding_required_minor",
    "items",
    "created_at",
    "completed_at"
  ],
  "title": "OrderView"
}
```

`OutboundMessage`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `direction`Required  | `"in" \| "out"` |
| `authorship`Required  | `"external" \| "campaign" \| "human" \| "automation"` |
| `occurred_at`Required  | `number` |
| `job_id`Required  | `string` |
| `submitted_by`Required  | `string` |
| `message_id`Required  | `string` |
| `state`Required  | `"queued" \| "reserved" \| "dispatching" \| "accepted" \| "not_accepted" \| "unknown" \| "cancelled"` |
| `error`Required  | `string` |
| `subject`Required  | `string` \| `null` |
| `content`Required  | `string` \| `null` |
| `participants`Optional  | [`MessageParticipants`](https://startwave.io/docs/api/#schema-MessageParticipants) |
| `has_html`Optional  | `boolean` |
| `attachments`Optional  | array of [`MessageAttachment`](https://startwave.io/docs/api/#schema-MessageAttachment) |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "direction": {
      "type": "string",
      "enum": [
        "in",
        "out"
      ],
      "title": "Direction"
    },
    "authorship": {
      "type": "string",
      "enum": [
        "external",
        "campaign",
        "human",
        "automation"
      ],
      "title": "Authorship"
    },
    "occurred_at": {
      "type": "number",
      "title": "Occurred At"
    },
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "submitted_by": {
      "type": "string",
      "title": "Submitted By"
    },
    "message_id": {
      "type": "string",
      "title": "Message Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "queued",
        "reserved",
        "dispatching",
        "accepted",
        "not_accepted",
        "unknown",
        "cancelled"
      ],
      "title": "State"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "subject": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject"
    },
    "content": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Content"
    },
    "participants": {
      "$ref": "#/components/schemas/MessageParticipants"
    },
    "has_html": {
      "type": "boolean",
      "title": "Has Html"
    },
    "attachments": {
      "items": {
        "$ref": "#/components/schemas/MessageAttachment"
      },
      "type": "array",
      "title": "Attachments"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "direction",
    "authorship",
    "occurred_at",
    "job_id",
    "submitted_by",
    "message_id",
    "state",
    "error",
    "subject",
    "content"
  ],
  "title": "OutboundMessage"
}
```

`OwnedData`

`object`

| Field | Type and constraints |
| --- | --- |
| `grant_id`Required  | `string` |
| `version_id`Required  | `string` |
| `fields`Required  | `object` Immutable recorded fields. New grants use the current dataset registry; historical originals retain their original keys and values. |
| `granted_at`Required  | `string` |
| `freshness`Required  | `"current" \| "update_available" \| "unavailable"` |
| `checked_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "grant_id": {
      "type": "string",
      "title": "Grant Id"
    },
    "version_id": {
      "type": "string",
      "title": "Version Id"
    },
    "fields": {
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "type": "object",
      "title": "Fields",
      "description": "Immutable recorded fields. New grants use the current dataset registry; historical originals retain their original keys and values."
    },
    "granted_at": {
      "type": "string",
      "title": "Granted At"
    },
    "freshness": {
      "type": "string",
      "enum": [
        "current",
        "update_available",
        "unavailable"
      ],
      "title": "Freshness"
    },
    "checked_at": {
      "type": "string",
      "title": "Checked At"
    }
  },
  "type": "object",
  "required": [
    "grant_id",
    "version_id",
    "fields",
    "granted_at",
    "freshness",
    "checked_at"
  ],
  "title": "OwnedData"
}
```

`OwnedSnapshot`

`object`

| Field | Type and constraints |
| --- | --- |
| `grant_id`Required  | `string` |
| `version_id`Required  | `string` |
| `fields`Required  | `object` Immutable recorded fields. New grants use the current dataset registry; historical originals retain their original keys and values. |
| `granted_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "grant_id": {
      "type": "string",
      "title": "Grant Id"
    },
    "version_id": {
      "type": "string",
      "title": "Version Id"
    },
    "fields": {
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "type": "object",
      "title": "Fields",
      "description": "Immutable recorded fields. New grants use the current dataset registry; historical originals retain their original keys and values."
    },
    "granted_at": {
      "type": "string",
      "title": "Granted At"
    }
  },
  "type": "object",
  "required": [
    "grant_id",
    "version_id",
    "fields",
    "granted_at"
  ],
  "title": "OwnedSnapshot"
}
```

`OwnerTestCosts`

`object`

| Field | Type and constraints |
| --- | --- |
| `acquisition_cents`Required  | `integer` |
| `mailbox_monthly_cents`Required  | `integer` |
| `domain_renewal_cents`Required  | `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "acquisition_cents": {
      "type": "integer",
      "title": "Acquisition Cents"
    },
    "mailbox_monthly_cents": {
      "type": "integer",
      "title": "Mailbox Monthly Cents"
    },
    "domain_renewal_cents": {
      "type": "null",
      "title": "Domain Renewal Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "acquisition_cents",
    "mailbox_monthly_cents",
    "domain_renewal_cents"
  ],
  "title": "OwnerTestCosts"
}
```

`Page_CheckRoundView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CheckRoundView`](https://startwave.io/docs/api/#schema-CheckRoundView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CheckRoundView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[CheckRoundView]"
}
```

`Page_CompanyView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`CompanyView`](https://startwave.io/docs/api/#schema-CompanyView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/CompanyView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[CompanyView]"
}
```

`Page_ContactCampaign_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ContactCampaign`](https://startwave.io/docs/api/#schema-ContactCampaign) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ContactCampaign"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[ContactCampaign]"
}
```

`Page_DomainSetView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`DomainSetView`](https://startwave.io/docs/api/#schema-DomainSetView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/DomainSetView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[DomainSetView]"
}
```

`Page_ImportView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ImportView`](https://startwave.io/docs/api/#schema-ImportView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ImportView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[ImportView]"
}
```

`Page_JobView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`JobView`](https://startwave.io/docs/api/#schema-JobView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/JobView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[JobView]"
}
```

`Page_ListCampaign_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ListCampaign`](https://startwave.io/docs/api/#schema-ListCampaign) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ListCampaign"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[ListCampaign]"
}
```

`Page_ListView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ListView`](https://startwave.io/docs/api/#schema-ListView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ListView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[ListView]"
}
```

`Page_OrderSummary_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`OrderSummary`](https://startwave.io/docs/api/#schema-OrderSummary) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/OrderSummary"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[OrderSummary]"
}
```

`Page_PersonView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`PersonView`](https://startwave.io/docs/api/#schema-PersonView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/PersonView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[PersonView]"
}
```

`Page_SavedSearchView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`SavedSearchView`](https://startwave.io/docs/api/#schema-SavedSearchView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/SavedSearchView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[SavedSearchView]"
}
```

`Page_SelectionView_`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`SelectionView`](https://startwave.io/docs/api/#schema-SelectionView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/SelectionView"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[SelectionView]"
}
```

`Page_Union_PersonView__CompanyView__`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`PersonView`](https://startwave.io/docs/api/#schema-PersonView) \| [`CompanyView`](https://startwave.io/docs/api/#schema-CompanyView) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PersonView"
          },
          {
            "$ref": "#/components/schemas/CompanyView"
          }
        ]
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "Page[Union[PersonView, CompanyView]]"
}
```

`PaidCapacityTerm`

`object`

| Field | Type and constraints |
| --- | --- |
| `daily_sends`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `starts_at`Required  | `string` |
| `ends_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "daily_sends": {
      "type": "integer",
      "title": "Daily Sends"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "starts_at": {
      "type": "string",
      "title": "Starts At"
    },
    "ends_at": {
      "type": "string",
      "title": "Ends At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "daily_sends",
    "term_cents",
    "starts_at",
    "ends_at"
  ],
  "title": "PaidCapacityTerm"
}
```

`PendingCapacityExpansion`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `desired_daily_sends`Required  | `integer` |
| `maximum_additional_cents`Required  | `integer` |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "maximum_additional_cents": {
      "type": "integer",
      "title": "Maximum Additional Cents"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "desired_daily_sends",
    "maximum_additional_cents",
    "blocker"
  ],
  "title": "PendingCapacityExpansion"
}
```

`PendingCapacityTerm`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation`Required  | `string` |
| `effective_at`Required  | `string` |
| `lease_until`Required  | `string` |
| `term_cents`Required  | `integer` |
| `state`Required  | `"pending" \| "settled"` |
| `blocker`Required  | `string` |
| `allocated_daily_sends`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "operation": {
      "type": "string",
      "title": "Operation"
    },
    "effective_at": {
      "type": "string",
      "title": "Effective At"
    },
    "lease_until": {
      "type": "string",
      "title": "Lease Until"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "settled"
      ],
      "title": "State"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "allocated_daily_sends": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Allocated Daily Sends"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation",
    "effective_at",
    "lease_until",
    "term_cents",
    "state",
    "blocker",
    "allocated_daily_sends"
  ],
  "title": "PendingCapacityTerm"
}
```

`PersonAvailability`

`object`

| Field | Type and constraints |
| --- | --- |
| `business_email`Required  | `"present" \| "not_present"` |

Complete schema

JSON schema

```
{
  "properties": {
    "business_email": {
      "type": "string",
      "enum": [
        "present",
        "not_present"
      ],
      "title": "Business Email"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "business_email"
  ],
  "title": "PersonAvailability"
}
```

`PersonData`

`object`

| Field | Type and constraints |
| --- | --- |
| `UUID`Optional  | `string` \| `null` |
| `FIRST_NAME`Optional  | `string` \| `null` |
| `LAST_NAME`Optional  | `string` \| `null` |
| `PHOTO_URL`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `JOB_TITLE`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `PERSONAL_CITY`Optional  | `string` \| `null` |
| `PERSONAL_STATE`Optional  | `string` \| `null` |
| `PERSONAL_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `MIDDLE_NAME`Optional  | `string` \| `null` |
| `DEPARTMENT`Optional  | `string` \| `null` |
| `SENIORITY_LEVEL`Optional  | `string` \| `null` |
| `HEADLINE`Optional  | `string` \| `null` |
| `SUMMARY`Optional  | `string` \| `null` |
| `SKILLS`Optional  | array of `string` \| `null` |
| `WORK_EXPERIENCE`Optional  | array of [`WorkExperience`](https://startwave.io/docs/api/#schema-WorkExperience) \| `null` |
| `EDUCATION_HISTORY`Optional  | array of [`EducationHistory`](https://startwave.io/docs/api/#schema-EducationHistory) \| `null` |
| `POSTS`Optional  | array of `object` \| `null` |
| `CURRENT_BUSINESS_EMAIL`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_DATE`Optional  | `string` \| `null` |
| `EMAILS`Optional  | `string` \| array of `string` \| `null` |
| `PHONES`Optional  | `string` \| array of `string` \| `null` |
| `MOBILE_PHONE`Optional  | `string` \| `null` |
| `MOBILE_PHONE_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `LINKEDIN_URL`Optional  | `string` \| `null` |
| `PERSONAL_ADDRESS`Optional  | `string` \| `null` |
| `PERSONAL_ZIP`Optional  | `string` \| `null` |
| `LAST_UPDATED`Optional  | `string` \| `null` |
| `COMPANY_DESCRIPTION`Optional  | `string` \| `null` |
| `COMPANY_INDUSTRY`Optional  | `string` \| `null` |
| `COMPANY_REVENUE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_NUM_EMPLOYEE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_OWNERSHIP`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_STAGE`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_ROUND_DATE`Optional  | `string` \| `null` |
| `COMPANY_TOTAL_FUNDING`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_STOCK_EXCHANGE`Optional  | `string` \| `null` |
| `COMPANY_TICKER_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_STOCK_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_MARKET_CAPITALIZATION`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_TOTAL_REVENUE`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_NUMBER_OF_FOLLOWERS`Optional  | `integer` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY_NUMERIC`Optional  | `string` \| `null` |
| `COMPANY_ADDRESS`Optional  | `string` \| `null` |
| `COMPANY_ZIP_CODE`Optional  | `string` \| `null` |
| `COMPANY_FOUNDED_YEAR`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_URL`Optional  | `string` \| `null` |
| `COMPANY_FACEBOOK_URL`Optional  | `string` \| `null` |
| `COMPANY_TWITTER_URL`Optional  | `string` \| `null` |
| `COMPANY_ANGELLIST_URL`Optional  | `string` \| `null` |
| `COMPANY_TECHNOLOGIES`Optional  | `string` \| array of `string` \| `null` |
| `COMPANY_RETAIL_LOCATION_COUNT`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "UUID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Person UUID"
    },
    "FIRST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "First name"
    },
    "LAST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last name"
    },
    "PHOTO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Photo URL"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "JOB_TITLE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Job title"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    },
    "PERSONAL_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "City"
    },
    "PERSONAL_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "PERSONAL_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    },
    "MIDDLE_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Middle name"
    },
    "DEPARTMENT": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Department"
    },
    "SENIORITY_LEVEL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Seniority level"
    },
    "HEADLINE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Headline"
    },
    "SUMMARY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "SKILLS": {
      "anyOf": [
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Skills"
    },
    "WORK_EXPERIENCE": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/WorkExperience"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Work experience"
    },
    "EDUCATION_HISTORY": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/EducationHistory"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Education history"
    },
    "POSTS": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "type": "object"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Posts"
    },
    "CURRENT_BUSINESS_EMAIL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Current business email"
    },
    "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Business email validation status"
    },
    "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Business email validation date"
    },
    "EMAILS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Emails"
    },
    "PHONES": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Phones"
    },
    "MOBILE_PHONE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Mobile phone"
    },
    "MOBILE_PHONE_VALIDATION_STATUS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Mobile phone validation status"
    },
    "LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "LinkedIn URL"
    },
    "PERSONAL_ADDRESS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Address"
    },
    "PERSONAL_ZIP": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Postal code"
    },
    "LAST_UPDATED": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last updated"
    },
    "COMPANY_DESCRIPTION": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company description"
    },
    "COMPANY_INDUSTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company industry"
    },
    "COMPANY_REVENUE_RANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Revenue range"
    },
    "COMPANY_NUM_EMPLOYEE_RANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company size"
    },
    "COMPANY_OWNERSHIP": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Ownership"
    },
    "COMPANY_LATEST_FUNDING_STAGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest funding stage"
    },
    "COMPANY_LATEST_FUNDING_ROUND_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest funding date"
    },
    "COMPANY_TOTAL_FUNDING": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total funding"
    },
    "COMPANY_STOCK_EXCHANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Stock exchange"
    },
    "COMPANY_TICKER_SYMBOL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Ticker symbol"
    },
    "COMPANY_STOCK_SYMBOL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Stock symbol"
    },
    "COMPANY_MARKET_CAPITALIZATION": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market capitalization"
    },
    "COMPANY_TOTAL_REVENUE": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total revenue"
    },
    "COMPANY_NUMBER_OF_FOLLOWERS": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Followers"
    },
    "COMPANY_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company city"
    },
    "COMPANY_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company state"
    },
    "COMPANY_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company country"
    },
    "COMPANY_COUNTRY_NUMERIC": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country numeric code"
    },
    "COMPANY_ADDRESS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company address"
    },
    "COMPANY_ZIP_CODE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company postal code"
    },
    "COMPANY_FOUNDED_YEAR": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Founded year"
    },
    "COMPANY_LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company LinkedIn URL"
    },
    "COMPANY_FACEBOOK_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Facebook URL"
    },
    "COMPANY_TWITTER_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Twitter URL"
    },
    "COMPANY_ANGELLIST_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company AngelList URL"
    },
    "COMPANY_TECHNOLOGIES": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Technologies"
    },
    "COMPANY_RETAIL_LOCATION_COUNT": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Retail locations"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "PersonData"
}
```

`PersonEdit`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `UUID`Optional  | `string` \| `null` |
| `FIRST_NAME`Optional  | `string` \| `null` |
| `LAST_NAME`Optional  | `string` \| `null` |
| `PHOTO_URL`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `JOB_TITLE`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `PERSONAL_CITY`Optional  | `string` \| `null` |
| `PERSONAL_STATE`Optional  | `string` \| `null` |
| `PERSONAL_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `MIDDLE_NAME`Optional  | `string` \| `null` |
| `DEPARTMENT`Optional  | `string` \| `null` |
| `SENIORITY_LEVEL`Optional  | `string` \| `null` |
| `HEADLINE`Optional  | `string` \| `null` |
| `SUMMARY`Optional  | `string` \| `null` |
| `SKILLS`Optional  | array of `string` \| `null` |
| `WORK_EXPERIENCE`Optional  | array of [`WorkExperience`](https://startwave.io/docs/api/#schema-WorkExperience) \| `null` |
| `EDUCATION_HISTORY`Optional  | array of [`EducationHistory`](https://startwave.io/docs/api/#schema-EducationHistory) \| `null` |
| `POSTS`Optional  | array of `object` \| `null` |
| `CURRENT_BUSINESS_EMAIL`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_DATE`Optional  | `string` \| `null` |
| `EMAILS`Optional  | `string` \| array of `string` \| `null` |
| `PHONES`Optional  | `string` \| array of `string` \| `null` |
| `MOBILE_PHONE`Optional  | `string` \| `null` |
| `MOBILE_PHONE_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `LINKEDIN_URL`Optional  | `string` \| `null` |
| `PERSONAL_ADDRESS`Optional  | `string` \| `null` |
| `PERSONAL_ZIP`Optional  | `string` \| `null` |
| `LAST_UPDATED`Optional  | `string` \| `null` |
| `COMPANY_DESCRIPTION`Optional  | `string` \| `null` |
| `COMPANY_INDUSTRY`Optional  | `string` \| `null` |
| `COMPANY_REVENUE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_NUM_EMPLOYEE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_OWNERSHIP`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_STAGE`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_ROUND_DATE`Optional  | `string` \| `null` |
| `COMPANY_TOTAL_FUNDING`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_STOCK_EXCHANGE`Optional  | `string` \| `null` |
| `COMPANY_TICKER_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_STOCK_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_MARKET_CAPITALIZATION`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_TOTAL_REVENUE`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_NUMBER_OF_FOLLOWERS`Optional  | `integer` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY_NUMERIC`Optional  | `string` \| `null` |
| `COMPANY_ADDRESS`Optional  | `string` \| `null` |
| `COMPANY_ZIP_CODE`Optional  | `string` \| `null` |
| `COMPANY_FOUNDED_YEAR`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_URL`Optional  | `string` \| `null` |
| `COMPANY_FACEBOOK_URL`Optional  | `string` \| `null` |
| `COMPANY_TWITTER_URL`Optional  | `string` \| `null` |
| `COMPANY_ANGELLIST_URL`Optional  | `string` \| `null` |
| `COMPANY_TECHNOLOGIES`Optional  | `string` \| array of `string` \| `null` |
| `COMPANY_RETAIL_LOCATION_COUNT`Optional  | `integer` \| `null` |
| `company_record_id`Optional  | `string` \| `null` Optional workspace company relationship; never the dataset COMPANY_ID. |
| `remove_overrides`Optional  | array of `"FIRST_NAME" \| "LAST_NAME" \| "PHOTO_URL" \| "COMPANY_NAME" \| "JOB_TITLE" \| "COMPANY_LOGO_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "COMPANY_DOMAIN" \| "MIDDLE_NAME" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT"` Remove selected provided overrides and use the selected owned snapshot values. Requires a catalogue-backed licensed record; omission preserves overrides, null still masks a value. No purchase or source refresh. Min items: `1` · Max items: `64`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "active",
            "archived"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "UUID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Person UUID"
    },
    "FIRST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "First name"
    },
    "LAST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last name"
    },
    "PHOTO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Photo URL"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "JOB_TITLE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Job title"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    },
    "PERSONAL_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "City"
    },
    "PERSONAL_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "PERSONAL_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    },
    "MIDDLE_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Middle name"
    },
    "DEPARTMENT": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Department"
    },
    "SENIORITY_LEVEL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Seniority level"
    },
    "HEADLINE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Headline"
    },
    "SUMMARY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "SKILLS": {
      "anyOf": [
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Skills"
    },
    "WORK_EXPERIENCE": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/WorkExperience"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Work experience"
    },
    "EDUCATION_HISTORY": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/EducationHistory"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Education history"
    },
    "POSTS": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "type": "object"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Posts"
    },
    "CURRENT_BUSINESS_EMAIL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Current business email"
    },
    "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Business email validation status"
    },
    "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Business email validation date"
    },
    "EMAILS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Emails"
    },
    "PHONES": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Phones"
    },
    "MOBILE_PHONE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Mobile phone"
    },
    "MOBILE_PHONE_VALIDATION_STATUS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Mobile phone validation status"
    },
    "LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "LinkedIn URL"
    },
    "PERSONAL_ADDRESS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Address"
    },
    "PERSONAL_ZIP": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Postal code"
    },
    "LAST_UPDATED": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last updated"
    },
    "COMPANY_DESCRIPTION": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company description"
    },
    "COMPANY_INDUSTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company industry"
    },
    "COMPANY_REVENUE_RANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Revenue range"
    },
    "COMPANY_NUM_EMPLOYEE_RANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company size"
    },
    "COMPANY_OWNERSHIP": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Ownership"
    },
    "COMPANY_LATEST_FUNDING_STAGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest funding stage"
    },
    "COMPANY_LATEST_FUNDING_ROUND_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest funding date"
    },
    "COMPANY_TOTAL_FUNDING": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total funding"
    },
    "COMPANY_STOCK_EXCHANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Stock exchange"
    },
    "COMPANY_TICKER_SYMBOL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Ticker symbol"
    },
    "COMPANY_STOCK_SYMBOL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Stock symbol"
    },
    "COMPANY_MARKET_CAPITALIZATION": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market capitalization"
    },
    "COMPANY_TOTAL_REVENUE": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total revenue"
    },
    "COMPANY_NUMBER_OF_FOLLOWERS": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Followers"
    },
    "COMPANY_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company city"
    },
    "COMPANY_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company state"
    },
    "COMPANY_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company country"
    },
    "COMPANY_COUNTRY_NUMERIC": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country numeric code"
    },
    "COMPANY_ADDRESS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company address"
    },
    "COMPANY_ZIP_CODE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company postal code"
    },
    "COMPANY_FOUNDED_YEAR": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Founded year"
    },
    "COMPANY_LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company LinkedIn URL"
    },
    "COMPANY_FACEBOOK_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Facebook URL"
    },
    "COMPANY_TWITTER_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Twitter URL"
    },
    "COMPANY_ANGELLIST_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company AngelList URL"
    },
    "COMPANY_TECHNOLOGIES": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Technologies"
    },
    "COMPANY_RETAIL_LOCATION_COUNT": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Retail locations"
    },
    "company_record_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Record Id",
      "description": "Optional workspace company relationship; never the dataset COMPANY_ID."
    },
    "remove_overrides": {
      "items": {
        "type": "string",
        "enum": [
          "FIRST_NAME",
          "LAST_NAME",
          "PHOTO_URL",
          "COMPANY_NAME",
          "JOB_TITLE",
          "COMPANY_LOGO_URL",
          "PERSONAL_CITY",
          "PERSONAL_STATE",
          "PERSONAL_COUNTRY",
          "COMPANY_DOMAIN",
          "MIDDLE_NAME",
          "DEPARTMENT",
          "SENIORITY_LEVEL",
          "HEADLINE",
          "SUMMARY",
          "SKILLS",
          "WORK_EXPERIENCE",
          "EDUCATION_HISTORY",
          "POSTS",
          "CURRENT_BUSINESS_EMAIL",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE",
          "EMAILS",
          "PHONES",
          "MOBILE_PHONE",
          "MOBILE_PHONE_VALIDATION_STATUS",
          "LINKEDIN_URL",
          "PERSONAL_ADDRESS",
          "PERSONAL_ZIP",
          "LAST_UPDATED",
          "COMPANY_DESCRIPTION",
          "COMPANY_INDUSTRY",
          "COMPANY_REVENUE_RANGE",
          "COMPANY_NUM_EMPLOYEE_RANGE",
          "COMPANY_OWNERSHIP",
          "COMPANY_LATEST_FUNDING_STAGE",
          "COMPANY_LATEST_FUNDING_ROUND_DATE",
          "COMPANY_TOTAL_FUNDING",
          "COMPANY_STOCK_EXCHANGE",
          "COMPANY_TICKER_SYMBOL",
          "COMPANY_STOCK_SYMBOL",
          "COMPANY_MARKET_CAPITALIZATION",
          "COMPANY_TOTAL_REVENUE",
          "COMPANY_NUMBER_OF_FOLLOWERS",
          "COMPANY_CITY",
          "COMPANY_STATE",
          "COMPANY_COUNTRY",
          "COMPANY_COUNTRY_NUMERIC",
          "COMPANY_ADDRESS",
          "COMPANY_ZIP_CODE",
          "COMPANY_FOUNDED_YEAR",
          "COMPANY_LINKEDIN_URL",
          "COMPANY_FACEBOOK_URL",
          "COMPANY_TWITTER_URL",
          "COMPANY_ANGELLIST_URL",
          "COMPANY_TECHNOLOGIES",
          "COMPANY_RETAIL_LOCATION_COUNT"
        ]
      },
      "type": "array",
      "maxItems": 64,
      "minItems": 1,
      "title": "Remove Overrides",
      "description": "Remove selected provided overrides and use the selected owned snapshot values. Requires a catalogue-backed licensed record; omission preserves overrides, null still masks a value. No purchase or source refresh."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision"
  ],
  "title": "PersonEdit"
}
```

`PersonFields`

`object`

| Field | Type and constraints |
| --- | --- |
| `UUID`Optional  | `string` \| `null` |
| `FIRST_NAME`Optional  | `string` \| `null` |
| `LAST_NAME`Optional  | `string` \| `null` |
| `PHOTO_URL`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `JOB_TITLE`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `PERSONAL_CITY`Optional  | `string` \| `null` |
| `PERSONAL_STATE`Optional  | `string` \| `null` |
| `PERSONAL_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |
| `MIDDLE_NAME`Optional  | `string` \| `null` |
| `DEPARTMENT`Optional  | `string` \| `null` |
| `SENIORITY_LEVEL`Optional  | `string` \| `null` |
| `HEADLINE`Optional  | `string` \| `null` |
| `SUMMARY`Optional  | `string` \| `null` |
| `SKILLS`Optional  | array of `string` \| `null` |
| `WORK_EXPERIENCE`Optional  | array of [`WorkExperience`](https://startwave.io/docs/api/#schema-WorkExperience) \| `null` |
| `EDUCATION_HISTORY`Optional  | array of [`EducationHistory`](https://startwave.io/docs/api/#schema-EducationHistory) \| `null` |
| `POSTS`Optional  | array of `object` \| `null` |
| `CURRENT_BUSINESS_EMAIL`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `CURRENT_BUSINESS_EMAIL_VALIDATION_DATE`Optional  | `string` \| `null` |
| `EMAILS`Optional  | `string` \| array of `string` \| `null` |
| `PHONES`Optional  | `string` \| array of `string` \| `null` |
| `MOBILE_PHONE`Optional  | `string` \| `null` |
| `MOBILE_PHONE_VALIDATION_STATUS`Optional  | `string` \| `null` |
| `LINKEDIN_URL`Optional  | `string` \| `null` |
| `PERSONAL_ADDRESS`Optional  | `string` \| `null` |
| `PERSONAL_ZIP`Optional  | `string` \| `null` |
| `LAST_UPDATED`Optional  | `string` \| `null` |
| `COMPANY_DESCRIPTION`Optional  | `string` \| `null` |
| `COMPANY_INDUSTRY`Optional  | `string` \| `null` |
| `COMPANY_REVENUE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_NUM_EMPLOYEE_RANGE`Optional  | `string` \| `null` |
| `COMPANY_OWNERSHIP`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_STAGE`Optional  | `string` \| `null` |
| `COMPANY_LATEST_FUNDING_ROUND_DATE`Optional  | `string` \| `null` |
| `COMPANY_TOTAL_FUNDING`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_STOCK_EXCHANGE`Optional  | `string` \| `null` |
| `COMPANY_TICKER_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_STOCK_SYMBOL`Optional  | `string` \| `null` |
| `COMPANY_MARKET_CAPITALIZATION`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_TOTAL_REVENUE`Optional  | `integer` \| `number` \| `null` |
| `COMPANY_NUMBER_OF_FOLLOWERS`Optional  | `integer` \| `null` |
| `COMPANY_CITY`Optional  | `string` \| `null` |
| `COMPANY_STATE`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_COUNTRY_NUMERIC`Optional  | `string` \| `null` |
| `COMPANY_ADDRESS`Optional  | `string` \| `null` |
| `COMPANY_ZIP_CODE`Optional  | `string` \| `null` |
| `COMPANY_FOUNDED_YEAR`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_URL`Optional  | `string` \| `null` |
| `COMPANY_FACEBOOK_URL`Optional  | `string` \| `null` |
| `COMPANY_TWITTER_URL`Optional  | `string` \| `null` |
| `COMPANY_ANGELLIST_URL`Optional  | `string` \| `null` |
| `COMPANY_TECHNOLOGIES`Optional  | `string` \| array of `string` \| `null` |
| `COMPANY_RETAIL_LOCATION_COUNT`Optional  | `integer` \| `null` |
| `company_record_id`Optional  | `string` \| `null` Optional workspace company relationship; never the dataset COMPANY_ID. |

Complete schema

JSON schema

```
{
  "properties": {
    "UUID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Person UUID"
    },
    "FIRST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "First name"
    },
    "LAST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last name"
    },
    "PHOTO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Photo URL"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "JOB_TITLE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Job title"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    },
    "PERSONAL_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "City"
    },
    "PERSONAL_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "PERSONAL_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    },
    "MIDDLE_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Middle name"
    },
    "DEPARTMENT": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Department"
    },
    "SENIORITY_LEVEL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Seniority level"
    },
    "HEADLINE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Headline"
    },
    "SUMMARY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "SKILLS": {
      "anyOf": [
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Skills"
    },
    "WORK_EXPERIENCE": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/WorkExperience"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Work experience"
    },
    "EDUCATION_HISTORY": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/components/schemas/EducationHistory"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Education history"
    },
    "POSTS": {
      "anyOf": [
        {
          "items": {
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonValue"
            },
            "type": "object"
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Posts"
    },
    "CURRENT_BUSINESS_EMAIL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Current business email"
    },
    "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Business email validation status"
    },
    "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Business email validation date"
    },
    "EMAILS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Emails"
    },
    "PHONES": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Phones"
    },
    "MOBILE_PHONE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Mobile phone"
    },
    "MOBILE_PHONE_VALIDATION_STATUS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Mobile phone validation status"
    },
    "LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "LinkedIn URL"
    },
    "PERSONAL_ADDRESS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Address"
    },
    "PERSONAL_ZIP": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Postal code"
    },
    "LAST_UPDATED": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last updated"
    },
    "COMPANY_DESCRIPTION": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company description"
    },
    "COMPANY_INDUSTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company industry"
    },
    "COMPANY_REVENUE_RANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Revenue range"
    },
    "COMPANY_NUM_EMPLOYEE_RANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company size"
    },
    "COMPANY_OWNERSHIP": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Ownership"
    },
    "COMPANY_LATEST_FUNDING_STAGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest funding stage"
    },
    "COMPANY_LATEST_FUNDING_ROUND_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest funding date"
    },
    "COMPANY_TOTAL_FUNDING": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total funding"
    },
    "COMPANY_STOCK_EXCHANGE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Stock exchange"
    },
    "COMPANY_TICKER_SYMBOL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Ticker symbol"
    },
    "COMPANY_STOCK_SYMBOL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Stock symbol"
    },
    "COMPANY_MARKET_CAPITALIZATION": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Market capitalization"
    },
    "COMPANY_TOTAL_REVENUE": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total revenue"
    },
    "COMPANY_NUMBER_OF_FOLLOWERS": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Followers"
    },
    "COMPANY_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company city"
    },
    "COMPANY_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company state"
    },
    "COMPANY_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company country"
    },
    "COMPANY_COUNTRY_NUMERIC": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country numeric code"
    },
    "COMPANY_ADDRESS": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company address"
    },
    "COMPANY_ZIP_CODE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company postal code"
    },
    "COMPANY_FOUNDED_YEAR": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Founded year"
    },
    "COMPANY_LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company LinkedIn URL"
    },
    "COMPANY_FACEBOOK_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Facebook URL"
    },
    "COMPANY_TWITTER_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Twitter URL"
    },
    "COMPANY_ANGELLIST_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company AngelList URL"
    },
    "COMPANY_TECHNOLOGIES": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "items": {
            "type": "string",
            "maxLength": 65536
          },
          "type": "array",
          "maxItems": 1000
        },
        {
          "type": "null"
        }
      ],
      "title": "Technologies"
    },
    "COMPANY_RETAIL_LOCATION_COUNT": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Retail locations"
    },
    "company_record_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Record Id",
      "description": "Optional workspace company relationship; never the dataset COMPANY_ID."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "PersonFields"
}
```

`PersonPreview`

`object`

| Field | Type and constraints |
| --- | --- |
| `UUID`Optional  | `string` \| `null` |
| `FIRST_NAME`Optional  | `string` \| `null` |
| `LAST_NAME`Optional  | `string` \| `null` |
| `PHOTO_URL`Optional  | `string` \| `null` |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `JOB_TITLE`Optional  | `string` \| `null` |
| `COMPANY_LOGO_URL`Optional  | `string` \| `null` |
| `PERSONAL_CITY`Optional  | `string` \| `null` |
| `PERSONAL_STATE`Optional  | `string` \| `null` |
| `PERSONAL_COUNTRY`Optional  | `string` \| `null` |
| `COMPANY_DOMAIN`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "UUID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Person UUID"
    },
    "FIRST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "First name"
    },
    "LAST_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Last name"
    },
    "PHOTO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Photo URL"
    },
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company name"
    },
    "JOB_TITLE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Job title"
    },
    "COMPANY_LOGO_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company logo URL"
    },
    "PERSONAL_CITY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "City"
    },
    "PERSONAL_STATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "PERSONAL_COUNTRY": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Country"
    },
    "COMPANY_DOMAIN": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company domain"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "PersonPreview"
}
```

`PersonView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `revision`Required  | `integer` |
| `state`Required  | `"active" \| "archived"` |
| `source`Optional  | `"manual" \| "catalogue"` Default: `"manual"`  |
| `source_state`Optional  | [`SourceState`](https://startwave.io/docs/api/#schema-SourceState) \| `null` |
| `data_access`Optional  | `"user_provided" \| "preview_only" \| "licensed"` Default: `"user_provided"`  |
| `owned_snapshot`Optional  | [`OwnedData`](https://startwave.io/docs/api/#schema-OwnedData) \| `null` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `fields`Required  | [`PersonData`](https://startwave.io/docs/api/#schema-PersonData) |
| `company_record_id`Optional  | `string` \| `null` |
| `preview`Required  | [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) Approved display fields from the selected owned snapshot, otherwise the current live catalogue record or supplied fields, with explicit overrides. Source unavailability never substitutes a stale preview. Not an export or refresh grant. |
| `overridden_fields`Required  | array of `"UUID" \| "FIRST_NAME" \| "LAST_NAME" \| "PHOTO_URL" \| "COMPANY_NAME" \| "JOB_TITLE" \| "COMPANY_LOGO_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "COMPANY_DOMAIN" \| "MIDDLE_NAME" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT"` Explicit manual overrides present in fields, including nulls; empty for manual records. Max items: `64`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    },
    "source": {
      "type": "string",
      "enum": [
        "manual",
        "catalogue"
      ],
      "title": "Source",
      "default": "manual"
    },
    "source_state": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SourceState"
        },
        {
          "type": "null"
        }
      ]
    },
    "data_access": {
      "type": "string",
      "enum": [
        "user_provided",
        "preview_only",
        "licensed"
      ],
      "title": "Data Access",
      "default": "user_provided"
    },
    "owned_snapshot": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/OwnedData"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "fields": {
      "$ref": "#/components/schemas/PersonData"
    },
    "company_record_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Record Id"
    },
    "preview": {
      "$ref": "#/components/schemas/PersonPreview",
      "description": "Approved display fields from the selected owned snapshot, otherwise the current live catalogue record or supplied fields, with explicit overrides. Source unavailability never substitutes a stale preview. Not an export or refresh grant."
    },
    "overridden_fields": {
      "items": {
        "type": "string",
        "enum": [
          "UUID",
          "FIRST_NAME",
          "LAST_NAME",
          "PHOTO_URL",
          "COMPANY_NAME",
          "JOB_TITLE",
          "COMPANY_LOGO_URL",
          "PERSONAL_CITY",
          "PERSONAL_STATE",
          "PERSONAL_COUNTRY",
          "COMPANY_DOMAIN",
          "MIDDLE_NAME",
          "DEPARTMENT",
          "SENIORITY_LEVEL",
          "HEADLINE",
          "SUMMARY",
          "SKILLS",
          "WORK_EXPERIENCE",
          "EDUCATION_HISTORY",
          "POSTS",
          "CURRENT_BUSINESS_EMAIL",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE",
          "EMAILS",
          "PHONES",
          "MOBILE_PHONE",
          "MOBILE_PHONE_VALIDATION_STATUS",
          "LINKEDIN_URL",
          "PERSONAL_ADDRESS",
          "PERSONAL_ZIP",
          "LAST_UPDATED",
          "COMPANY_DESCRIPTION",
          "COMPANY_INDUSTRY",
          "COMPANY_REVENUE_RANGE",
          "COMPANY_NUM_EMPLOYEE_RANGE",
          "COMPANY_OWNERSHIP",
          "COMPANY_LATEST_FUNDING_STAGE",
          "COMPANY_LATEST_FUNDING_ROUND_DATE",
          "COMPANY_TOTAL_FUNDING",
          "COMPANY_STOCK_EXCHANGE",
          "COMPANY_TICKER_SYMBOL",
          "COMPANY_STOCK_SYMBOL",
          "COMPANY_MARKET_CAPITALIZATION",
          "COMPANY_TOTAL_REVENUE",
          "COMPANY_NUMBER_OF_FOLLOWERS",
          "COMPANY_CITY",
          "COMPANY_STATE",
          "COMPANY_COUNTRY",
          "COMPANY_COUNTRY_NUMERIC",
          "COMPANY_ADDRESS",
          "COMPANY_ZIP_CODE",
          "COMPANY_FOUNDED_YEAR",
          "COMPANY_LINKEDIN_URL",
          "COMPANY_FACEBOOK_URL",
          "COMPANY_TWITTER_URL",
          "COMPANY_ANGELLIST_URL",
          "COMPANY_TECHNOLOGIES",
          "COMPANY_RETAIL_LOCATION_COUNT"
        ]
      },
      "type": "array",
      "maxItems": 64,
      "title": "Overridden Fields",
      "description": "Explicit manual overrides present in fields, including nulls; empty for manual records."
    }
  },
  "type": "object",
  "required": [
    "id",
    "revision",
    "state",
    "created_at",
    "updated_at",
    "fields",
    "preview",
    "overridden_fields"
  ],
  "title": "PersonView"
}
```

`Picklist`

`object`

| Field | Type and constraints |
| --- | --- |
| `type`Required  | `"picklist"` |
| `values`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `operator`Optional  | `"OR" \| "AND" \| "EXCLUDE"` Default: `"OR"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "type": {
      "type": "string",
      "const": "picklist",
      "title": "Type"
    },
    "values": {
      "items": {
        "type": "string",
        "maxLength": 256,
        "minLength": 1,
        "pattern": "^[^\\x00-\\x1f\\x7f]+$"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Values"
    },
    "operator": {
      "type": "string",
      "enum": [
        "OR",
        "AND",
        "EXCLUDE"
      ],
      "title": "Operator",
      "default": "OR"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "type",
    "values"
  ],
  "title": "Picklist"
}
```

`PlacementCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `primary`Required  | `integer` |
| `spam`Required  | `integer` |
| `promotions`Required  | `integer` |
| `other`Required  | `integer` |
| `not_found`Required  | `integer` |
| `unknown`Required  | `integer` |
| `expected`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "primary": {
      "type": "integer",
      "title": "Primary"
    },
    "spam": {
      "type": "integer",
      "title": "Spam"
    },
    "promotions": {
      "type": "integer",
      "title": "Promotions"
    },
    "other": {
      "type": "integer",
      "title": "Other"
    },
    "not_found": {
      "type": "integer",
      "title": "Not Found"
    },
    "unknown": {
      "type": "integer",
      "title": "Unknown"
    },
    "expected": {
      "type": "integer",
      "title": "Expected"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "primary",
    "spam",
    "promotions",
    "other",
    "not_found",
    "unknown",
    "expected"
  ],
  "title": "PlacementCounts"
}
```

`PolicyStatus`

`object`

| Field | Type and constraints |
| --- | --- |
| `current`Required  | [`Observation`](https://startwave.io/docs/api/#schema-Observation) \| `null` |
| `state`Required  | `"ready" \| "replanning" \| "unavailable"` |
| `error`Required  | `string` |
| `inbound`Required  | [`InboundAvailability`](https://startwave.io/docs/api/#schema-InboundAvailability) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "current": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Observation"
        },
        {
          "type": "null"
        }
      ]
    },
    "state": {
      "type": "string",
      "enum": [
        "ready",
        "replanning",
        "unavailable"
      ],
      "title": "State"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "inbound": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/InboundAvailability"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "current",
    "state",
    "error",
    "inbound"
  ],
  "title": "PolicyStatus"
}
```

`PreparingReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Optional  | `"review_preparation"` Default: `"review_preparation"`  |
| `id`Required  | `string` |
| `state`Required  | `"preparing" \| "failed" \| "cancelled" \| "expired"` |
| `entity_type`Required  | `"person" \| "company"` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `expires_at`Required  | `string` |
| `reason`Required  | `string` \| `null` |
| `can_confirm`Optional  | `false` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "review_preparation",
      "title": "Kind",
      "default": "review_preparation"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "preparing",
        "failed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "can_confirm": {
      "type": "boolean",
      "const": false,
      "title": "Can Confirm",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "entity_type",
    "created_at",
    "updated_at",
    "expires_at",
    "reason"
  ],
  "title": "PreparingReview"
}
```

`Presence`

`object`

| Field | Type and constraints |
| --- | --- |
| `type`Required  | `"exists"` |
| `value`Optional  | `boolean` Default: `true`  |

Complete schema

JSON schema

```
{
  "properties": {
    "type": {
      "type": "string",
      "const": "exists",
      "title": "Type"
    },
    "value": {
      "type": "boolean",
      "title": "Value",
      "default": true
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "type"
  ],
  "title": "Presence"
}
```

`PreviewCopy`

`object`

| Field | Type and constraints |
| --- | --- |
| `subject`Required  | `string` \| `null` |
| `body`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "subject": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject"
    },
    "body": {
      "type": "string",
      "title": "Body"
    }
  },
  "type": "object",
  "required": [
    "subject",
    "body"
  ],
  "title": "PreviewCopy"
}
```

`PreviewRefresh`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `expected_check_revision`Required  | `integer` |
| `version_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `reset_overrides`Optional  | array of `"FIRST_NAME" \| "LAST_NAME" \| "MIDDLE_NAME" \| "JOB_TITLE" \| "DEPARTMENT" \| "SENIORITY_LEVEL" \| "HEADLINE" \| "SUMMARY" \| "SKILLS" \| "WORK_EXPERIENCE" \| "EDUCATION_HISTORY" \| "POSTS" \| "CURRENT_BUSINESS_EMAIL" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS" \| "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE" \| "EMAILS" \| "PHONES" \| "MOBILE_PHONE" \| "MOBILE_PHONE_VALIDATION_STATUS" \| "LINKEDIN_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "PERSONAL_ADDRESS" \| "PERSONAL_ZIP" \| "LAST_UPDATED" \| "COMPANY_NAME" \| "COMPANY_DOMAIN" \| "COMPANY_DESCRIPTION" \| "COMPANY_INDUSTRY" \| "COMPANY_REVENUE_RANGE" \| "COMPANY_NUM_EMPLOYEE_RANGE" \| "COMPANY_OWNERSHIP" \| "COMPANY_LATEST_FUNDING_STAGE" \| "COMPANY_LATEST_FUNDING_ROUND_DATE" \| "COMPANY_TOTAL_FUNDING" \| "COMPANY_STOCK_EXCHANGE" \| "COMPANY_TICKER_SYMBOL" \| "COMPANY_STOCK_SYMBOL" \| "COMPANY_MARKET_CAPITALIZATION" \| "COMPANY_TOTAL_REVENUE" \| "COMPANY_NUMBER_OF_FOLLOWERS" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY" \| "COMPANY_COUNTRY_NUMERIC" \| "COMPANY_ADDRESS" \| "COMPANY_ZIP_CODE" \| "COMPANY_FOUNDED_YEAR" \| "COMPANY_LINKEDIN_URL" \| "COMPANY_FACEBOOK_URL" \| "COMPANY_TWITTER_URL" \| "COMPANY_ANGELLIST_URL" \| "COMPANY_TECHNOLOGIES" \| "COMPANY_RETAIL_LOCATION_COUNT" \| "COMPANY_ID" \| "COMPANY_LOGO_URL" \| "UUID" \| "PHOTO_URL"` Max items: `64`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "expected_check_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Check Revision"
    },
    "version_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Version Id"
    },
    "reset_overrides": {
      "items": {
        "type": "string",
        "enum": [
          "FIRST_NAME",
          "LAST_NAME",
          "MIDDLE_NAME",
          "JOB_TITLE",
          "DEPARTMENT",
          "SENIORITY_LEVEL",
          "HEADLINE",
          "SUMMARY",
          "SKILLS",
          "WORK_EXPERIENCE",
          "EDUCATION_HISTORY",
          "POSTS",
          "CURRENT_BUSINESS_EMAIL",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_STATUS",
          "CURRENT_BUSINESS_EMAIL_VALIDATION_DATE",
          "EMAILS",
          "PHONES",
          "MOBILE_PHONE",
          "MOBILE_PHONE_VALIDATION_STATUS",
          "LINKEDIN_URL",
          "PERSONAL_CITY",
          "PERSONAL_STATE",
          "PERSONAL_COUNTRY",
          "PERSONAL_ADDRESS",
          "PERSONAL_ZIP",
          "LAST_UPDATED",
          "COMPANY_NAME",
          "COMPANY_DOMAIN",
          "COMPANY_DESCRIPTION",
          "COMPANY_INDUSTRY",
          "COMPANY_REVENUE_RANGE",
          "COMPANY_NUM_EMPLOYEE_RANGE",
          "COMPANY_OWNERSHIP",
          "COMPANY_LATEST_FUNDING_STAGE",
          "COMPANY_LATEST_FUNDING_ROUND_DATE",
          "COMPANY_TOTAL_FUNDING",
          "COMPANY_STOCK_EXCHANGE",
          "COMPANY_TICKER_SYMBOL",
          "COMPANY_STOCK_SYMBOL",
          "COMPANY_MARKET_CAPITALIZATION",
          "COMPANY_TOTAL_REVENUE",
          "COMPANY_NUMBER_OF_FOLLOWERS",
          "COMPANY_CITY",
          "COMPANY_STATE",
          "COMPANY_COUNTRY",
          "COMPANY_COUNTRY_NUMERIC",
          "COMPANY_ADDRESS",
          "COMPANY_ZIP_CODE",
          "COMPANY_FOUNDED_YEAR",
          "COMPANY_LINKEDIN_URL",
          "COMPANY_FACEBOOK_URL",
          "COMPANY_TWITTER_URL",
          "COMPANY_ANGELLIST_URL",
          "COMPANY_TECHNOLOGIES",
          "COMPANY_RETAIL_LOCATION_COUNT",
          "COMPANY_ID",
          "COMPANY_LOGO_URL",
          "UUID",
          "PHOTO_URL"
        ]
      },
      "type": "array",
      "maxItems": 64,
      "title": "Reset Overrides"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision",
    "expected_check_revision",
    "version_id"
  ],
  "title": "PreviewRefresh"
}
```

`Processing`

`object`

| Field | Type and constraints |
| --- | --- |
| `enabled`Required  | `boolean` |
| `error`Required  | `string` |
| `limit_usd_micros`Required  | `integer` \| `null` |
| `spent_usd_micros`Required  | `integer` |
| `held_usd_micros`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "limit_usd_micros": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Limit Usd Micros"
    },
    "spent_usd_micros": {
      "type": "integer",
      "title": "Spent Usd Micros"
    },
    "held_usd_micros": {
      "type": "integer",
      "title": "Held Usd Micros"
    }
  },
  "type": "object",
  "required": [
    "enabled",
    "error",
    "limit_usd_micros",
    "spent_usd_micros",
    "held_usd_micros"
  ],
  "title": "Processing"
}
```

`ProjectedDay`

`object`

| Field | Type and constraints |
| --- | --- |
| `date`Required  | `string` |
| `configured_target`Optional  | `integer` \| `null` Default: `0`  |
| `capacity_ceiling`Optional  | `integer` \| `null` |
| `accepted`Optional  | [`sequencer__application__send_projection__Counts`](https://startwave.io/docs/api/#schema-sequencer__application__send_projection__Counts) |
| `estimated`Optional  | [`sequencer__application__send_projection__Counts`](https://startwave.io/docs/api/#schema-sequencer__application__send_projection__Counts) |
| `conditional`Optional  | [`sequencer__application__send_projection__Counts`](https://startwave.io/docs/api/#schema-sequencer__application__send_projection__Counts) |
| `carry_forward`Optional  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "date": {
      "type": "string",
      "title": "Date"
    },
    "configured_target": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Configured Target",
      "default": 0
    },
    "capacity_ceiling": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Ceiling"
    },
    "accepted": {
      "$ref": "#/components/schemas/sequencer__application__send_projection__Counts"
    },
    "estimated": {
      "$ref": "#/components/schemas/sequencer__application__send_projection__Counts"
    },
    "conditional": {
      "$ref": "#/components/schemas/sequencer__application__send_projection__Counts"
    },
    "carry_forward": {
      "type": "integer",
      "title": "Carry Forward",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "date"
  ],
  "title": "ProjectedDay"
}
```

`ProjectionConflict`

`object`

| Field | Type and constraints |
| --- | --- |
| `detail`Required  | [`ProjectionConflictDetail`](https://startwave.io/docs/api/#schema-ProjectionConflictDetail) |

Complete schema

JSON schema

```
{
  "properties": {
    "detail": {
      "$ref": "#/components/schemas/ProjectionConflictDetail"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "detail"
  ],
  "title": "ProjectionConflict"
}
```

`ProjectionConflictDetail`

`object`

| Field | Type and constraints |
| --- | --- |
| `code`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "code": {
      "type": "string",
      "title": "Code"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "code"
  ],
  "title": "ProjectionConflictDetail"
}
```

`ProvisioningCompensation`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"prepared" \| "submitted" \| "unknown" \| "issued" \| "not_due"` |
| `amount_cents`Required  | `integer` |
| `credited_cents`Required  | `integer` |
| `credit_note`Required  | `string` \| `null` |
| `next_check`Required  | `number` \| `null` |
| `cause`Required  | `string` |
| `scope`Required  | `"infrastructure_only"` |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "prepared",
        "submitted",
        "unknown",
        "issued",
        "not_due"
      ],
      "title": "State"
    },
    "amount_cents": {
      "type": "integer",
      "title": "Amount Cents"
    },
    "credited_cents": {
      "type": "integer",
      "title": "Credited Cents"
    },
    "credit_note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Credit Note"
    },
    "next_check": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Check"
    },
    "cause": {
      "type": "string",
      "title": "Cause"
    },
    "scope": {
      "type": "string",
      "const": "infrastructure_only",
      "title": "Scope"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "amount_cents",
    "credited_cents",
    "credit_note",
    "next_check",
    "cause",
    "scope"
  ],
  "title": "ProvisioningCompensation"
}
```

`ProvisioningOrder`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"prepared" \| "submitted" \| "unknown" \| "provisioning" \| "purchased" \| "failed" \| "quarantined" \| "stopped"` |
| `daily_sends`Required  | `integer` |
| `funded_receipt_recorded`Required  | `boolean` |
| `observed_at`Required  | `number` \| `null` |
| `next_check`Required  | `number` \| `null` |
| `cause`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "prepared",
        "submitted",
        "unknown",
        "provisioning",
        "purchased",
        "failed",
        "quarantined",
        "stopped"
      ],
      "title": "State"
    },
    "daily_sends": {
      "type": "integer",
      "title": "Daily Sends"
    },
    "funded_receipt_recorded": {
      "type": "boolean",
      "title": "Funded Receipt Recorded"
    },
    "observed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Observed At"
    },
    "next_check": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Check"
    },
    "cause": {
      "type": "string",
      "title": "Cause"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "daily_sends",
    "funded_receipt_recorded",
    "observed_at",
    "next_check",
    "cause"
  ],
  "title": "ProvisioningOrder"
}
```

`ProvisioningReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `policy`Required  | `string` |
| `ready_daily_sends`Required  | `integer` |
| `provisioning_daily_sends`Required  | `integer` |
| `deadline_at`Required  | `integer` |
| `estimated_ready_at`Required  | `null` |
| `supplier_funding_source`Required  | `"owner_test" \| "customer_live"` |
| `owner_test_costs`Required  | [`OwnerTestCosts`](https://startwave.io/docs/api/#schema-OwnerTestCosts) \| `null` |
| `compensation_policy`Required  | `string` |
| `credit_scope`Required  | `"infrastructure_only"` |

Complete schema

JSON schema

```
{
  "properties": {
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "ready_daily_sends": {
      "type": "integer",
      "title": "Ready Daily Sends"
    },
    "provisioning_daily_sends": {
      "type": "integer",
      "title": "Provisioning Daily Sends"
    },
    "deadline_at": {
      "type": "integer",
      "title": "Deadline At"
    },
    "estimated_ready_at": {
      "type": "null",
      "title": "Estimated Ready At"
    },
    "supplier_funding_source": {
      "type": "string",
      "enum": [
        "owner_test",
        "customer_live"
      ],
      "title": "Supplier Funding Source"
    },
    "owner_test_costs": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/OwnerTestCosts"
        },
        {
          "type": "null"
        }
      ]
    },
    "compensation_policy": {
      "type": "string",
      "title": "Compensation Policy"
    },
    "credit_scope": {
      "type": "string",
      "const": "infrastructure_only",
      "title": "Credit Scope"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "policy",
    "ready_daily_sends",
    "provisioning_daily_sends",
    "deadline_at",
    "estimated_ready_at",
    "supplier_funding_source",
    "owner_test_costs",
    "compensation_policy",
    "credit_scope"
  ],
  "title": "ProvisioningReview"
}
```

`ProvisioningStatus`

`object`

| Field | Type and constraints |
| --- | --- |
| `requested_daily_sends`Required  | `integer` |
| `supplier_funding_source`Required  | `"owner_test" \| "customer_live"` |
| `applied_daily_sends`Required  | `integer` |
| `applied_at`Required  | `number` \| `null` |
| `retained_reviewed_daily_sends`Required  | `integer` |
| `supplier_funded_daily_sends`Required  | `integer` |
| `failed_daily_sends`Required  | `integer` |
| `unknown_daily_sends`Required  | `integer` |
| `provisioning_daily_sends`Required  | `integer` |
| `deadline_at`Required  | `integer` \| `null` |
| `orders`Required  | array of [`ProvisioningOrder`](https://startwave.io/docs/api/#schema-ProvisioningOrder) |
| `payment_recorded`Required  | `boolean` |
| `review_required`Required  | `string` |
| `compensation`Required  | [`ProvisioningCompensation`](https://startwave.io/docs/api/#schema-ProvisioningCompensation) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "requested_daily_sends": {
      "type": "integer",
      "title": "Requested Daily Sends"
    },
    "supplier_funding_source": {
      "type": "string",
      "enum": [
        "owner_test",
        "customer_live"
      ],
      "title": "Supplier Funding Source"
    },
    "applied_daily_sends": {
      "type": "integer",
      "title": "Applied Daily Sends"
    },
    "applied_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Applied At"
    },
    "retained_reviewed_daily_sends": {
      "type": "integer",
      "title": "Retained Reviewed Daily Sends"
    },
    "supplier_funded_daily_sends": {
      "type": "integer",
      "title": "Supplier Funded Daily Sends"
    },
    "failed_daily_sends": {
      "type": "integer",
      "title": "Failed Daily Sends"
    },
    "unknown_daily_sends": {
      "type": "integer",
      "title": "Unknown Daily Sends"
    },
    "provisioning_daily_sends": {
      "type": "integer",
      "title": "Provisioning Daily Sends"
    },
    "deadline_at": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Deadline At"
    },
    "orders": {
      "items": {
        "$ref": "#/components/schemas/ProvisioningOrder"
      },
      "type": "array",
      "title": "Orders"
    },
    "payment_recorded": {
      "type": "boolean",
      "title": "Payment Recorded"
    },
    "review_required": {
      "type": "string",
      "title": "Review Required"
    },
    "compensation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ProvisioningCompensation"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "requested_daily_sends",
    "supplier_funding_source",
    "applied_daily_sends",
    "applied_at",
    "retained_reviewed_daily_sends",
    "supplier_funded_daily_sends",
    "failed_daily_sends",
    "unknown_daily_sends",
    "provisioning_daily_sends",
    "deadline_at",
    "orders",
    "payment_recorded",
    "review_required",
    "compensation"
  ],
  "title": "ProvisioningStatus"
}
```

`PurchasedReviewRow`

`object`

| Field | Type and constraints |
| --- | --- |
| `ordinal`Required  | `integer` |
| `key`Required  | `string` \| `null` |
| `record_id`Required  | `string` \| `null` |
| `version_id`Required  | `string` \| `null` |
| `grant_id`Required  | `string` \| `null` |
| `outcome`Required  | `"owned" \| "provided" \| "preview" \| "excluded" \| "newly_granted" \| "already_owned"` |
| `fields`Required  | `object` \| `null` Original delivered projection, not a request for new fields. Historical keys are preserved without conversion. |
| `reason`Required  | `string` \| `null` |
| `amount_minor`Optional  | `integer` Default: `0` · Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "ordinal": {
      "type": "integer",
      "title": "Ordinal"
    },
    "key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Key"
    },
    "record_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Record Id"
    },
    "version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Version Id"
    },
    "grant_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grant Id"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "owned",
        "provided",
        "preview",
        "excluded",
        "newly_granted",
        "already_owned"
      ],
      "title": "Outcome"
    },
    "fields": {
      "anyOf": [
        {
          "additionalProperties": {
            "$ref": "#/components/schemas/JsonValue"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Fields",
      "description": "Original delivered projection, not a request for new fields. Historical keys are preserved without conversion."
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "amount_minor": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Amount Minor",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "ordinal",
    "key",
    "record_id",
    "version_id",
    "grant_id",
    "outcome",
    "fields",
    "reason"
  ],
  "title": "PurchasedReviewRow"
}
```

`Quality`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign`Required  | `string` |
| `policy`Required  | `string` |
| `configured`Required  | `boolean` |
| `counts`Required  | [`sequencer__application__name_cleaning_api__Counts`](https://startwave.io/docs/api/#schema-sequencer__application__name_cleaning_api__Counts) |
| `processing`Required  | [`Processing`](https://startwave.io/docs/api/#schema-Processing) |
| `rows`Required  | array of [`Recipient`](https://startwave.io/docs/api/#schema-Recipient) |
| `next_cursor`Required  | `string` \| `null` |
| `observed_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "configured": {
      "type": "boolean",
      "title": "Configured"
    },
    "counts": {
      "$ref": "#/components/schemas/sequencer__application__name_cleaning_api__Counts"
    },
    "processing": {
      "$ref": "#/components/schemas/Processing"
    },
    "rows": {
      "items": {
        "$ref": "#/components/schemas/Recipient"
      },
      "type": "array",
      "title": "Rows"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    }
  },
  "type": "object",
  "required": [
    "campaign",
    "policy",
    "configured",
    "counts",
    "processing",
    "rows",
    "next_cursor",
    "observed_at"
  ],
  "title": "Quality"
}
```

`QueueBacklog`

`object`

| Field | Type and constraints |
| --- | --- |
| `first_touches`Required  | `integer` |
| `followups`Required  | `integer` |
| `eligible_first_touches`Required  | `integer` |
| `eligible_followups`Required  | `integer` |
| `oldest_eligible_at`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "first_touches": {
      "type": "integer",
      "title": "First Touches"
    },
    "followups": {
      "type": "integer",
      "title": "Followups"
    },
    "eligible_first_touches": {
      "type": "integer",
      "title": "Eligible First Touches"
    },
    "eligible_followups": {
      "type": "integer",
      "title": "Eligible Followups"
    },
    "oldest_eligible_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Oldest Eligible At"
    }
  },
  "type": "object",
  "required": [
    "first_touches",
    "followups",
    "eligible_first_touches",
    "eligible_followups",
    "oldest_eligible_at"
  ],
  "title": "QueueBacklog"
}
```

`Range`

`object`

| Field | Type and constraints |
| --- | --- |
| `type`Required  | `"range"` |
| `gte`Optional  | `string` \| `integer` \| `number` \| `null` |
| `gt`Optional  | `string` \| `integer` \| `number` \| `null` |
| `lte`Optional  | `string` \| `integer` \| `number` \| `null` |
| `lt`Optional  | `string` \| `integer` \| `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "type": {
      "type": "string",
      "const": "range",
      "title": "Type"
    },
    "gte": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Gte"
    },
    "gt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Gt"
    },
    "lte": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lte"
    },
    "lt": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Lt"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "type"
  ],
  "title": "Range"
}
```

`ReactivationSummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"quoted" \| "pending" \| "active" \| "cancelled"` |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "quoted",
        "pending",
        "active",
        "cancelled"
      ],
      "title": "State"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "blocker"
  ],
  "title": "ReactivationSummary"
}
```

`ReadIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `through_seq`Required  | `integer` Minimum: `0.0`  |
| `unread`Optional  | `boolean` Default: `false`  |

Complete schema

JSON schema

```
{
  "properties": {
    "through_seq": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Through Seq"
    },
    "unread": {
      "type": "boolean",
      "title": "Unread",
      "default": false
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "through_seq"
  ],
  "title": "ReadIn"
}
```

`ReadinessPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ReadinessRecipient`](https://startwave.io/docs/api/#schema-ReadinessRecipient) |
| `next_cursor`Required  | `string` \| `null` |
| `observed_at`Required  | `number` |
| `revision`Required  | array of `integer` |
| `snapshot`Required  | `false` |
| `coverage`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ReadinessRecipient"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "revision": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "title": "Revision"
    },
    "snapshot": {
      "type": "boolean",
      "const": false,
      "title": "Snapshot"
    },
    "coverage": {
      "type": "string",
      "title": "Coverage"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "observed_at",
    "revision",
    "snapshot",
    "coverage"
  ],
  "title": "ReadinessPage"
}
```

`ReadinessRecipient`

`object`

| Field | Type and constraints |
| --- | --- |
| `recipient`Required  | `string` |
| `enrollment_state`Required  | `string` |
| `steps`Required  | array of [`ReadinessStep`](https://startwave.io/docs/api/#schema-ReadinessStep) |
| `verification`Required  | [`VerificationView`](https://startwave.io/docs/api/#schema-VerificationView) |

Complete schema

JSON schema

```
{
  "properties": {
    "recipient": {
      "type": "string",
      "title": "Recipient"
    },
    "enrollment_state": {
      "type": "string",
      "title": "Enrollment State"
    },
    "steps": {
      "items": {
        "$ref": "#/components/schemas/ReadinessStep"
      },
      "type": "array",
      "title": "Steps"
    },
    "verification": {
      "$ref": "#/components/schemas/VerificationView"
    }
  },
  "type": "object",
  "required": [
    "recipient",
    "enrollment_state",
    "steps",
    "verification"
  ],
  "title": "ReadinessRecipient"
}
```

`ReadinessStep`

`object`

| Field | Type and constraints |
| --- | --- |
| `step`Required  | `integer` |
| `sequence_position`Required  | `integer` |
| `state`Required  | `string` |
| `logical_state`Required  | `"ready" \| "contingent" \| "blocked" \| "skipped" \| "historical"` |
| `reason`Required  | `string` |
| `job`Required  | `string` \| `null` |
| `due_at`Required  | `number` \| `null` |
| `next_check_at`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "step": {
      "type": "integer",
      "title": "Step"
    },
    "sequence_position": {
      "type": "integer",
      "title": "Sequence Position"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "logical_state": {
      "type": "string",
      "enum": [
        "ready",
        "contingent",
        "blocked",
        "skipped",
        "historical"
      ],
      "title": "Logical State"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "job": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Job"
    },
    "due_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Due At"
    },
    "next_check_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Check At"
    }
  },
  "type": "object",
  "required": [
    "step",
    "sequence_position",
    "state",
    "logical_state",
    "reason",
    "job",
    "due_at",
    "next_check_at"
  ],
  "title": "ReadinessStep"
}
```

`Receipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `workspace`Required  | `string` |
| `campaign`Required  | `string` |
| `action`Required  | `"create" \| "edit" \| "append" \| "exclude" \| "discard"` |
| `request_digest`Required  | `string` |
| `actor`Required  | `string` |
| `expected_revision`Required  | `integer` \| `null` |
| `before_revision`Required  | `integer` \| `null` |
| `after_revision`Required  | `integer` \| `null` |
| `outcome`Required  | `"recorded" \| "no_effect"` |
| `state_after`Required  | `"draft" \| "discarded" \| "active" \| "paused" \| "complete"` |
| `counts`Required  | [`sequencer__application__draft_operations__Counts`](https://startwave.io/docs/api/#schema-sequencer__application__draft_operations__Counts) |
| `recorded_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "action": {
      "type": "string",
      "enum": [
        "create",
        "edit",
        "append",
        "exclude",
        "discard"
      ],
      "title": "Action"
    },
    "request_digest": {
      "type": "string",
      "title": "Request Digest"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "expected_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Revision"
    },
    "before_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Before Revision"
    },
    "after_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "After Revision"
    },
    "outcome": {
      "type": "string",
      "enum": [
        "recorded",
        "no_effect"
      ],
      "title": "Outcome"
    },
    "state_after": {
      "type": "string",
      "enum": [
        "draft",
        "discarded",
        "active",
        "paused",
        "complete"
      ],
      "title": "State After"
    },
    "counts": {
      "$ref": "#/components/schemas/sequencer__application__draft_operations__Counts"
    },
    "recorded_at": {
      "type": "number",
      "title": "Recorded At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "workspace",
    "campaign",
    "action",
    "request_digest",
    "actor",
    "expected_revision",
    "before_revision",
    "after_revision",
    "outcome",
    "state_after",
    "counts",
    "recorded_at"
  ],
  "title": "Receipt"
}
```

`Recipient`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `email`Required  | `string` |
| `state`Required  | `"unchecked" \| "ready" \| "pending" \| "held" \| "unavailable"` |
| `reason`Required  | `string` |
| `field`Required  | `string` \| `null` |
| `first_name`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "state": {
      "type": "string",
      "enum": [
        "unchecked",
        "ready",
        "pending",
        "held",
        "unavailable"
      ],
      "title": "State"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "field": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Field"
    },
    "first_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "First Name"
    }
  },
  "type": "object",
  "required": [
    "id",
    "email",
    "state",
    "reason",
    "field",
    "first_name"
  ],
  "title": "Recipient"
}
```

`RecipientEligibility`

`object`

| Field | Type and constraints |
| --- | --- |
| `status`Required  | `"qualified" \| "preparing" \| "waiting" \| "ineligible" \| "contacted" \| "stopped" \| "needs_review"` |
| `reasons`Required  | array of `string` |
| `qualified`Required  | `boolean` |
| `contacted_in_campaign`Required  | `boolean` |
| `observed_at`Required  | `number` |
| `last_contacted_at`Required  | `number` \| `null` |
| `eligible_after`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "qualified",
        "preparing",
        "waiting",
        "ineligible",
        "contacted",
        "stopped",
        "needs_review"
      ],
      "title": "Status"
    },
    "reasons": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Reasons"
    },
    "qualified": {
      "type": "boolean",
      "title": "Qualified"
    },
    "contacted_in_campaign": {
      "type": "boolean",
      "title": "Contacted In Campaign"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "last_contacted_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Contacted At"
    },
    "eligible_after": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Eligible After"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "status",
    "reasons",
    "qualified",
    "contacted_in_campaign",
    "observed_at",
    "last_contacted_at",
    "eligible_after"
  ],
  "title": "RecipientEligibility"
}
```

`RecipientFields`

`object`

| Field | Type and constraints |
| --- | --- |
| `enrollment`Required  | `string` Min length: `1` · Max length: `128`  |
| `fields`Required  | `object` |

Complete schema

JSON schema

```
{
  "properties": {
    "enrollment": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Enrollment"
    },
    "fields": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "maxProperties": 256,
      "title": "Fields"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "enrollment",
    "fields"
  ],
  "title": "RecipientFields"
}
```

`RecipientProgress`

`object`

| Field | Type and constraints |
| --- | --- |
| `sent`Required  | `integer` Automatic emails actually accepted, including steps since removed. Minimum: `0.0`  |
| `remaining`Required  | `integer` Unsent, unskipped steps in the current definition; not guaranteed sends. Minimum: `0.0` · Maximum: `10.0`  |
| `next_step`Required  | `integer` \| `null` Stable logical step ID, not an ordinal. |
| `next_position`Required  | `integer` \| `null` One-based position in the current definition. |
| `total`Required  | `integer` Current definition length, not the historical sequence length. Minimum: `1.0` · Maximum: `10.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "sent": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Sent",
      "description": "Automatic emails actually accepted, including steps since removed."
    },
    "remaining": {
      "type": "integer",
      "maximum": 10.0,
      "minimum": 0.0,
      "title": "Remaining",
      "description": "Unsent, unskipped steps in the current definition; not guaranteed sends."
    },
    "next_step": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Step",
      "description": "Stable logical step ID, not an ordinal."
    },
    "next_position": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 10.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Position",
      "description": "One-based position in the current definition."
    },
    "total": {
      "type": "integer",
      "maximum": 10.0,
      "minimum": 1.0,
      "title": "Total",
      "description": "Current definition length, not the historical sequence length."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "sent",
    "remaining",
    "next_step",
    "next_position",
    "total"
  ],
  "title": "RecipientProgress"
}
```

`RecipientVerification`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `email`Required  | `string` |
| `checked_at`Required  | `number` \| `null` |
| `expires_at`Required  | `number` \| `null` |
| `status`Required  | `"excluded" \| "stopped" \| "already_contacted" \| "not_enabled" \| "review_required" \| "pending" \| "expired" \| "required" \| "valid" \| "catch_all" \| "unknown" \| "invalid" \| "risky"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "checked_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Checked At"
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires At"
    },
    "status": {
      "type": "string",
      "enum": [
        "excluded",
        "stopped",
        "already_contacted",
        "not_enabled",
        "review_required",
        "pending",
        "expired",
        "required",
        "valid",
        "catch_all",
        "unknown",
        "invalid",
        "risky"
      ],
      "title": "Status"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "email",
    "checked_at",
    "expires_at",
    "status"
  ],
  "title": "RecipientVerification"
}
```

`Reconciliation`

`object`

| Field | Type and constraints |
| --- | --- |
| `copy_phase`Required  | `"preparations" \| "complete"` |
| `schedule_phase`Required  | `"jobs" \| "preparations" \| "complete"` |
| `examined`Required  | `integer` Rows examined, not a recipient count or total. Minimum: `0.0`  |
| `superseded`Required  | `boolean` A newer accepted edit owns remaining propagation. This original remains recoverable. |

Complete schema

JSON schema

```
{
  "properties": {
    "copy_phase": {
      "type": "string",
      "enum": [
        "preparations",
        "complete"
      ],
      "title": "Copy Phase"
    },
    "schedule_phase": {
      "type": "string",
      "enum": [
        "jobs",
        "preparations",
        "complete"
      ],
      "title": "Schedule Phase"
    },
    "examined": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Examined",
      "description": "Rows examined, not a recipient count or total."
    },
    "superseded": {
      "type": "boolean",
      "title": "Superseded",
      "description": "A newer accepted edit owns remaining propagation. This original remains recoverable."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "copy_phase",
    "schedule_phase",
    "examined",
    "superseded"
  ],
  "title": "Reconciliation"
}
```

`RecordLookup`

`object`

| Field | Type and constraints |
| --- | --- |
| `ids`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `id_type`Optional  | `"source" \| "record"` Default: `"record"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "ids": {
      "items": {
        "type": "string",
        "maxLength": 256,
        "minLength": 1,
        "pattern": "^[^\\x00-\\x1f\\x7f]+$"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Ids"
    },
    "id_type": {
      "type": "string",
      "enum": [
        "source",
        "record"
      ],
      "title": "Id Type",
      "default": "record"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "ids"
  ],
  "title": "RecordLookup"
}
```

`RecordRefresh`

`object`

| Field | Type and constraints |
| --- | --- |
| `policy_id`Required  | `string` Min length: `1` · Max length: `100`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `10000000.0`  |
| `action`Required  | `"refresh"` |
| `resource`Required  | `"contacts" \| "accounts"` |
| `record_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "policy_id": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "title": "Policy Id"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor"
    },
    "action": {
      "type": "string",
      "const": "refresh",
      "title": "Action"
    },
    "resource": {
      "type": "string",
      "enum": [
        "contacts",
        "accounts"
      ],
      "title": "Resource"
    },
    "record_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Record Id"
    },
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "policy_id",
    "max_amount_minor",
    "action",
    "resource",
    "record_id",
    "expected_revision"
  ],
  "title": "RecordRefresh"
}
```

`RecordSelectionFilter`

`object`

| Field | Type and constraints |
| --- | --- |
| `q`Optional  | `string` Same literal substring as saved-record browsing; no catalogue refresh. Default: `""` · Max length: `200`  |
| `data_access`Optional  | `"licensed"` \| `null` |
| `view`Optional  | `"saved" \| "contacts"` Default: `"saved"`  |
| `source_freshness`Optional  | `"current" \| "update_available" \| "unavailable"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "title": "Q",
      "description": "Same literal substring as saved-record browsing; no catalogue refresh.",
      "default": ""
    },
    "data_access": {
      "anyOf": [
        {
          "type": "string",
          "const": "licensed"
        },
        {
          "type": "null"
        }
      ],
      "title": "Data Access"
    },
    "view": {
      "type": "string",
      "enum": [
        "saved",
        "contacts"
      ],
      "title": "View",
      "default": "saved"
    },
    "source_freshness": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "current",
            "update_available",
            "unavailable"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Freshness"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "RecordSelectionFilter"
}
```

`RecordedCapacityRenewal`

`object`

Frozen expansion policies may predate target and recurring-renewal fields.

| Field | Type and constraints |
| --- | --- |
| `enabled`Required  | `boolean` |
| `recurring_max_cents`Optional  | `integer` \| `null` |
| `revision`Required  | `integer` |
| `keep_idle`Required  | `boolean` |
| `budget_cents`Required  | `integer` |
| `authorized_cents`Required  | `integer` \| `null` |
| `blocker`Required  | `string` |
| `target_daily_sends`Optional  | `integer` \| `null` |
| `target_max_cents`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "recurring_max_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Recurring Max Cents"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "keep_idle": {
      "type": "boolean",
      "title": "Keep Idle"
    },
    "budget_cents": {
      "type": "integer",
      "title": "Budget Cents"
    },
    "authorized_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Authorized Cents"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "target_daily_sends": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Daily Sends"
    },
    "target_max_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Max Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "enabled",
    "revision",
    "keep_idle",
    "budget_cents",
    "authorized_cents",
    "blocker"
  ],
  "title": "RecordedCapacityRenewal",
  "description": "Frozen expansion policies may predate target and recurring-renewal fields."
}
```

`RecordedJobCreate`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"import_records" \| "list_membership" \| "save_sources" \| "unlock" \| "refresh" \| "export" \| "export_review" \| "review_delivery" \| "source_check" \| "suppressions" \| "contact_history" \| "export_suppressions" \| "export_campaign" \| "campaign_admission"` |
| `import_id`Optional  | `string` \| `null` |
| `expected_digest`Optional  | `string` \| `null` |
| `scope`Optional  | [`JobIdsScope`](https://startwave.io/docs/api/#schema-JobIdsScope) \| [`JobListScope`](https://startwave.io/docs/api/#schema-JobListScope) \| [`JobQueryScope-Output`](https://startwave.io/docs/api/#schema-JobQueryScope-Output) \| [`JobRecordsScope`](https://startwave.io/docs/api/#schema-JobRecordsScope) \| `null` |
| `max_records`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |
| `prepare`Optional  | `boolean` Prepare a native scoped action without spending or producing an artifact. Explicit confirmation is required before execution. Default: `false`  |
| `list_id`Optional  | `string` \| `null` |
| `expected_membership_revision`Optional  | `integer` \| `null` |
| `action`Optional  | `"add" \| "remove"` Default: `"add"`  |
| `purchase`Optional  | [`OrderTerms`](https://startwave.io/docs/api/#schema-OrderTerms) \| `null` |
| `export`Optional  | [`JobExport`](https://startwave.io/docs/api/#schema-JobExport) \| `null` |
| `review`Optional  | [`RecordedReviewSpec`](https://startwave.io/docs/api/#schema-RecordedReviewSpec) \| `null` |
| `delivery`Optional  | [`RecordedReviewConfirm`](https://startwave.io/docs/api/#schema-RecordedReviewConfirm) \| `null` |
| `campaign`Optional  | [`CampaignAdmissionTarget`](https://startwave.io/docs/api/#schema-CampaignAdmissionTarget) \| `null` |
| `exclusions`Optional  | [`SuppressionExport`](https://startwave.io/docs/api/#schema-SuppressionExport) \| `null` |
| `recipients`Optional  | [`CampaignExport`](https://startwave.io/docs/api/#schema-CampaignExport) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "import_records",
        "list_membership",
        "save_sources",
        "unlock",
        "refresh",
        "export",
        "export_review",
        "review_delivery",
        "source_check",
        "suppressions",
        "contact_history",
        "export_suppressions",
        "export_campaign",
        "campaign_admission"
      ],
      "title": "Kind"
    },
    "import_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Import Id"
    },
    "expected_digest": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Digest"
    },
    "scope": {
      "anyOf": [
        {
          "oneOf": [
            {
              "$ref": "#/components/schemas/JobIdsScope"
            },
            {
              "$ref": "#/components/schemas/JobListScope"
            },
            {
              "$ref": "#/components/schemas/JobQueryScope-Output"
            },
            {
              "$ref": "#/components/schemas/JobRecordsScope"
            }
          ],
          "discriminator": {
            "propertyName": "kind",
            "mapping": {
              "ids": "#/components/schemas/JobIdsScope",
              "list": "#/components/schemas/JobListScope",
              "query": "#/components/schemas/JobQueryScope-Output",
              "records": "#/components/schemas/JobRecordsScope"
            }
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Scope"
    },
    "max_records": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Max Records"
    },
    "prepare": {
      "type": "boolean",
      "title": "Prepare",
      "description": "Prepare a native scoped action without spending or producing an artifact. Explicit confirmation is required before execution.",
      "default": false
    },
    "list_id": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[a-f0-9]{32}$"
        },
        {
          "type": "null"
        }
      ],
      "title": "List Id"
    },
    "expected_membership_revision": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Membership Revision"
    },
    "action": {
      "type": "string",
      "enum": [
        "add",
        "remove"
      ],
      "title": "Action",
      "default": "add"
    },
    "purchase": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/OrderTerms"
        },
        {
          "type": "null"
        }
      ]
    },
    "export": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/JobExport"
        },
        {
          "type": "null"
        }
      ]
    },
    "review": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/RecordedReviewSpec"
        },
        {
          "type": "null"
        }
      ]
    },
    "delivery": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/RecordedReviewConfirm"
        },
        {
          "type": "null"
        }
      ]
    },
    "campaign": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CampaignAdmissionTarget"
        },
        {
          "type": "null"
        }
      ]
    },
    "exclusions": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SuppressionExport"
        },
        {
          "type": "null"
        }
      ]
    },
    "recipients": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CampaignExport"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "max_records"
  ],
  "title": "RecordedJobCreate"
}
```

`RecordedReviewConfirm`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `delivery`Optional  | `"json" \| "csv" \| "json_job" \| "csv_job"` Default: `"json"`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `10000000.0`  |
| `review_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "expected_digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Expected Digest"
    },
    "delivery": {
      "type": "string",
      "enum": [
        "json",
        "csv",
        "json_job",
        "csv_job"
      ],
      "title": "Delivery",
      "default": "json"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor",
      "default": 0
    },
    "review_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Review Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision",
    "expected_digest",
    "review_id"
  ],
  "title": "RecordedReviewConfirm"
}
```

`RecordedReviewCreate`

`object`

| Field | Type and constraints |
| --- | --- |
| `version_mode`Optional  | `"owned" \| "owned_or_new" \| "latest" \| "updates_only"` Default: `"owned"`  |
| `projection`Optional  | `"effective" \| "licensed"` Default: `"effective"`  |
| `fields`Required  | array of `string` Original requested columns, preserved without conversion. |
| `file_format`Optional  | `"csv" \| "json" \| "jsonl" \| "xlsx"` Default: `"csv"`  |
| `policy_id`Optional  | `string` \| `null` |
| `max_bytes`Required  | `integer` Minimum: `1.0` · Maximum: `8589934592.0`  |
| `selection_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `max_records`Required  | `integer` Minimum: `1.0` · Maximum: `5000000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "version_mode": {
      "type": "string",
      "enum": [
        "owned",
        "owned_or_new",
        "latest",
        "updates_only"
      ],
      "title": "Version Mode",
      "default": "owned"
    },
    "projection": {
      "type": "string",
      "enum": [
        "effective",
        "licensed"
      ],
      "title": "Projection",
      "default": "effective"
    },
    "fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Fields",
      "description": "Original requested columns, preserved without conversion."
    },
    "file_format": {
      "type": "string",
      "enum": [
        "csv",
        "json",
        "jsonl",
        "xlsx"
      ],
      "title": "File Format",
      "default": "csv"
    },
    "policy_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Policy Id"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 8589934592.0,
      "minimum": 1.0,
      "title": "Max Bytes"
    },
    "selection_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Selection Id"
    },
    "expected_digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Expected Digest"
    },
    "max_records": {
      "type": "integer",
      "maximum": 5000000.0,
      "minimum": 1.0,
      "title": "Max Records"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "fields",
    "max_bytes",
    "selection_id",
    "expected_digest",
    "max_records"
  ],
  "title": "RecordedReviewCreate"
}
```

`RecordedReviewSpec`

`object`

| Field | Type and constraints |
| --- | --- |
| `version_mode`Optional  | `"owned" \| "owned_or_new" \| "latest" \| "updates_only"` Default: `"owned"`  |
| `projection`Optional  | `"effective" \| "licensed"` Default: `"effective"`  |
| `fields`Required  | array of `string` Original requested columns, not authority to request retired fields again. |
| `file_format`Optional  | `"csv" \| "json" \| "jsonl" \| "xlsx"` Default: `"csv"`  |
| `policy_id`Optional  | `string` \| `null` |
| `max_bytes`Required  | `integer` Minimum: `1.0` · Maximum: `8589934592.0`  |
| `selection_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "version_mode": {
      "type": "string",
      "enum": [
        "owned",
        "owned_or_new",
        "latest",
        "updates_only"
      ],
      "title": "Version Mode",
      "default": "owned"
    },
    "projection": {
      "type": "string",
      "enum": [
        "effective",
        "licensed"
      ],
      "title": "Projection",
      "default": "effective"
    },
    "fields": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Fields",
      "description": "Original requested columns, not authority to request retired fields again."
    },
    "file_format": {
      "type": "string",
      "enum": [
        "csv",
        "json",
        "jsonl",
        "xlsx"
      ],
      "title": "File Format",
      "default": "csv"
    },
    "policy_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Policy Id"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 8589934592.0,
      "minimum": 1.0,
      "title": "Max Bytes"
    },
    "selection_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Selection Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "fields",
    "max_bytes",
    "selection_id"
  ],
  "title": "RecordedReviewSpec"
}
```

`RecordedSend`

`object`

| Field | Type and constraints |
| --- | --- |
| `recipient`Required  | `string` |
| `step`Required  | `integer` |
| `sequence_position`Required  | `integer` \| `null` |
| `sequence_total`Required  | `integer` \| `null` |
| `state`Required  | `string` |
| `recorded_at`Required  | `number` |
| `content`Required  | [`MessageCopy`](https://startwave.io/docs/api/#schema-MessageCopy) \| `null` |
| `copy_source`Required  | `string` |
| `verification_verdict`Required  | `string` \| `null` |
| `verification_policy`Required  | `string` \| `null` |
| `delivery_state`Optional  | `"failed" \| "delayed" \| "unconfirmed" \| "not_applicable"` Default: `"not_applicable"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "recipient": {
      "type": "string",
      "title": "Recipient"
    },
    "step": {
      "type": "integer",
      "title": "Step"
    },
    "sequence_position": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Position"
    },
    "sequence_total": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Total"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "recorded_at": {
      "type": "number",
      "title": "Recorded At"
    },
    "content": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MessageCopy"
        },
        {
          "type": "null"
        }
      ]
    },
    "copy_source": {
      "type": "string",
      "title": "Copy Source"
    },
    "verification_verdict": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Verification Verdict"
    },
    "verification_policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Verification Policy"
    },
    "delivery_state": {
      "type": "string",
      "enum": [
        "failed",
        "delayed",
        "unconfirmed",
        "not_applicable"
      ],
      "title": "Delivery State",
      "default": "not_applicable"
    }
  },
  "type": "object",
  "required": [
    "recipient",
    "step",
    "sequence_position",
    "sequence_total",
    "state",
    "recorded_at",
    "content",
    "copy_source",
    "verification_verdict",
    "verification_policy"
  ],
  "title": "RecordedSend"
}
```

`Recovery`

`object`

| Field | Type and constraints |
| --- | --- |
| `maximum_cents`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "maximum_cents": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Maximum Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "maximum_cents"
  ],
  "title": "Recovery"
}
```

`RefillConsent`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign_id`Required  | `string` |
| `actor`Required  | `string` |
| `parameters`Required  | [`RefillConsentIn`](https://startwave.io/docs/api/#schema-RefillConsentIn) |
| `state`Required  | `"active" \| "held" \| "completed" \| "cancelled" \| "expired"` |
| `reason`Required  | `string` \| `null` |
| `revision`Required  | `integer` |
| `examined`Required  | `integer` |
| `added`Required  | `integer` |
| `held`Required  | `integer` |
| `already_admitted`Required  | `integer` |
| `send_budget_added_cents`Required  | `integer` |
| `last_admission_id`Required  | `string` \| `null` |
| `created_at`Required  | `number` |
| `updated_at`Required  | `number` |
| `sources`Required  | array of [`SourceProgress`](https://startwave.io/docs/api/#schema-SourceProgress) |
| `preparation`Optional  | [`IncludedPreparationCounts`](https://startwave.io/docs/api/#schema-IncludedPreparationCounts) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "parameters": {
      "$ref": "#/components/schemas/RefillConsentIn"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "held",
        "completed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "examined": {
      "type": "integer",
      "title": "Examined"
    },
    "added": {
      "type": "integer",
      "title": "Added"
    },
    "held": {
      "type": "integer",
      "title": "Held"
    },
    "already_admitted": {
      "type": "integer",
      "title": "Already Admitted"
    },
    "send_budget_added_cents": {
      "type": "integer",
      "title": "Send Budget Added Cents"
    },
    "last_admission_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Admission Id"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "updated_at": {
      "type": "number",
      "title": "Updated At"
    },
    "sources": {
      "items": {
        "$ref": "#/components/schemas/SourceProgress"
      },
      "type": "array",
      "title": "Sources"
    },
    "preparation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/IncludedPreparationCounts"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "id",
    "campaign_id",
    "actor",
    "parameters",
    "state",
    "reason",
    "revision",
    "examined",
    "added",
    "held",
    "already_admitted",
    "send_budget_added_cents",
    "last_admission_id",
    "created_at",
    "updated_at",
    "sources"
  ],
  "title": "RefillConsent"
}
```

`RefillConsentIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `source_ids`Required  | array of `string` Min items: `1` · Max items: `50`  |
| `max_people`Required  | `integer` Minimum: `1.0` · Maximum: `1000000.0`  |
| `max_memberships`Required  | `integer` Minimum: `1.0` · Maximum: `50000000.0`  |
| `expires_at`Required  | `number` |
| `max_send_budget_added_cents`Required  | `integer` Minimum: `0.0` · Maximum: `1000000000.0`  |
| `included_preparation`Optional  | [`IncludedPreparationTerms`](https://startwave.io/docs/api/#schema-IncludedPreparationTerms) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_campaign_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Campaign Revision"
    },
    "expected_sources_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Sources Revision"
    },
    "source_ids": {
      "items": {
        "type": "string",
        "pattern": "^[a-f0-9]{32}$"
      },
      "type": "array",
      "maxItems": 50,
      "minItems": 1,
      "title": "Source Ids"
    },
    "max_people": {
      "type": "integer",
      "maximum": 1000000.0,
      "minimum": 1.0,
      "title": "Max People"
    },
    "max_memberships": {
      "type": "integer",
      "maximum": 50000000.0,
      "minimum": 1.0,
      "title": "Max Memberships"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "max_send_budget_added_cents": {
      "type": "integer",
      "maximum": 1000000000.0,
      "minimum": 0.0,
      "title": "Max Send Budget Added Cents"
    },
    "included_preparation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/IncludedPreparationTerms"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_campaign_revision",
    "expected_sources_revision",
    "source_ids",
    "max_people",
    "max_memberships",
    "expires_at",
    "max_send_budget_added_cents"
  ],
  "title": "RefillConsentIn"
}
```

`RefillError`

`object`

| Field | Type and constraints |
| --- | --- |
| `index`Required  | `integer` |
| `reason`Required  | `"invalid_email" \| "recipient_fields_conflict" \| "recipient_active_in_other_campaign" \| "recontact_cooldown" \| "contact_outcome_unknown" \| "recontact_date_unknown"` |
| `email`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "index": {
      "type": "integer",
      "title": "Index"
    },
    "reason": {
      "type": "string",
      "enum": [
        "invalid_email",
        "recipient_fields_conflict",
        "recipient_active_in_other_campaign",
        "recontact_cooldown",
        "contact_outcome_unknown",
        "recontact_date_unknown"
      ],
      "title": "Reason"
    },
    "email": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Email"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "index",
    "reason"
  ],
  "title": "RefillError"
}
```

`RefillHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`RefillHistoryItem`](https://startwave.io/docs/api/#schema-RefillHistoryItem) |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/RefillHistoryItem"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "RefillHistory"
}
```

`RefillHistoryItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `added`Required  | `integer` |
| `duplicates`Required  | `integer` |
| `suppressed`Required  | `integer` |
| `conflicting`Required  | `integer` |
| `audience_revision`Required  | `integer` |
| `send_budget_added_cents`Required  | `integer` |
| `send_budget_cents`Required  | `integer` \| `null` |
| `actor`Required  | `string` |
| `created_at`Required  | `number` |
| `invalid`Optional  | `integer` \| `null` |
| `submitted`Optional  | `integer` \| `null` |
| `error_count`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "added": {
      "type": "integer",
      "title": "Added"
    },
    "duplicates": {
      "type": "integer",
      "title": "Duplicates"
    },
    "suppressed": {
      "type": "integer",
      "title": "Suppressed"
    },
    "conflicting": {
      "type": "integer",
      "title": "Conflicting"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "send_budget_added_cents": {
      "type": "integer",
      "title": "Send Budget Added Cents"
    },
    "send_budget_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Send Budget Cents"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "invalid": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invalid"
    },
    "submitted": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Submitted"
    },
    "error_count": {
      "type": "integer",
      "title": "Error Count"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "added",
    "duplicates",
    "suppressed",
    "conflicting",
    "audience_revision",
    "send_budget_added_cents",
    "send_budget_cents",
    "actor",
    "created_at",
    "error_count"
  ],
  "title": "RefillHistoryItem"
}
```

`RefillPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`RefillConsent`](https://startwave.io/docs/api/#schema-RefillConsent) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/RefillConsent"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "RefillPage"
}
```

`RefillResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `added`Required  | `integer` |
| `duplicates`Required  | `integer` |
| `suppressed`Required  | `integer` |
| `conflicting`Required  | `integer` |
| `audience_revision`Required  | `integer` |
| `send_budget_added_cents`Required  | `integer` |
| `send_budget_cents`Required  | `integer` \| `null` |
| `actor`Required  | `string` |
| `created_at`Required  | `number` |
| `invalid`Optional  | `integer` \| `null` |
| `submitted`Optional  | `integer` \| `null` |
| `errors`Required  | array of [`RefillError`](https://startwave.io/docs/api/#schema-RefillError) |
| `next_error_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "added": {
      "type": "integer",
      "title": "Added"
    },
    "duplicates": {
      "type": "integer",
      "title": "Duplicates"
    },
    "suppressed": {
      "type": "integer",
      "title": "Suppressed"
    },
    "conflicting": {
      "type": "integer",
      "title": "Conflicting"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "send_budget_added_cents": {
      "type": "integer",
      "title": "Send Budget Added Cents"
    },
    "send_budget_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Send Budget Cents"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "invalid": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invalid"
    },
    "submitted": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Submitted"
    },
    "errors": {
      "items": {
        "$ref": "#/components/schemas/RefillError"
      },
      "type": "array",
      "title": "Errors"
    },
    "next_error_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Error Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "added",
    "duplicates",
    "suppressed",
    "conflicting",
    "audience_revision",
    "send_budget_added_cents",
    "send_budget_cents",
    "actor",
    "created_at",
    "errors",
    "next_error_cursor"
  ],
  "title": "RefillResult"
}
```

`RefillScope`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `source_ids`Required  | array of `string` Min items: `1` · Max items: `50`  |
| `max_people`Required  | `integer` Minimum: `1.0` · Maximum: `1000000.0`  |
| `max_memberships`Required  | `integer` Minimum: `1.0` · Maximum: `50000000.0`  |
| `expires_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_campaign_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Campaign Revision"
    },
    "expected_sources_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Sources Revision"
    },
    "source_ids": {
      "items": {
        "type": "string",
        "pattern": "^[a-f0-9]{32}$"
      },
      "type": "array",
      "maxItems": 50,
      "minItems": 1,
      "title": "Source Ids"
    },
    "max_people": {
      "type": "integer",
      "maximum": 1000000.0,
      "minimum": 1.0,
      "title": "Max People"
    },
    "max_memberships": {
      "type": "integer",
      "maximum": 50000000.0,
      "minimum": 1.0,
      "title": "Max Memberships"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_campaign_revision",
    "expected_sources_revision",
    "source_ids",
    "max_people",
    "max_memberships",
    "expires_at"
  ],
  "title": "RefillScope"
}
```

`ReplyBudgetIn`

`object`

Owner-authorized reply-only ceiling; never spends or changes cold campaign allowance.

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_send_price_cents`Required  | `integer` Minimum: `0.0` · Maximum: `1000000.0`  |
| `reply_budget_cents`Required  | `integer` Minimum: `0.0` · Maximum: `1000000000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "expected_send_price_cents": {
      "type": "integer",
      "maximum": 1000000.0,
      "minimum": 0.0,
      "title": "Expected Send Price Cents"
    },
    "reply_budget_cents": {
      "type": "integer",
      "maximum": 1000000000.0,
      "minimum": 0.0,
      "title": "Reply Budget Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "expected_send_price_cents",
    "reply_budget_cents"
  ],
  "title": "ReplyBudgetIn",
  "description": "Owner-authorized reply-only ceiling; never spends or changes cold campaign allowance."
}
```

`ReplyBudgetOriginal`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `kind`Required  | `"reply_budget"` |
| `campaign`Required  | `string` |
| `campaign_revision`Required  | `integer` |
| `state`Required  | `"draft" \| "active" \| "paused" \| "complete"` |
| `send_price_cents`Required  | `integer` |
| `reply_budget_cents`Required  | `integer` |
| `reply_committed_cents`Required  | `integer` |
| `reply_allowance_committed_cents`Optional  | `integer` Absent in older originals. |
| `reviewed_at`Required  | `number` |
| `reviewed_by`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "kind": {
      "type": "string",
      "const": "reply_budget",
      "title": "Kind"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "state": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "paused",
        "complete"
      ],
      "title": "State"
    },
    "send_price_cents": {
      "type": "integer",
      "title": "Send Price Cents"
    },
    "reply_budget_cents": {
      "type": "integer",
      "title": "Reply Budget Cents"
    },
    "reply_committed_cents": {
      "type": "integer",
      "title": "Reply Committed Cents"
    },
    "reply_allowance_committed_cents": {
      "type": "integer",
      "title": "Reply Allowance Committed Cents",
      "description": "Absent in older originals."
    },
    "reviewed_at": {
      "type": "number",
      "title": "Reviewed At"
    },
    "reviewed_by": {
      "type": "string",
      "title": "Reviewed By"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "kind",
    "campaign",
    "campaign_revision",
    "state",
    "send_price_cents",
    "reply_budget_cents",
    "reply_committed_cents",
    "reviewed_at",
    "reviewed_by"
  ],
  "title": "ReplyBudgetOriginal"
}
```

`ReplyBudgetPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ReplyBudgetOriginal`](https://startwave.io/docs/api/#schema-ReplyBudgetOriginal) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ReplyBudgetOriginal"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "ReplyBudgetPage"
}
```

`ReplyClassificationObservation`

`object`

| Field | Type and constraints |
| --- | --- |
| `state`Required  | `"pending" \| "leased" \| "suggested" \| "applied" \| "failed" \| "unknown"` |
| `model`Required  | `string` |
| `policy_version`Required  | `string` |
| `suggestion`Required  | `string` \| `null` |
| `choice_confidence`Required  | `number` \| `null` |
| `explicit_opt_out`Required  | `number` \| `null` |
| `input_tokens`Required  | `integer` \| `null` |
| `output_tokens`Required  | `integer` \| `null` |
| `cost_usd_micros`Required  | `integer` \| `null` |
| `provider`Required  | `string` \| `null` |
| `resolved_model`Required  | `string` \| `null` |
| `error`Required  | `string` |
| `updated_at`Required  | `number` |
| `origin`Required  | `"live" \| "backfill"` |
| `reason`Required  | `string` \| `null` |
| `probabilities`Required  | `object` \| `null` Historical provider probability keys follow the recorded policy version; native evidence may be null. |

Complete schema

JSON schema

```
{
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "leased",
        "suggested",
        "applied",
        "failed",
        "unknown"
      ],
      "title": "State"
    },
    "model": {
      "type": "string",
      "title": "Model"
    },
    "policy_version": {
      "type": "string",
      "title": "Policy Version"
    },
    "suggestion": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Suggestion"
    },
    "choice_confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Choice Confidence"
    },
    "explicit_opt_out": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Explicit Opt Out"
    },
    "input_tokens": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Input Tokens"
    },
    "output_tokens": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Output Tokens"
    },
    "cost_usd_micros": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cost Usd Micros"
    },
    "provider": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provider"
    },
    "resolved_model": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Resolved Model"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "updated_at": {
      "type": "number",
      "title": "Updated At"
    },
    "origin": {
      "type": "string",
      "enum": [
        "live",
        "backfill"
      ],
      "title": "Origin"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "probabilities": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "number",
            "maximum": 1.0,
            "minimum": 0.0
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Probabilities",
      "description": "Historical provider probability keys follow the recorded policy version; native evidence may be null."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "state",
    "model",
    "policy_version",
    "suggestion",
    "choice_confidence",
    "explicit_opt_out",
    "input_tokens",
    "output_tokens",
    "cost_usd_micros",
    "provider",
    "resolved_model",
    "error",
    "updated_at",
    "origin",
    "reason",
    "probabilities"
  ],
  "title": "ReplyClassificationObservation"
}
```

`ReplyIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `source_event`Optional  | `string` \| `null` |
| `recipients`Optional  | array of `string` \| `null` |
| `expected_send_price_cents`Optional  | `integer` \| `null` |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `message_id`Required  | `string` Min length: `1` · Max length: `256`  |
| `subject`Required  | `string` Min length: `1` · Max length: `500`  |
| `body`Required  | `string` Literal plain-text body for a new human reply; not a campaign template. Reuse the exact original payload and ID to recover an existing reply. Min length: `1` · Max length: `100000`  |
| `html`Optional  | `string` Recovery-only for an already-recorded exact original. Must be empty for a new human reply; nonempty HTML is rejected with plain_text_reply_required before admission. Default: `""` · Max length: `100000`  |
| `attachments`Optional  | array of `object` Recovery-only for an already-recorded exact original. Must be empty for a new human reply; outgoing files are rejected with plain_text_reply_required. Incoming downloads are a separate read capability. Max items: `3`  |

Complete schema

JSON schema

```
{
  "properties": {
    "source_event": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 256,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Event"
    },
    "recipients": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array",
          "maxItems": 10,
          "minItems": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Recipients"
    },
    "expected_send_price_cents": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 1000000.0,
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Send Price Cents"
    },
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "message_id": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "title": "Message Id"
    },
    "subject": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1,
      "title": "Subject"
    },
    "body": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 1,
      "title": "Body",
      "description": "Literal plain-text body for a new human reply; not a campaign template. Reuse the exact original payload and ID to recover an existing reply."
    },
    "html": {
      "type": "string",
      "maxLength": 100000,
      "title": "Html",
      "description": "Recovery-only for an already-recorded exact original. Must be empty for a new human reply; nonempty HTML is rejected with plain_text_reply_required before admission.",
      "default": ""
    },
    "attachments": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "type": "array",
      "maxItems": 3,
      "title": "Attachments",
      "description": "Recovery-only for an already-recorded exact original. Must be empty for a new human reply; outgoing files are rejected with plain_text_reply_required. Incoming downloads are a separate read capability."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "message_id",
    "subject",
    "body"
  ],
  "title": "ReplyIn"
}
```

`ReplyIntentIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `intent`Required  | `"needs_review" \| "interested" \| "not_interested" \| "opt_out" \| "out_of_office" \| "automated" \| "recipient_unavailable"` |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "intent": {
      "type": "string",
      "enum": [
        "needs_review",
        "interested",
        "not_interested",
        "opt_out",
        "out_of_office",
        "automated",
        "recipient_unavailable"
      ],
      "title": "Intent"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "intent",
    "expected_revision"
  ],
  "title": "ReplyIntentIn"
}
```

`ReplyResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `job_id`Required  | `string` |
| `state`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "state": {
      "type": "string",
      "title": "State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "job_id",
    "state"
  ],
  "title": "ReplyResult"
}
```

`ReplyReviewControls`

`object`

| Field | Type and constraints |
| --- | --- |
| `can_cancel`Required  | `boolean` |
| `authorize_price_cents`Required  | `integer` \| `null` Current per-recipient authorization price, not the earlier job price or a reservation. Null forbids authorization; zero is included. POST rechecks authority and price. |
| `blocker`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "can_cancel": {
      "type": "boolean",
      "title": "Can Cancel"
    },
    "authorize_price_cents": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Authorize Price Cents",
      "description": "Current per-recipient authorization price, not the earlier job price or a reservation. Null forbids authorization; zero is included. POST rechecks authority and price."
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "can_cancel",
    "authorize_price_cents",
    "blocker"
  ],
  "title": "ReplyReviewControls"
}
```

`ReplyReviewHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `job_id`Required  | `string` |
| `state`Required  | `"queued" \| "reserved" \| "dispatching" \| "accepted" \| "not_accepted" \| "unknown" \| "cancelled"` |
| `blocker`Required  | `string` |
| `authorization_revision`Required  | `integer` |
| `reply_price_cents`Required  | `integer` \| `null` |
| `recipient_count`Required  | `integer` Minimum: `1.0`  |
| `controls`Required  | [`ReplyReviewControls`](https://startwave.io/docs/api/#schema-ReplyReviewControls) |
| `items`Required  | array of [`ReplyReviewReceipt`](https://startwave.io/docs/api/#schema-ReplyReviewReceipt) Known immutable receipt fields. Stored historical extensions remain verbatim; metadata does not filter them. Max items: `100`  |
| `next_cursor`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "queued",
        "reserved",
        "dispatching",
        "accepted",
        "not_accepted",
        "unknown",
        "cancelled"
      ],
      "title": "State"
    },
    "blocker": {
      "type": "string",
      "title": "Blocker"
    },
    "authorization_revision": {
      "type": "integer",
      "title": "Authorization Revision"
    },
    "reply_price_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reply Price Cents"
    },
    "recipient_count": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Recipient Count"
    },
    "controls": {
      "$ref": "#/components/schemas/ReplyReviewControls"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/ReplyReviewReceipt"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Items",
      "description": "Known immutable receipt fields. Stored historical extensions remain verbatim; metadata does not filter them."
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "job_id",
    "state",
    "blocker",
    "authorization_revision",
    "reply_price_cents",
    "recipient_count",
    "controls",
    "items",
    "next_cursor"
  ],
  "title": "ReplyReviewHistory"
}
```

`ReplyReviewQueue`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ReplyReviewQueueItem`](https://startwave.io/docs/api/#schema-ReplyReviewQueueItem) Max items: `200`  |
| `next_cursor`Required  | `string` \| `null` |
| `review_revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ReplyReviewQueueItem"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "review_revision": {
      "type": "integer",
      "title": "Review Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "review_revision"
  ],
  "title": "ReplyReviewQueue"
}
```

`ReplyReviewQueueItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `event_id`Required  | `string` |
| `intent`Required  | `string` |
| `revision`Required  | `integer` |
| `received_at`Required  | `number` |
| `conversation`Required  | `string` |
| `status`Required  | `"needs_reply" \| "waiting" \| "closed"` |
| `conversation_revision`Required  | `integer` |
| `last_inbound_seq`Required  | `integer` |
| `attention_seq`Required  | `integer` |
| `archived`Required  | `0 \| 1` |
| `unread`Required  | `0 \| 1` |
| `email`Required  | `string` |
| `campaign`Required  | `string` |
| `campaign_name`Required  | `string` |
| `classifier_state`Required  | `"pending" \| "leased" \| "suggested" \| "applied" \| "failed" \| "unknown"` \| `null` |
| `suggestion`Required  | `string` \| `null` |
| `choice_confidence`Required  | `number` \| `null` |
| `explicit_opt_out`Required  | `number` \| `null` |
| `classifier_error`Required  | `string` \| `null` |
| `classifier_updated_at`Required  | `number` \| `null` |
| `classifier_origin`Required  | `"live" \| "backfill"` \| `null` |
| `reason`Required  | `string` \| `null` |
| `probabilities`Required  | `object` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "intent": {
      "type": "string",
      "title": "Intent"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "received_at": {
      "type": "number",
      "title": "Received At"
    },
    "conversation": {
      "type": "string",
      "title": "Conversation"
    },
    "status": {
      "type": "string",
      "enum": [
        "needs_reply",
        "waiting",
        "closed"
      ],
      "title": "Status"
    },
    "conversation_revision": {
      "type": "integer",
      "title": "Conversation Revision"
    },
    "last_inbound_seq": {
      "type": "integer",
      "title": "Last Inbound Seq"
    },
    "attention_seq": {
      "type": "integer",
      "title": "Attention Seq"
    },
    "archived": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Archived"
    },
    "unread": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Unread"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "campaign_name": {
      "type": "string",
      "title": "Campaign Name"
    },
    "classifier_state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "pending",
            "leased",
            "suggested",
            "applied",
            "failed",
            "unknown"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Classifier State"
    },
    "suggestion": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Suggestion"
    },
    "choice_confidence": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Choice Confidence"
    },
    "explicit_opt_out": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Explicit Opt Out"
    },
    "classifier_error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Classifier Error"
    },
    "classifier_updated_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Classifier Updated At"
    },
    "classifier_origin": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "live",
            "backfill"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Classifier Origin"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "probabilities": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "number",
            "maximum": 1.0,
            "minimum": 0.0
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Probabilities"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "event_id",
    "intent",
    "revision",
    "received_at",
    "conversation",
    "status",
    "conversation_revision",
    "last_inbound_seq",
    "attention_seq",
    "archived",
    "unread",
    "email",
    "campaign",
    "campaign_name",
    "classifier_state",
    "suggestion",
    "choice_confidence",
    "explicit_opt_out",
    "classifier_error",
    "classifier_updated_at",
    "classifier_origin",
    "reason",
    "probabilities"
  ],
  "title": "ReplyReviewQueueItem"
}
```

`ReplyReviewReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `job_id`Required  | `string` |
| `action`Required  | `"authorize" \| "cancel"` |
| `state`Required  | `"queued" \| "cancelled"` |
| `authorization_revision`Required  | `integer` |
| `reply_price_cents`Required  | `integer` \| `null` |
| `reviewed_by`Required  | `string` |
| `reviewed_at`Required  | `number` |
| `semantics`Required  | `"immutable_review_receipt_not_current_delivery_status"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "job_id": {
      "type": "string",
      "title": "Job Id"
    },
    "action": {
      "type": "string",
      "enum": [
        "authorize",
        "cancel"
      ],
      "title": "Action"
    },
    "state": {
      "type": "string",
      "enum": [
        "queued",
        "cancelled"
      ],
      "title": "State"
    },
    "authorization_revision": {
      "type": "integer",
      "title": "Authorization Revision"
    },
    "reply_price_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reply Price Cents"
    },
    "reviewed_by": {
      "type": "string",
      "title": "Reviewed By"
    },
    "reviewed_at": {
      "type": "number",
      "title": "Reviewed At"
    },
    "semantics": {
      "type": "string",
      "const": "immutable_review_receipt_not_current_delivery_status",
      "title": "Semantics"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "id",
    "job_id",
    "action",
    "state",
    "authorization_revision",
    "reply_price_cents",
    "reviewed_by",
    "reviewed_at",
    "semantics"
  ],
  "title": "ReplyReviewReceipt",
  "x-opaque-reason": "Immutable stored reply-review receipts may retain historical extension fields; known original fields remain typed."
}
```

`ReplyRule`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `64` · Pattern: `"^[A-Za-z0-9_-]+$"`  |
| `label`Required  | `string` Min length: `1` · Max length: `80`  |
| `condition`Required  | `string` Max length: `300`  |
| `guidance`Required  | `string` Min length: `1` · Max length: `1000`  |
| `example`Required  | `string` Max length: `1000`  |
| `link`Required  | `string` \| `null` |
| `include_cc`Required  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z0-9_-]+$",
      "title": "Id"
    },
    "label": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1,
      "title": "Label"
    },
    "condition": {
      "type": "string",
      "maxLength": 300,
      "title": "Condition"
    },
    "guidance": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 1,
      "title": "Guidance"
    },
    "example": {
      "type": "string",
      "maxLength": 1000,
      "title": "Example"
    },
    "link": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Link"
    },
    "include_cc": {
      "type": "boolean",
      "title": "Include Cc"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "label",
    "condition",
    "guidance",
    "example",
    "link",
    "include_cc"
  ],
  "title": "ReplyRule"
}
```

`ResolveInput`

`object`

| Field | Type and constraints |
| --- | --- |
| `key`Required  | `string` Min length: `1` · Max length: `128`  |
| `identifiers`Required  | `object` |

Complete schema

JSON schema

```
{
  "properties": {
    "key": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Key"
    },
    "identifiers": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "maxProperties": 3,
      "minProperties": 1,
      "title": "Identifiers"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "key",
    "identifiers"
  ],
  "title": "ResolveInput"
}
```

`ResolvePage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ResolveResult`](https://startwave.io/docs/api/#schema-ResolveResult) |
| `complete`Required  | `boolean` |
| `hits`Optional  | array of [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) \| [`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview) |
| `result_set_id`Optional  | `string` \| `null` |
| `expires_at`Optional  | `string` \| `null` |
| `state`Optional  | `"preparing" \| "ready"` Default: `"ready"`  |
| `saved_records_available`Optional  | `boolean` Default: `false`  |
| `saved_records`Optional  | `object` |
| `input_count`Required  | `integer` |
| `matched_count`Required  | `integer` |
| `distinct_matches`Required  | `integer` |
| `disclosure`Required  | `"single_input" \| "unlinked"` |
| `ambiguous_count`Optional  | `integer` Default: `0`  |
| `conflicting_count`Optional  | `integer` Default: `0`  |
| `not_found_count`Optional  | `integer` Default: `0`  |
| `truncated_count`Optional  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/ResolveResult"
      },
      "type": "array",
      "title": "Items"
    },
    "complete": {
      "type": "boolean",
      "title": "Complete"
    },
    "hits": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PersonPreview"
          },
          {
            "$ref": "#/components/schemas/CompanyPreview"
          }
        ]
      },
      "type": "array",
      "title": "Hits"
    },
    "result_set_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Result Set Id"
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires At"
    },
    "state": {
      "type": "string",
      "enum": [
        "preparing",
        "ready"
      ],
      "title": "State",
      "default": "ready"
    },
    "saved_records_available": {
      "type": "boolean",
      "title": "Saved Records Available",
      "default": false
    },
    "saved_records": {
      "additionalProperties": {
        "$ref": "#/components/schemas/SavedRecordLink"
      },
      "type": "object",
      "title": "Saved Records"
    },
    "input_count": {
      "type": "integer",
      "title": "Input Count"
    },
    "matched_count": {
      "type": "integer",
      "title": "Matched Count"
    },
    "distinct_matches": {
      "type": "integer",
      "title": "Distinct Matches"
    },
    "disclosure": {
      "type": "string",
      "enum": [
        "single_input",
        "unlinked"
      ],
      "title": "Disclosure"
    },
    "ambiguous_count": {
      "type": "integer",
      "title": "Ambiguous Count",
      "default": 0
    },
    "conflicting_count": {
      "type": "integer",
      "title": "Conflicting Count",
      "default": 0
    },
    "not_found_count": {
      "type": "integer",
      "title": "Not Found Count",
      "default": 0
    },
    "truncated_count": {
      "type": "integer",
      "title": "Truncated Count",
      "default": 0
    }
  },
  "type": "object",
  "required": [
    "items",
    "complete",
    "input_count",
    "matched_count",
    "distinct_matches",
    "disclosure"
  ],
  "title": "ResolvePage"
}
```

`ResolveRequest`

`object`

| Field | Type and constraints |
| --- | --- |
| `inputs`Required  | array of [`ResolveInput`](https://startwave.io/docs/api/#schema-ResolveInput) Min items: `1` · Max items: `100`  |

Complete schema

JSON schema

```
{
  "properties": {
    "inputs": {
      "items": {
        "$ref": "#/components/schemas/ResolveInput"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Inputs"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "inputs"
  ],
  "title": "ResolveRequest"
}
```

`ResolveResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `key`Required  | `string` |
| `status`Required  | `"matched" \| "ambiguous" \| "conflicting" \| "not_found"` |
| `candidates`Required  | array of [`SearchItem`](https://startwave.io/docs/api/#schema-SearchItem) |
| `truncated`Required  | `boolean` |
| `match_basis`Required  | `"source_exact"` |

Complete schema

JSON schema

```
{
  "properties": {
    "key": {
      "type": "string",
      "title": "Key"
    },
    "status": {
      "type": "string",
      "enum": [
        "matched",
        "ambiguous",
        "conflicting",
        "not_found"
      ],
      "title": "Status"
    },
    "candidates": {
      "items": {
        "$ref": "#/components/schemas/SearchItem"
      },
      "type": "array",
      "title": "Candidates"
    },
    "truncated": {
      "type": "boolean",
      "title": "Truncated"
    },
    "match_basis": {
      "type": "string",
      "const": "source_exact",
      "title": "Match Basis"
    }
  },
  "type": "object",
  "required": [
    "key",
    "status",
    "candidates",
    "truncated",
    "match_basis"
  ],
  "title": "ResolveResult"
}
```

`Result`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation`Required  | [`Receipt`](https://startwave.io/docs/api/#schema-Receipt) |

Complete schema

JSON schema

```
{
  "properties": {
    "operation": {
      "$ref": "#/components/schemas/Receipt"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation"
  ],
  "title": "Result"
}
```

`RetentionPreview`

`object`

| Field | Type and constraints |
| --- | --- |
| `desired_daily_sends`Required  | `integer` |
| `allocated_daily_sends`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `period_seconds`Required  | `integer` |
| `effective_at`Required  | `string` \| `null` |
| `immediate_charge_cents`Required  | `0` |
| `refund_cents`Required  | `0` |
| `allocations`Required  | array of [`CapacityAllocation`](https://startwave.io/docs/api/#schema-CapacityAllocation) |
| `semantics`Required  | `"next_term_preview_not_purchase_authority"` |
| `fingerprint`Required  | `string` |
| `rate_version`Optional  | `string` \| `null` |
| `already_paid_term`Optional  | [`PaidCapacityTerm`](https://startwave.io/docs/api/#schema-PaidCapacityTerm) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "desired_daily_sends": {
      "type": "integer",
      "title": "Desired Daily Sends"
    },
    "allocated_daily_sends": {
      "type": "integer",
      "title": "Allocated Daily Sends"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "period_seconds": {
      "type": "integer",
      "title": "Period Seconds"
    },
    "effective_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Effective At"
    },
    "immediate_charge_cents": {
      "type": "integer",
      "const": 0,
      "title": "Immediate Charge Cents"
    },
    "refund_cents": {
      "type": "integer",
      "const": 0,
      "title": "Refund Cents"
    },
    "allocations": {
      "items": {
        "$ref": "#/components/schemas/CapacityAllocation"
      },
      "type": "array",
      "title": "Allocations"
    },
    "semantics": {
      "type": "string",
      "const": "next_term_preview_not_purchase_authority",
      "title": "Semantics"
    },
    "fingerprint": {
      "type": "string",
      "title": "Fingerprint"
    },
    "rate_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Rate Version"
    },
    "already_paid_term": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PaidCapacityTerm"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "desired_daily_sends",
    "allocated_daily_sends",
    "term_cents",
    "period_seconds",
    "effective_at",
    "immediate_charge_cents",
    "refund_cents",
    "allocations",
    "semantics",
    "fingerprint"
  ],
  "title": "RetentionPreview"
}
```

`RetryOriginal`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `created_at`Required  | `number` |
| `outcome`Required  | `"not_accepted"` |
| `reason`Required  | `string` |
| `origin`Required  | `"automatic" \| "reviewed"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "outcome": {
      "type": "string",
      "const": "not_accepted",
      "title": "Outcome"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "origin": {
      "type": "string",
      "enum": [
        "automatic",
        "reviewed"
      ],
      "title": "Origin"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "created_at",
    "outcome",
    "reason",
    "origin"
  ],
  "title": "RetryOriginal"
}
```

`RetryPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`RetryOriginal`](https://startwave.io/docs/api/#schema-RetryOriginal) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/RetryOriginal"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "RetryPage"
}
```

`Review`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128` · Pattern: `"^[^_].*$"`  |
| `revision`Required  | `integer` Minimum: `0.0`  |
| `daily_sends`Required  | `integer` Minimum: `0.0` · Maximum: `900.0`  |
| `provisioning_policy`Optional  | `"inboxkit-provisioning-v1"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "pattern": "^[^_].*$",
      "title": "Id"
    },
    "revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Revision"
    },
    "daily_sends": {
      "type": "integer",
      "maximum": 900.0,
      "minimum": 0.0,
      "title": "Daily Sends"
    },
    "provisioning_policy": {
      "anyOf": [
        {
          "type": "string",
          "const": "inboxkit-provisioning-v1"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Policy"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "revision",
    "daily_sends"
  ],
  "title": "Review"
}
```

`ReviewArtifact`

`object`

| Field | Type and constraints |
| --- | --- |
| `format`Optional  | `"csv_v1" \| "json_v1" \| "jsonl_v1" \| "xlsx_v1"` Default: `"csv_v1"`  |
| `columns`Required  | array of `string` Ordered column names recorded when this file was created. |
| `rows`Required  | `integer` Minimum: `0.0` · Maximum: `100.0`  |
| `bytes`Required  | `integer` Minimum: `1.0` · Maximum: `1048576.0`  |
| `sha256`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `expires_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "csv_v1",
        "json_v1",
        "jsonl_v1",
        "xlsx_v1"
      ],
      "title": "Format",
      "default": "csv_v1"
    },
    "columns": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Columns",
      "description": "Ordered column names recorded when this file was created."
    },
    "rows": {
      "type": "integer",
      "maximum": 100.0,
      "minimum": 0.0,
      "title": "Rows"
    },
    "bytes": {
      "type": "integer",
      "maximum": 1048576.0,
      "minimum": 1.0,
      "title": "Bytes"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Sha256"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "columns",
    "rows",
    "bytes",
    "sha256",
    "expires_at"
  ],
  "title": "ReviewArtifact"
}
```

`ReviewConfirm`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_digest`Required  | `string` Pattern: `"^[a-f0-9]{64}$"`  |
| `delivery`Optional  | `"json" \| "csv" \| "json_job" \| "csv_job"` Default: `"json"`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `10000000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "expected_digest": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "title": "Expected Digest"
    },
    "delivery": {
      "type": "string",
      "enum": [
        "json",
        "csv",
        "json_job",
        "csv_job"
      ],
      "title": "Delivery",
      "default": "json"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision",
    "expected_digest"
  ],
  "title": "ReviewConfirm"
}
```

`ReviewDelivery`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Optional  | `"review_json"` Default: `"review_json"`  |
| `id`Required  | `string` |
| `review_id`Required  | `string` |
| `state`Optional  | `"completed"` Default: `"completed"`  |
| `entity_type`Required  | `"person" \| "company"` |
| `projection`Required  | `"effective" \| "licensed"` |
| `digest`Required  | `string` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Optional  | `0` Default: `0`  |
| `amount_minor`Optional  | `0` Default: `0`  |
| `funding_required_minor`Optional  | `0` Default: `0`  |
| `items`Required  | array of [`DeliveredRow`](https://startwave.io/docs/api/#schema-DeliveredRow) Max items: `100`  |
| `created_at`Required  | `string` |
| `completed_at`Required  | `string` |
| `artifact`Optional  | [`ReviewArtifact`](https://startwave.io/docs/api/#schema-ReviewArtifact) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "review_json",
      "title": "Kind",
      "default": "review_json"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "review_id": {
      "type": "string",
      "title": "Review Id"
    },
    "state": {
      "type": "string",
      "const": "completed",
      "title": "State",
      "default": "completed"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "projection": {
      "type": "string",
      "enum": [
        "effective",
        "licensed"
      ],
      "title": "Projection"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "const": 0,
      "title": "Max Amount Minor",
      "default": 0
    },
    "amount_minor": {
      "type": "integer",
      "const": 0,
      "title": "Amount Minor",
      "default": 0
    },
    "funding_required_minor": {
      "type": "integer",
      "const": 0,
      "title": "Funding Required Minor",
      "default": 0
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/DeliveredRow"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Items"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "completed_at": {
      "type": "string",
      "title": "Completed At"
    },
    "artifact": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewArtifact"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "review_id",
    "entity_type",
    "projection",
    "digest",
    "items",
    "created_at",
    "completed_at"
  ],
  "title": "ReviewDelivery"
}
```

`ReviewDeliveryPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`PurchasedReviewRow`](https://startwave.io/docs/api/#schema-PurchasedReviewRow) |
| `next_after`Required  | `integer` \| `null` |
| `expires_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/PurchasedReviewRow"
      },
      "type": "array",
      "title": "Items"
    },
    "next_after": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next After"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_after",
    "expires_at"
  ],
  "title": "ReviewDeliveryPage"
}
```

`ReviewIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `0.0`  |
| `action`Required  | `"authorize" \| "cancel"` |
| `expected_send_price_cents`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Expected Revision"
    },
    "action": {
      "type": "string",
      "enum": [
        "authorize",
        "cancel"
      ],
      "title": "Action"
    },
    "expected_send_price_cents": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 1000000.0,
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Send Price Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "action"
  ],
  "title": "ReviewIn"
}
```

`ReviewPurchase`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Optional  | `"review_purchase"` Default: `"review_purchase"`  |
| `id`Required  | `string` |
| `review_id`Required  | `string` |
| `state`Required  | `"awaiting_funds" \| "completed" \| "cancelled"` |
| `entity_type`Required  | `"person" \| "company"` |
| `projection`Required  | `"effective" \| "licensed"` |
| `digest`Required  | `string` |
| `policy`Required  | [`DataPolicy`](https://startwave.io/docs/api/#schema-DataPolicy) |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Required  | `integer` |
| `amount_minor`Required  | `integer` |
| `funding_required_minor`Required  | `integer` |
| `initial_funding_required_minor`Required  | `integer` |
| `automatic_funding`Optional  | `boolean` Default: `false`  |
| `funding_error`Optional  | `string` Default: `""`  |
| `items`Required  | array of [`PurchasedReviewRow`](https://startwave.io/docs/api/#schema-PurchasedReviewRow) Max items: `100`  |
| `created_at`Required  | `string` |
| `completed_at`Required  | `string` \| `null` |
| `artifact`Optional  | [`ReviewArtifact`](https://startwave.io/docs/api/#schema-ReviewArtifact) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "review_purchase",
      "title": "Kind",
      "default": "review_purchase"
    },
    "id": {
      "type": "string",
      "title": "Id"
    },
    "review_id": {
      "type": "string",
      "title": "Review Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "awaiting_funds",
        "completed",
        "cancelled"
      ],
      "title": "State"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "projection": {
      "type": "string",
      "enum": [
        "effective",
        "licensed"
      ],
      "title": "Projection"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    },
    "policy": {
      "$ref": "#/components/schemas/DataPolicy"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "title": "Max Amount Minor"
    },
    "amount_minor": {
      "type": "integer",
      "title": "Amount Minor"
    },
    "funding_required_minor": {
      "type": "integer",
      "title": "Funding Required Minor"
    },
    "initial_funding_required_minor": {
      "type": "integer",
      "title": "Initial Funding Required Minor"
    },
    "automatic_funding": {
      "type": "boolean",
      "title": "Automatic Funding",
      "default": false
    },
    "funding_error": {
      "type": "string",
      "title": "Funding Error",
      "default": ""
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/PurchasedReviewRow"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Items"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At"
    },
    "artifact": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewArtifact"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "review_id",
    "state",
    "entity_type",
    "projection",
    "digest",
    "policy",
    "max_amount_minor",
    "amount_minor",
    "funding_required_minor",
    "initial_funding_required_minor",
    "items",
    "created_at",
    "completed_at"
  ],
  "title": "ReviewPurchase"
}
```

`ReviewSummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `owned_count`Optional  | `integer` Default: `0`  |
| `provided_count`Optional  | `integer` Default: `0`  |
| `preview_count`Optional  | `integer` Default: `0`  |
| `new_count`Optional  | `integer` Default: `0`  |
| `update_count`Optional  | `integer` Default: `0`  |
| `excluded_count`Optional  | `integer` Default: `0`  |
| `exclusions`Optional  | `object` |
| `selection_count`Required  | `integer` |
| `deliverable_count`Required  | `integer` |
| `billable_units`Required  | `integer` |
| `max_amount_minor`Required  | `integer` |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `digest`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "owned_count": {
      "type": "integer",
      "title": "Owned Count",
      "default": 0
    },
    "provided_count": {
      "type": "integer",
      "title": "Provided Count",
      "default": 0
    },
    "preview_count": {
      "type": "integer",
      "title": "Preview Count",
      "default": 0
    },
    "new_count": {
      "type": "integer",
      "title": "New Count",
      "default": 0
    },
    "update_count": {
      "type": "integer",
      "title": "Update Count",
      "default": 0
    },
    "excluded_count": {
      "type": "integer",
      "title": "Excluded Count",
      "default": 0
    },
    "exclusions": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Exclusions"
    },
    "selection_count": {
      "type": "integer",
      "title": "Selection Count"
    },
    "deliverable_count": {
      "type": "integer",
      "title": "Deliverable Count"
    },
    "billable_units": {
      "type": "integer",
      "title": "Billable Units"
    },
    "max_amount_minor": {
      "type": "integer",
      "title": "Max Amount Minor"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "digest": {
      "type": "string",
      "title": "Digest"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "selection_count",
    "deliverable_count",
    "billable_units",
    "max_amount_minor",
    "digest"
  ],
  "title": "ReviewSummary"
}
```

`ReviewView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"preparing" \| "ready" \| "held" \| "failed" \| "cancelled" \| "expired"` |
| `revision`Required  | `integer` |
| `entity_type`Required  | `"person" \| "company"` |
| `parameters`Required  | [`RecordedReviewCreate`](https://startwave.io/docs/api/#schema-RecordedReviewCreate) |
| `total_rows`Required  | `integer` |
| `processed_rows`Required  | `integer` |
| `summary`Required  | [`ReviewSummary`](https://startwave.io/docs/api/#schema-ReviewSummary) \| `null` |
| `policy`Required  | [`DataPolicy`](https://startwave.io/docs/api/#schema-DataPolicy) \| `null` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `expires_at`Required  | `string` |
| `reason`Required  | `string` \| `null` |
| `can_confirm`Optional  | `boolean` Default: `false`  |
| `order_id`Optional  | `string` \| `null` |
| `can_confirm_job`Optional  | `boolean` Default: `false`  |
| `delivery_job_id`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "preparing",
        "ready",
        "held",
        "failed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "parameters": {
      "$ref": "#/components/schemas/RecordedReviewCreate"
    },
    "total_rows": {
      "type": "integer",
      "title": "Total Rows"
    },
    "processed_rows": {
      "type": "integer",
      "title": "Processed Rows"
    },
    "summary": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewSummary"
        },
        {
          "type": "null"
        }
      ]
    },
    "policy": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DataPolicy"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "can_confirm": {
      "type": "boolean",
      "title": "Can Confirm",
      "default": false
    },
    "order_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Order Id"
    },
    "can_confirm_job": {
      "type": "boolean",
      "title": "Can Confirm Job",
      "default": false
    },
    "delivery_job_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Delivery Job Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "revision",
    "entity_type",
    "parameters",
    "total_rows",
    "processed_rows",
    "summary",
    "policy",
    "created_at",
    "updated_at",
    "expires_at",
    "reason"
  ],
  "title": "ReviewView"
}
```

`ReviewedCapacity`

`object`

| Field | Type and constraints |
| --- | --- |
| `quote_id`Required  | `string` \| `null` |
| `capacity_operation`Required  | `string` \| `null` |
| `period_seconds`Required  | `integer` |
| `rate_cents_per_block`Required  | `integer` |
| `rate_version`Required  | `string` |
| `maximum_new_capacity_cents`Required  | `integer` |
| `daily_capacity`Required  | `integer` |
| `expires_at`Required  | `number` |
| `renewal`Required  | [`ReviewedRenewal`](https://startwave.io/docs/api/#schema-ReviewedRenewal) |
| `billing_mode`Optional  | `string` \| `null` |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "quote_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quote Id"
    },
    "capacity_operation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Operation"
    },
    "period_seconds": {
      "type": "integer",
      "title": "Period Seconds"
    },
    "rate_cents_per_block": {
      "type": "integer",
      "title": "Rate Cents Per Block"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "maximum_new_capacity_cents": {
      "type": "integer",
      "title": "Maximum New Capacity Cents"
    },
    "daily_capacity": {
      "type": "integer",
      "title": "Daily Capacity"
    },
    "expires_at": {
      "type": "number",
      "title": "Expires At"
    },
    "renewal": {
      "$ref": "#/components/schemas/ReviewedRenewal"
    },
    "billing_mode": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Billing Mode"
    },
    "sending_pool": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "mailbox",
            "transactional",
            "all"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Sending Pool"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "quote_id",
    "capacity_operation",
    "period_seconds",
    "rate_cents_per_block",
    "rate_version",
    "maximum_new_capacity_cents",
    "daily_capacity",
    "expires_at",
    "renewal"
  ],
  "title": "ReviewedCapacity"
}
```

`ReviewedCard`

`object`

| Field | Type and constraints |
| --- | --- |
| `brand`Required  | `"amex" \| "diners" \| "discover" \| "eftpos_au" \| "jcb" \| "link" \| "mastercard" \| "unionpay" \| "visa" \| "unknown"` |
| `last4`Required  | `string` Pattern: `"^[0-9]{4}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "brand": {
      "type": "string",
      "enum": [
        "amex",
        "diners",
        "discover",
        "eftpos_au",
        "jcb",
        "link",
        "mastercard",
        "unionpay",
        "visa",
        "unknown"
      ],
      "title": "Brand"
    },
    "last4": {
      "type": "string",
      "pattern": "^[0-9]{4}$",
      "title": "Last4"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "brand",
    "last4"
  ],
  "title": "ReviewedCard"
}
```

`ReviewedRenewal`

`object`

| Field | Type and constraints |
| --- | --- |
| `enabled`Required  | `boolean` |
| `recurring_max_cents`Optional  | `integer` \| `null` |
| `revision`Optional  | `integer` \| `null` |
| `keep_idle`Optional  | `boolean` \| `null` |
| `budget_cents`Optional  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "recurring_max_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Recurring Max Cents"
    },
    "revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Revision"
    },
    "keep_idle": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Keep Idle"
    },
    "budget_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Budget Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "enabled"
  ],
  "title": "ReviewedRenewal"
}
```

`ReviewedSchedule`

`object`

| Field | Type and constraints |
| --- | --- |
| `definition`Required  | `"campaign-pacing-upper-bound-v1"` |
| `observed_at`Required  | `number` |
| `local_date`Required  | `string` |
| `timezone`Required  | `string` |
| `first_eligible_at`Required  | `number` |
| `opens_at`Required  | `number` |
| `closes_at`Required  | `number` |
| `nominal_gap_seconds`Required  | `number` \| `null` |
| `daily_limit`Required  | `integer` |
| `quota_used`Required  | `integer` \| `null` |
| `quota_remaining`Required  | `integer` \| `null` |
| `pacing_slots_upper_bound`Required  | `integer` \| `null` |
| `completion_guaranteed`Required  | `false` |

Complete schema

JSON schema

```
{
  "properties": {
    "definition": {
      "type": "string",
      "const": "campaign-pacing-upper-bound-v1",
      "title": "Definition"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "local_date": {
      "type": "string",
      "title": "Local Date"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "first_eligible_at": {
      "type": "number",
      "title": "First Eligible At"
    },
    "opens_at": {
      "type": "number",
      "title": "Opens At"
    },
    "closes_at": {
      "type": "number",
      "title": "Closes At"
    },
    "nominal_gap_seconds": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Nominal Gap Seconds"
    },
    "daily_limit": {
      "type": "integer",
      "title": "Daily Limit"
    },
    "quota_used": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quota Used"
    },
    "quota_remaining": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Quota Remaining"
    },
    "pacing_slots_upper_bound": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pacing Slots Upper Bound"
    },
    "completion_guaranteed": {
      "type": "boolean",
      "const": false,
      "title": "Completion Guaranteed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "definition",
    "observed_at",
    "local_date",
    "timezone",
    "first_eligible_at",
    "opens_at",
    "closes_at",
    "nominal_gap_seconds",
    "daily_limit",
    "quota_used",
    "quota_remaining",
    "pacing_slots_upper_bound",
    "completion_guaranteed"
  ],
  "title": "ReviewedSchedule"
}
```

`ReviewedSourceIntake`

`object`

| Field | Type and constraints |
| --- | --- |
| `parameters`Required  | [`RefillConsentIn`](https://startwave.io/docs/api/#schema-RefillConsentIn) |
| `sources`Required  | array of [`CampaignSource`](https://startwave.io/docs/api/#schema-CampaignSource) Min items: `1` · Max items: `50`  |

Complete schema

JSON schema

```
{
  "properties": {
    "parameters": {
      "$ref": "#/components/schemas/RefillConsentIn"
    },
    "sources": {
      "items": {
        "$ref": "#/components/schemas/CampaignSource"
      },
      "type": "array",
      "maxItems": 50,
      "minItems": 1,
      "title": "Sources"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "parameters",
    "sources"
  ],
  "title": "ReviewedSourceIntake"
}
```

`SaveCompanySource`

`object`

| Field | Type and constraints |
| --- | --- |
| `COMPANY_ID`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `target`Optional  | [`SourceTarget`](https://startwave.io/docs/api/#schema-SourceTarget) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "COMPANY_ID": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[^\\x00-\\x1f\\x7f]+$",
      "title": "Company Id"
    },
    "target": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SourceTarget"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "COMPANY_ID"
  ],
  "title": "SaveCompanySource"
}
```

`SavePersonSource`

`object`

| Field | Type and constraints |
| --- | --- |
| `UUID`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `target`Optional  | [`SourceTarget`](https://startwave.io/docs/api/#schema-SourceTarget) \| `null` Explicitly attach to this active manual record; never infer a merge from matching contact fields. |

Complete schema

JSON schema

```
{
  "properties": {
    "UUID": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[^\\x00-\\x1f\\x7f]+$",
      "title": "Uuid"
    },
    "target": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SourceTarget"
        },
        {
          "type": "null"
        }
      ],
      "description": "Explicitly attach to this active manual record; never infer a merge from matching contact fields."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "UUID"
  ],
  "title": "SavePersonSource"
}
```

`SaveResult`

`object`

| Field | Type and constraints |
| --- | --- |
| `operation`Required  | [`Receipt`](https://startwave.io/docs/api/#schema-Receipt) |
| `reconciliation`Required  | [`Reconciliation`](https://startwave.io/docs/api/#schema-Reconciliation) |
| `completion_semantics`Required  | `"saved_not_launched_or_all_copy_ready"` |

Complete schema

JSON schema

```
{
  "properties": {
    "operation": {
      "$ref": "#/components/schemas/Receipt"
    },
    "reconciliation": {
      "$ref": "#/components/schemas/Reconciliation"
    },
    "completion_semantics": {
      "type": "string",
      "const": "saved_not_launched_or_all_copy_ready",
      "title": "Completion Semantics"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "operation",
    "reconciliation",
    "completion_semantics"
  ],
  "title": "SaveResult"
}
```

`SavedCampaignDefinition`

`object`

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `offer`Optional  | `string` Default: `""` · Max length: `10000`  |
| `audience_prompt`Optional  | `string` Default: `""` · Max length: `10000`  |
| `steps`Required  | array of [`SavedStep`](https://startwave.io/docs/api/#schema-SavedStep) Min items: `1` · Max items: `10`  |
| `schedule`Optional  | [`Window`](https://startwave.io/docs/api/#schema-Window) |
| `daily_limit`Optional  | `integer` Finite campaign outbound sends per local sending day. Zero means unallocated: no new outbound sends or automatic preparation. The selected sending pool, shared capacity and current safeguards still apply. Default: `0` · Minimum: `0.0` · Maximum: `15000.0`  |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` Authorized sending capacity: mailbox by default, transactional or all only with an admin grant. Does not classify message content. Default: `"mailbox"`  |
| `allow_catch_all`Optional  | `boolean` Default: `false`  |
| `template_format`Optional  | `integer` Default: `1` · Minimum: `1.0` · Maximum: `2.0`  |
| `name_cleaning`Optional  | [`NameMapping`](https://startwave.io/docs/api/#schema-NameMapping) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    },
    "offer": {
      "type": "string",
      "maxLength": 10000,
      "title": "Offer",
      "default": ""
    },
    "audience_prompt": {
      "type": "string",
      "maxLength": 10000,
      "title": "Audience Prompt",
      "default": ""
    },
    "steps": {
      "items": {
        "$ref": "#/components/schemas/SavedStep"
      },
      "type": "array",
      "maxItems": 10,
      "minItems": 1,
      "title": "Steps"
    },
    "schedule": {
      "$ref": "#/components/schemas/Window"
    },
    "daily_limit": {
      "type": "integer",
      "maximum": 15000.0,
      "minimum": 0.0,
      "title": "Daily Limit",
      "description": "Finite campaign outbound sends per local sending day. Zero means unallocated: no new outbound sends or automatic preparation. The selected sending pool, shared capacity and current safeguards still apply.",
      "default": 0
    },
    "sending_pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Sending Pool",
      "description": "Authorized sending capacity: mailbox by default, transactional or all only with an admin grant. Does not classify message content.",
      "default": "mailbox"
    },
    "allow_catch_all": {
      "type": "boolean",
      "title": "Allow Catch All",
      "default": false
    },
    "template_format": {
      "type": "integer",
      "maximum": 2.0,
      "minimum": 1.0,
      "title": "Template Format",
      "default": 1
    },
    "name_cleaning": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/NameMapping"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name",
    "steps"
  ],
  "title": "SavedCampaignDefinition"
}
```

`SavedCard`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `brand`Required  | `string` \| `null` |
| `last4`Required  | `string` \| `null` |
| `exp_month`Required  | `integer` \| `null` |
| `exp_year`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "brand": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Brand"
    },
    "last4": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last4"
    },
    "exp_month": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Exp Month"
    },
    "exp_year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Exp Year"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "brand",
    "last4",
    "exp_month",
    "exp_year"
  ],
  "title": "SavedCard"
}
```

`SavedCards`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`SavedCard`](https://startwave.io/docs/api/#schema-SavedCard) |
| `next_cursor`Required  | `string` \| `null` |
| `revision`Required  | `integer` |
| `default_method`Required  | `string` \| `null` |
| `pending_removal`Optional  | [`CardRemovalOriginal`](https://startwave.io/docs/api/#schema-CardRemovalOriginal) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/SavedCard"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "default_method": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Default Method"
    },
    "pending_removal": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CardRemovalOriginal"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "revision",
    "default_method"
  ],
  "title": "SavedCards"
}
```

`SavedRecordLink`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `revision`Required  | `integer` |
| `state`Required  | `"active" \| "archived"` |
| `data_access`Required  | `"preview_only" \| "user_provided" \| "licensed"` |
| `freshness`Optional  | `"current" \| "update_available" \| "unavailable"` \| `null` |
| `checked_at`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Id"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    },
    "data_access": {
      "type": "string",
      "enum": [
        "preview_only",
        "user_provided",
        "licensed"
      ],
      "title": "Data Access"
    },
    "freshness": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "current",
            "update_available",
            "unavailable"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Freshness"
    },
    "checked_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Checked At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "revision",
    "state",
    "data_access"
  ],
  "title": "SavedRecordLink"
}
```

`SavedSearchCreate`

`object`

| Field | Type and constraints |
| --- | --- |
| `name`Required  | `string` Min length: `1` · Max length: `200`  |
| `entity_type`Required  | `"person" \| "company"` |
| `query`Required  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) |

Complete schema

JSON schema

```
{
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "title": "Name"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "query": {
      "$ref": "#/components/schemas/SearchQuery-Input"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "name",
    "entity_type",
    "query"
  ],
  "title": "SavedSearchCreate"
}
```

`SavedSearchEdit`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `state`Optional  | `"active" \| "archived"` \| `null` |
| `name`Optional  | `string` \| `null` |
| `query`Optional  | [`SearchQuery-Input`](https://startwave.io/docs/api/#schema-SearchQuery-Input) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "state": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "active",
            "archived"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "State"
    },
    "name": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Name"
    },
    "query": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SearchQuery-Input"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision"
  ],
  "title": "SavedSearchEdit"
}
```

`SavedSearchView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `name`Required  | `string` |
| `entity_type`Required  | `"person" \| "company"` |
| `state`Required  | `"active" \| "archived"` |
| `revision`Required  | `integer` |
| `query`Required  | [`SearchQuery-Output`](https://startwave.io/docs/api/#schema-SearchQuery-Output) |
| `mapping_digest`Required  | `string` |
| `validation`Required  | `"current" \| "revalidation_required" \| "unavailable"` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "archived"
      ],
      "title": "State"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "query": {
      "$ref": "#/components/schemas/SearchQuery-Output"
    },
    "mapping_digest": {
      "type": "string",
      "title": "Mapping Digest"
    },
    "validation": {
      "type": "string",
      "enum": [
        "current",
        "revalidation_required",
        "unavailable"
      ],
      "title": "Validation"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "name",
    "entity_type",
    "state",
    "revision",
    "query",
    "mapping_digest",
    "validation",
    "created_at",
    "updated_at"
  ],
  "title": "SavedSearchView"
}
```

`SavedStep`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `integer` Stable campaign-local identity, independent of array position. Never reused. Minimum: `0.0`  |
| `subject`Optional  | `string` \| `null` |
| `body`Required  | `string` Min length: `1` · Max length: `100000`  |
| `html`Optional  | `string` Default: `""` · Max length: `100000`  |
| `attachments`Optional  | array of [`AttachmentIn`](https://startwave.io/docs/api/#schema-AttachmentIn) Max items: `3`  |
| `delay_seconds`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `31536000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Id",
      "description": "Stable campaign-local identity, independent of array position. Never reused."
    },
    "subject": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject"
    },
    "body": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 1,
      "title": "Body"
    },
    "html": {
      "type": "string",
      "maxLength": 100000,
      "title": "Html",
      "default": ""
    },
    "attachments": {
      "items": {
        "$ref": "#/components/schemas/AttachmentIn"
      },
      "type": "array",
      "maxItems": 3,
      "title": "Attachments"
    },
    "delay_seconds": {
      "type": "integer",
      "maximum": 31536000.0,
      "minimum": 0.0,
      "title": "Delay Seconds",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "body"
  ],
  "title": "SavedStep"
}
```

`ScheduleAdviceCoverage`

`object`

| Field | Type and constraints |
| --- | --- |
| `horizon_end`Required  | `number` |
| `complete`Optional  | `boolean` Default: `false`  |
| `peer_definitions`Optional  | `integer` Default: `0`  |
| `roster`Optional  | `integer` Default: `0`  |
| `virtual_allocations`Optional  | `integer` Default: `0`  |
| `maximum_virtual_allocations`Optional  | `4000` Default: `4000`  |
| `maximum_evaluation_ms`Optional  | `150` Default: `150`  |

Complete schema

JSON schema

```
{
  "properties": {
    "horizon_end": {
      "type": "number",
      "title": "Horizon End"
    },
    "complete": {
      "type": "boolean",
      "title": "Complete",
      "default": false
    },
    "peer_definitions": {
      "type": "integer",
      "title": "Peer Definitions",
      "default": 0
    },
    "roster": {
      "type": "integer",
      "title": "Roster",
      "default": 0
    },
    "virtual_allocations": {
      "type": "integer",
      "title": "Virtual Allocations",
      "default": 0
    },
    "maximum_virtual_allocations": {
      "type": "integer",
      "const": 4000,
      "title": "Maximum Virtual Allocations",
      "default": 4000
    },
    "maximum_evaluation_ms": {
      "type": "integer",
      "const": 150,
      "title": "Maximum Evaluation Ms",
      "default": 150
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "horizon_end"
  ],
  "title": "ScheduleAdviceCoverage"
}
```

`ScheduleAdviceDraft`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"draft"` |
| `key`Required  | `string` Min length: `1` · Max length: `128`  |
| `schedule`Required  | [`Window`](https://startwave.io/docs/api/#schema-Window) |
| `daily_limit`Required  | `integer` Minimum: `0.0` · Maximum: `15000.0`  |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` Default: `"mailbox"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "draft",
      "title": "Kind"
    },
    "key": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Key"
    },
    "schedule": {
      "$ref": "#/components/schemas/Window"
    },
    "daily_limit": {
      "type": "integer",
      "maximum": 15000.0,
      "minimum": 0.0,
      "title": "Daily Limit"
    },
    "sending_pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Sending Pool",
      "default": "mailbox"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "key",
    "schedule",
    "daily_limit"
  ],
  "title": "ScheduleAdviceDraft"
}
```

`ScheduleAdviceInterval`

`object`

| Field | Type and constraints |
| --- | --- |
| `opens_at`Required  | `number` |
| `closes_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "opens_at": {
      "type": "number",
      "title": "Opens At"
    },
    "closes_at": {
      "type": "number",
      "title": "Closes At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "opens_at",
    "closes_at"
  ],
  "title": "ScheduleAdviceInterval"
}
```

`ScheduleAdviceIssue`

`object`

| Field | Type and constraints |
| --- | --- |
| `code`Required  | `string` |
| `severity`Optional  | `"info" \| "warning"` Default: `"warning"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "code": {
      "type": "string",
      "title": "Code"
    },
    "severity": {
      "type": "string",
      "enum": [
        "info",
        "warning"
      ],
      "title": "Severity",
      "default": "warning"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "code"
  ],
  "title": "ScheduleAdviceIssue"
}
```

`ScheduleAdviceItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"draft" \| "saved"` |
| `key`Required  | `string` |
| `campaign`Required  | `string` \| `null` |
| `revision`Required  | `integer` \| `null` |
| `input_fingerprint`Required  | `string` |
| `schedule`Required  | [`Window`](https://startwave.io/docs/api/#schema-Window) \| `null` |
| `daily_limit`Required  | `integer` \| `null` |
| `sending_pool`Required  | `"mailbox" \| "transactional" \| "all"` \| `null` |
| `state`Optional  | `"ready" \| "partial" \| "unavailable"` Default: `"unavailable"`  |
| `window`Optional  | [`ScheduleAdviceWindow`](https://startwave.io/docs/api/#schema-ScheduleAdviceWindow) \| `null` |
| `theoretical_opportunities`Optional  | `integer` \| `null` |
| `shortfall`Optional  | `integer` \| `null` |
| `issues`Optional  | array of [`ScheduleAdviceIssue`](https://startwave.io/docs/api/#schema-ScheduleAdviceIssue) |
| `recommendations`Optional  | array of [`ScheduleAdviceRecommendation`](https://startwave.io/docs/api/#schema-ScheduleAdviceRecommendation) Max items: `3`  |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "draft",
        "saved"
      ],
      "title": "Kind"
    },
    "key": {
      "type": "string",
      "title": "Key"
    },
    "campaign": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign"
    },
    "revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Revision"
    },
    "input_fingerprint": {
      "type": "string",
      "title": "Input Fingerprint"
    },
    "schedule": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Window"
        },
        {
          "type": "null"
        }
      ]
    },
    "daily_limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Daily Limit"
    },
    "sending_pool": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "mailbox",
            "transactional",
            "all"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Sending Pool"
    },
    "state": {
      "type": "string",
      "enum": [
        "ready",
        "partial",
        "unavailable"
      ],
      "title": "State",
      "default": "unavailable"
    },
    "window": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ScheduleAdviceWindow"
        },
        {
          "type": "null"
        }
      ]
    },
    "theoretical_opportunities": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Theoretical Opportunities"
    },
    "shortfall": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Shortfall"
    },
    "issues": {
      "items": {
        "$ref": "#/components/schemas/ScheduleAdviceIssue"
      },
      "type": "array",
      "title": "Issues"
    },
    "recommendations": {
      "items": {
        "$ref": "#/components/schemas/ScheduleAdviceRecommendation"
      },
      "type": "array",
      "maxItems": 3,
      "title": "Recommendations"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "key",
    "campaign",
    "revision",
    "input_fingerprint",
    "schedule",
    "daily_limit",
    "sending_pool"
  ],
  "title": "ScheduleAdviceItem"
}
```

`ScheduleAdviceRecommendation`

`object`

| Field | Type and constraints |
| --- | --- |
| `schedule`Required  | [`Window`](https://startwave.io/docs/api/#schema-Window) |
| `window`Required  | [`ScheduleAdviceWindow`](https://startwave.io/docs/api/#schema-ScheduleAdviceWindow) |
| `theoretical_opportunities`Required  | `integer` |
| `shortfall`Optional  | `0` Default: `0`  |
| `selection`Required  | `"shortest_evaluated_sufficient" \| "evaluated_sufficient"` |

Complete schema

JSON schema

```
{
  "properties": {
    "schedule": {
      "$ref": "#/components/schemas/Window"
    },
    "window": {
      "$ref": "#/components/schemas/ScheduleAdviceWindow"
    },
    "theoretical_opportunities": {
      "type": "integer",
      "title": "Theoretical Opportunities"
    },
    "shortfall": {
      "type": "integer",
      "const": 0,
      "title": "Shortfall",
      "default": 0
    },
    "selection": {
      "type": "string",
      "enum": [
        "shortest_evaluated_sufficient",
        "evaluated_sufficient"
      ],
      "title": "Selection"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "schedule",
    "window",
    "theoretical_opportunities",
    "selection"
  ],
  "title": "ScheduleAdviceRecommendation"
}
```

`ScheduleAdviceRequest`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`ScheduleAdviceDraft`](https://startwave.io/docs/api/#schema-ScheduleAdviceDraft) \| [`ScheduleAdviceSaved`](https://startwave.io/docs/api/#schema-ScheduleAdviceSaved) Min items: `1` · Max items: `50`  |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ScheduleAdviceDraft"
          },
          {
            "$ref": "#/components/schemas/ScheduleAdviceSaved"
          }
        ],
        "discriminator": {
          "propertyName": "kind",
          "mapping": {
            "draft": "#/components/schemas/ScheduleAdviceDraft",
            "saved": "#/components/schemas/ScheduleAdviceSaved"
          }
        }
      },
      "type": "array",
      "maxItems": 50,
      "minItems": 1,
      "title": "Items"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items"
  ],
  "title": "ScheduleAdviceRequest"
}
```

`ScheduleAdviceResponse`

`object`

| Field | Type and constraints |
| --- | --- |
| `definition`Optional  | `"schedule-advice-v1"` Default: `"schedule-advice-v1"`  |
| `state`Optional  | `"ready" \| "partial" \| "unavailable"` Default: `"unavailable"`  |
| `observed_at`Required  | `number` |
| `expires_at`Optional  | `number` \| `null` |
| `fingerprint`Optional  | `string` Default: `""`  |
| `coverage`Required  | [`ScheduleAdviceCoverage`](https://startwave.io/docs/api/#schema-ScheduleAdviceCoverage) |
| `issues`Optional  | array of [`ScheduleAdviceIssue`](https://startwave.io/docs/api/#schema-ScheduleAdviceIssue) |
| `items`Required  | array of [`ScheduleAdviceItem`](https://startwave.io/docs/api/#schema-ScheduleAdviceItem) Max items: `50`  |
| `semantics`Optional  | `"configuration_fit_not_queue_readiness_or_reservation"` Default: `"configuration_fit_not_queue_readiness_or_reservation"`  |
| `assumptions`Optional  | array of `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "definition": {
      "type": "string",
      "const": "schedule-advice-v1",
      "title": "Definition",
      "default": "schedule-advice-v1"
    },
    "state": {
      "type": "string",
      "enum": [
        "ready",
        "partial",
        "unavailable"
      ],
      "title": "State",
      "default": "unavailable"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires At"
    },
    "fingerprint": {
      "type": "string",
      "title": "Fingerprint",
      "default": ""
    },
    "coverage": {
      "$ref": "#/components/schemas/ScheduleAdviceCoverage"
    },
    "issues": {
      "items": {
        "$ref": "#/components/schemas/ScheduleAdviceIssue"
      },
      "type": "array",
      "title": "Issues"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/ScheduleAdviceItem"
      },
      "type": "array",
      "maxItems": 50,
      "title": "Items"
    },
    "semantics": {
      "type": "string",
      "const": "configuration_fit_not_queue_readiness_or_reservation",
      "title": "Semantics",
      "default": "configuration_fit_not_queue_readiness_or_reservation"
    },
    "assumptions": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Assumptions"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "observed_at",
    "coverage",
    "items"
  ],
  "title": "ScheduleAdviceResponse"
}
```

`ScheduleAdviceSaved`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `"saved"` |
| `campaign`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `schedule`Optional  | [`Window`](https://startwave.io/docs/api/#schema-Window) \| `null` |
| `daily_limit`Optional  | `integer` \| `null` |
| `sending_pool`Optional  | `"mailbox" \| "transactional" \| "all"` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "const": "saved",
      "title": "Kind"
    },
    "campaign": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Campaign"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "schedule": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/Window"
        },
        {
          "type": "null"
        }
      ]
    },
    "daily_limit": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 15000.0,
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Daily Limit"
    },
    "sending_pool": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "mailbox",
            "transactional",
            "all"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Sending Pool"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "kind",
    "campaign",
    "expected_revision"
  ],
  "title": "ScheduleAdviceSaved"
}
```

`ScheduleAdviceWindow`

`object`

| Field | Type and constraints |
| --- | --- |
| `local_date`Required  | `string` |
| `timezone`Required  | `string` |
| `opens_at`Required  | `number` |
| `closes_at`Required  | `number` |
| `intervals`Required  | array of [`ScheduleAdviceInterval`](https://startwave.io/docs/api/#schema-ScheduleAdviceInterval) |

Complete schema

JSON schema

```
{
  "properties": {
    "local_date": {
      "type": "string",
      "title": "Local Date"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "opens_at": {
      "type": "number",
      "title": "Opens At"
    },
    "closes_at": {
      "type": "number",
      "title": "Closes At"
    },
    "intervals": {
      "items": {
        "$ref": "#/components/schemas/ScheduleAdviceInterval"
      },
      "type": "array",
      "title": "Intervals"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "local_date",
    "timezone",
    "opens_at",
    "closes_at",
    "intervals"
  ],
  "title": "ScheduleAdviceWindow"
}
```

`ScheduleChangeReceipt`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `revision`Required  | `integer` Campaign revision accepted by this original, not the current campaign revision. Minimum: `1.0`  |
| `schedule`Required  | `string` Original JSON-encoded window with timezone, weekdays, start and end. Retains the existing string wire format. |
| `daily_limit`Required  | `integer` Minimum: `0.0`  |
| `limit_semantics`Required  | `"uncapped_zero" \| "finite"` Meaning captured by this original: pre-cutover zero was uncapped; finite zero is unallocated. |
| `sending_pool`Required  | `"mailbox" \| "transactional" \| "all"` \| `null` Selected capacity pool; null only for originals created before pool selection existed. |
| `allow_catch_all`Required  | `boolean` |
| `not_before`Required  | `number` Admission barrier in Unix seconds; zero means no additional barrier. Not a promised send time. |
| `phase`Required  | `"jobs" \| "preparations" \| "complete"` |
| `processed`Required  | `integer` Job and preparation rows examined across replan phases. Not unique recipients, changed rows or a total. Minimum: `0.0`  |
| `created_at`Required  | `number` Original acceptance time, Unix seconds. |
| `completed_at`Required  | `number` \| `null` Replan completion or supersession time, Unix seconds; null while pending. Does not start or resume the campaign. |
| `superseded_by`Required  | `string` Newer schedule change that took over unfinished reconciliation; empty otherwise. |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Revision",
      "description": "Campaign revision accepted by this original, not the current campaign revision."
    },
    "schedule": {
      "type": "string",
      "title": "Schedule",
      "description": "Original JSON-encoded window with timezone, weekdays, start and end. Retains the existing string wire format."
    },
    "daily_limit": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Daily Limit"
    },
    "limit_semantics": {
      "type": "string",
      "enum": [
        "uncapped_zero",
        "finite"
      ],
      "title": "Limit Semantics",
      "description": "Meaning captured by this original: pre-cutover zero was uncapped; finite zero is unallocated."
    },
    "sending_pool": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "mailbox",
            "transactional",
            "all"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Sending Pool",
      "description": "Selected capacity pool; null only for originals created before pool selection existed."
    },
    "allow_catch_all": {
      "type": "boolean",
      "title": "Allow Catch All"
    },
    "not_before": {
      "type": "number",
      "title": "Not Before",
      "description": "Admission barrier in Unix seconds; zero means no additional barrier. Not a promised send time."
    },
    "phase": {
      "type": "string",
      "enum": [
        "jobs",
        "preparations",
        "complete"
      ],
      "title": "Phase"
    },
    "processed": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Processed",
      "description": "Job and preparation rows examined across replan phases. Not unique recipients, changed rows or a total."
    },
    "created_at": {
      "type": "number",
      "title": "Created At",
      "description": "Original acceptance time, Unix seconds."
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At",
      "description": "Replan completion or supersession time, Unix seconds; null while pending. Does not start or resume the campaign."
    },
    "superseded_by": {
      "type": "string",
      "title": "Superseded By",
      "description": "Newer schedule change that took over unfinished reconciliation; empty otherwise."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "revision",
    "schedule",
    "daily_limit",
    "limit_semantics",
    "sending_pool",
    "allow_catch_all",
    "not_before",
    "phase",
    "processed",
    "created_at",
    "completed_at",
    "superseded_by"
  ],
  "title": "ScheduleChangeReceipt",
  "examples": [
    {
      "allow_catch_all": false,
      "campaign": "example-campaign",
      "created_at": 1791590400.0,
      "daily_limit": 20,
      "id": "schedule-edit",
      "limit_semantics": "finite",
      "not_before": 0.0,
      "phase": "jobs",
      "processed": 100,
      "revision": 4,
      "schedule": "{\"timezone\":\"UTC\",\"weekdays\":[0,1,2,3,4],\"start\":\"09:00\",\"end\":\"17:00\"}",
      "superseded_by": ""
    },
    {
      "allow_catch_all": false,
      "campaign": "example-campaign",
      "completed_at": 1791590402.0,
      "created_at": 1791590400.0,
      "daily_limit": 20,
      "id": "schedule-edit",
      "limit_semantics": "finite",
      "not_before": 0.0,
      "phase": "complete",
      "processed": 125,
      "revision": 4,
      "schedule": "{\"timezone\":\"UTC\",\"weekdays\":[0,1,2,3,4],\"start\":\"09:00\",\"end\":\"17:00\"}",
      "superseded_by": ""
    }
  ]
}
```

`SearchItem`

`object`

| Field | Type and constraints |
| --- | --- |
| `preview`Required  | [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) \| [`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview) |
| `data_access`Required  | `"preview_only"` |
| `availability`Required  | [`PersonAvailability`](https://startwave.io/docs/api/#schema-PersonAvailability) \| [`CompanyAvailability`](https://startwave.io/docs/api/#schema-CompanyAvailability) |
| `saved_record`Optional  | [`SavedRecordLink`](https://startwave.io/docs/api/#schema-SavedRecordLink) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "preview": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PersonPreview"
        },
        {
          "$ref": "#/components/schemas/CompanyPreview"
        }
      ],
      "title": "Preview"
    },
    "data_access": {
      "type": "string",
      "const": "preview_only",
      "title": "Data Access"
    },
    "availability": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PersonAvailability"
        },
        {
          "$ref": "#/components/schemas/CompanyAvailability"
        }
      ],
      "title": "Availability"
    },
    "saved_record": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SavedRecordLink"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "preview",
    "data_access",
    "availability"
  ],
  "title": "SearchItem"
}
```

`SearchNext`

`object`

| Field | Type and constraints |
| --- | --- |
| `data_source`Optional  | `"people" \| "companies"` Default: `"people"`  |
| `cursor`Required  | `string` Min length: `1` · Max length: `65536`  |
| `size`Optional  | `integer` Default: `25` · Minimum: `1.0` · Maximum: `200.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "data_source": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Data Source",
      "default": "people"
    },
    "cursor": {
      "type": "string",
      "maxLength": 65536,
      "minLength": 1,
      "title": "Cursor"
    },
    "size": {
      "type": "integer",
      "maximum": 200.0,
      "minimum": 1.0,
      "title": "Size",
      "default": 25
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "cursor"
  ],
  "title": "SearchNext"
}
```

`SearchPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `hits`Required  | array of [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) \| [`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview) |
| `data_source`Required  | `"people" \| "companies"` |
| `size`Required  | `integer` |
| `offset`Required  | `integer` |
| `total`Required  | `integer` \| `null` |
| `count_status`Required  | `"exact" \| "not_requested" \| "unavailable"` |
| `query_time_ms`Required  | `integer` |
| `saved_records`Required  | `object` |
| `saved_records_available`Required  | `boolean` |
| `result_set_id`Required  | `string` |
| `next_cursor`Required  | `string` \| `null` |
| `expires_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "hits": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PersonPreview"
          },
          {
            "$ref": "#/components/schemas/CompanyPreview"
          }
        ]
      },
      "type": "array",
      "title": "Hits"
    },
    "data_source": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Data Source"
    },
    "size": {
      "type": "integer",
      "title": "Size"
    },
    "offset": {
      "type": "integer",
      "title": "Offset"
    },
    "total": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Total"
    },
    "count_status": {
      "type": "string",
      "enum": [
        "exact",
        "not_requested",
        "unavailable"
      ],
      "title": "Count Status"
    },
    "query_time_ms": {
      "type": "integer",
      "title": "Query Time Ms"
    },
    "saved_records": {
      "additionalProperties": {
        "$ref": "#/components/schemas/SavedRecordLink"
      },
      "type": "object",
      "title": "Saved Records"
    },
    "saved_records_available": {
      "type": "boolean",
      "title": "Saved Records Available"
    },
    "result_set_id": {
      "type": "string",
      "title": "Result Set Id"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    }
  },
  "type": "object",
  "required": [
    "hits",
    "data_source",
    "size",
    "offset",
    "total",
    "count_status",
    "query_time_ms",
    "saved_records",
    "saved_records_available",
    "result_set_id",
    "next_cursor",
    "expires_at"
  ],
  "title": "SearchPage"
}
```

`SearchQuery-Input`

`object`

| Field | Type and constraints |
| --- | --- |
| `data_source`Optional  | `"people" \| "companies"` Default: `"people"`  |
| `ownership`Optional  | `"all" \| "net_new" \| "saved"` Default: `"all"`  |
| `query`Optional  | `string` Default: `""` · Max length: `240` · Pattern: `"^[^\\x00-\\x1f\\x7f]*$"`  |
| `keyword_mode`Optional  | `"AND" \| "OR" \| "phrase"` Default: `"AND"`  |
| `filters`Optional  | `object` |
| `sort`Optional  | array of [`Sort`](https://startwave.io/docs/api/#schema-Sort) Max items: `2`  |
| `size`Optional  | `integer` Default: `25` · Minimum: `1.0` · Maximum: `200.0`  |
| `count`Optional  | `"exact" \| "none"` Default: `"exact"`  |
| `domain_sets`Optional  | [`DomainSetFilters`](https://startwave.io/docs/api/#schema-DomainSetFilters) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "data_source": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Data Source",
      "default": "people"
    },
    "ownership": {
      "type": "string",
      "enum": [
        "all",
        "net_new",
        "saved"
      ],
      "title": "Ownership",
      "default": "all"
    },
    "query": {
      "type": "string",
      "maxLength": 240,
      "pattern": "^[^\\x00-\\x1f\\x7f]*$",
      "title": "Query",
      "default": ""
    },
    "keyword_mode": {
      "type": "string",
      "enum": [
        "AND",
        "OR",
        "phrase"
      ],
      "title": "Keyword Mode",
      "default": "AND"
    },
    "filters": {
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Keywords"
          },
          {
            "$ref": "#/components/schemas/Picklist"
          },
          {
            "$ref": "#/components/schemas/Presence"
          },
          {
            "$ref": "#/components/schemas/Range"
          },
          {
            "$ref": "#/components/schemas/Nested-Input"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "exists": "#/components/schemas/Presence",
            "keyword_group": "#/components/schemas/Keywords",
            "nested": "#/components/schemas/Nested-Input",
            "picklist": "#/components/schemas/Picklist",
            "range": "#/components/schemas/Range"
          }
        }
      },
      "type": "object",
      "maxProperties": 50,
      "title": "Filters"
    },
    "sort": {
      "items": {
        "$ref": "#/components/schemas/Sort"
      },
      "type": "array",
      "maxItems": 2,
      "title": "Sort"
    },
    "size": {
      "type": "integer",
      "maximum": 200.0,
      "minimum": 1.0,
      "title": "Size",
      "default": 25
    },
    "count": {
      "type": "string",
      "enum": [
        "exact",
        "none"
      ],
      "title": "Count",
      "default": "exact"
    },
    "domain_sets": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DomainSetFilters"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "SearchQuery"
}
```

`SearchQuery-Output`

`object`

| Field | Type and constraints |
| --- | --- |
| `data_source`Optional  | `"people" \| "companies"` Default: `"people"`  |
| `ownership`Optional  | `"all" \| "net_new" \| "saved"` Default: `"all"`  |
| `query`Optional  | `string` Default: `""` · Max length: `240` · Pattern: `"^[^\\x00-\\x1f\\x7f]*$"`  |
| `keyword_mode`Optional  | `"AND" \| "OR" \| "phrase"` Default: `"AND"`  |
| `filters`Optional  | `object` |
| `sort`Optional  | array of [`Sort`](https://startwave.io/docs/api/#schema-Sort) Max items: `2`  |
| `size`Optional  | `integer` Default: `25` · Minimum: `1.0` · Maximum: `200.0`  |
| `count`Optional  | `"exact" \| "none"` Default: `"exact"`  |
| `domain_sets`Optional  | [`DomainSetFilters`](https://startwave.io/docs/api/#schema-DomainSetFilters) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "data_source": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Data Source",
      "default": "people"
    },
    "ownership": {
      "type": "string",
      "enum": [
        "all",
        "net_new",
        "saved"
      ],
      "title": "Ownership",
      "default": "all"
    },
    "query": {
      "type": "string",
      "maxLength": 240,
      "pattern": "^[^\\x00-\\x1f\\x7f]*$",
      "title": "Query",
      "default": ""
    },
    "keyword_mode": {
      "type": "string",
      "enum": [
        "AND",
        "OR",
        "phrase"
      ],
      "title": "Keyword Mode",
      "default": "AND"
    },
    "filters": {
      "additionalProperties": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Keywords"
          },
          {
            "$ref": "#/components/schemas/Picklist"
          },
          {
            "$ref": "#/components/schemas/Presence"
          },
          {
            "$ref": "#/components/schemas/Range"
          },
          {
            "$ref": "#/components/schemas/Nested-Output"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "exists": "#/components/schemas/Presence",
            "keyword_group": "#/components/schemas/Keywords",
            "nested": "#/components/schemas/Nested-Output",
            "picklist": "#/components/schemas/Picklist",
            "range": "#/components/schemas/Range"
          }
        }
      },
      "type": "object",
      "maxProperties": 50,
      "title": "Filters"
    },
    "sort": {
      "items": {
        "$ref": "#/components/schemas/Sort"
      },
      "type": "array",
      "maxItems": 2,
      "title": "Sort"
    },
    "size": {
      "type": "integer",
      "maximum": 200.0,
      "minimum": 1.0,
      "title": "Size",
      "default": 25
    },
    "count": {
      "type": "string",
      "enum": [
        "exact",
        "none"
      ],
      "title": "Count",
      "default": "exact"
    },
    "domain_sets": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/DomainSetFilters"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "SearchQuery"
}
```

`SearchRateLimit`

`object`

| Field | Type and constraints |
| --- | --- |
| `detail`Required  | [`SearchRateLimitDetail`](https://startwave.io/docs/api/#schema-SearchRateLimitDetail) \| `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "detail": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SearchRateLimitDetail"
        },
        {
          "type": "string"
        }
      ],
      "title": "Detail"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "detail"
  ],
  "title": "SearchRateLimit"
}
```

`SearchRateLimitDetail`

`object`

| Field | Type and constraints |
| --- | --- |
| `code`Required  | `"search_daily_budget_exhausted" \| "search_capacity_unavailable" \| "search_snapshot_limit"` |

Complete schema

JSON schema

```
{
  "properties": {
    "code": {
      "type": "string",
      "enum": [
        "search_daily_budget_exhausted",
        "search_capacity_unavailable",
        "search_snapshot_limit"
      ],
      "title": "Code"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "code"
  ],
  "title": "SearchRateLimitDetail"
}
```

`SelectionParameters`

`object`

| Field | Type and constraints |
| --- | --- |
| `kind`Required  | `string` |
| `entity_type`Required  | `"person" \| "company"` |
| `max_records`Required  | `integer` |
| `max_per_company`Optional  | `integer` \| `null` |
| `list_id`Optional  | `string` \| `null` |
| `expected_membership_revision`Optional  | `integer` \| `null` |
| `record_filter`Optional  | [`RecordSelectionFilter`](https://startwave.io/docs/api/#schema-RecordSelectionFilter) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "kind": {
      "type": "string",
      "title": "Kind"
    },
    "entity_type": {
      "type": "string",
      "enum": [
        "person",
        "company"
      ],
      "title": "Entity Type"
    },
    "max_records": {
      "type": "integer",
      "title": "Max Records"
    },
    "max_per_company": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Per Company"
    },
    "list_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "List Id"
    },
    "expected_membership_revision": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expected Membership Revision"
    },
    "record_filter": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/RecordSelectionFilter"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": {
    "$ref": "#/components/schemas/JsonValue"
  },
  "type": "object",
  "required": [
    "kind",
    "entity_type",
    "max_records"
  ],
  "title": "SelectionParameters"
}
```

`SelectionPreviewPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `hits`Required  | array of [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) \| [`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview) |
| `data_source`Required  | `"people" \| "companies"` |
| `total`Required  | `integer` |
| `result_set_id`Required  | `string` |
| `next_cursor`Required  | `string` \| `null` |
| `expires_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "hits": {
      "items": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PersonPreview"
          },
          {
            "$ref": "#/components/schemas/CompanyPreview"
          }
        ]
      },
      "type": "array",
      "title": "Hits"
    },
    "data_source": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Data Source"
    },
    "total": {
      "type": "integer",
      "title": "Total"
    },
    "result_set_id": {
      "type": "string",
      "title": "Result Set Id"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "hits",
    "data_source",
    "total",
    "result_set_id",
    "next_cursor",
    "expires_at"
  ],
  "title": "SelectionPreviewPage"
}
```

`SelectionView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `parameters`Required  | [`SelectionParameters`](https://startwave.io/docs/api/#schema-SelectionParameters) Original scope. New selections must use SelectionCreate; reading history never reinterprets or authorizes it. |
| `state`Required  | `"preparing" \| "ready" \| "failed" \| "cancelled" \| "expired"` |
| `import_id`Required  | `string` |
| `source_count`Required  | `integer` \| `null` |
| `source_count_relation`Optional  | `"eq" \| "gte" \| "unknown"` Default: `"eq"`  |
| `selected_rows`Required  | `integer` |
| `scanned_rows`Optional  | `integer` Default: `0`  |
| `valid_rows`Required  | `integer` |
| `invalid_rows`Required  | `integer` |
| `limited`Required  | `boolean` \| `null` |
| `digest`Required  | `string` \| `null` |
| `reason`Required  | `string` \| `null` |
| `created_at`Required  | `string` |
| `updated_at`Required  | `string` |
| `expires_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "parameters": {
      "$ref": "#/components/schemas/SelectionParameters",
      "description": "Original scope. New selections must use SelectionCreate; reading history never reinterprets or authorizes it."
    },
    "state": {
      "type": "string",
      "enum": [
        "preparing",
        "ready",
        "failed",
        "cancelled",
        "expired"
      ],
      "title": "State"
    },
    "import_id": {
      "type": "string",
      "title": "Import Id"
    },
    "source_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Source Count"
    },
    "source_count_relation": {
      "type": "string",
      "enum": [
        "eq",
        "gte",
        "unknown"
      ],
      "title": "Source Count Relation",
      "default": "eq"
    },
    "selected_rows": {
      "type": "integer",
      "title": "Selected Rows"
    },
    "scanned_rows": {
      "type": "integer",
      "title": "Scanned Rows",
      "default": 0
    },
    "valid_rows": {
      "type": "integer",
      "title": "Valid Rows"
    },
    "invalid_rows": {
      "type": "integer",
      "title": "Invalid Rows"
    },
    "limited": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Limited"
    },
    "digest": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Digest"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Reason"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "parameters",
    "state",
    "import_id",
    "source_count",
    "selected_rows",
    "valid_rows",
    "invalid_rows",
    "limited",
    "digest",
    "reason",
    "created_at",
    "updated_at",
    "expires_at"
  ],
  "title": "SelectionView"
}
```

`SendCounts`

`object`

| Field | Type and constraints |
| --- | --- |
| `first_touches`Required  | `integer` |
| `followups`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "first_touches": {
      "type": "integer",
      "title": "First Touches"
    },
    "followups": {
      "type": "integer",
      "title": "Followups"
    }
  },
  "type": "object",
  "required": [
    "first_touches",
    "followups"
  ],
  "title": "SendCounts"
}
```

`SendDetail`

`object`

| Field | Type and constraints |
| --- | --- |
| `recipient`Required  | `string` |
| `step`Required  | `integer` |
| `sequence_position`Required  | `integer` \| `null` |
| `sequence_total`Required  | `integer` \| `null` |
| `state`Required  | `string` |
| `due_at`Required  | `number` |
| `updated_at`Required  | `number` |
| `campaign_state`Required  | `string` |
| `enrollment_state`Required  | `string` |
| `content`Required  | [`MessageCopy`](https://startwave.io/docs/api/#schema-MessageCopy) \| `null` |
| `preparation_state`Required  | `string` |
| `transformer`Required  | `string` \| `null` |
| `quality_check`Required  | `string` |
| `verification`Required  | [`VerificationView`](https://startwave.io/docs/api/#schema-VerificationView) |
| `observed_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "recipient": {
      "type": "string",
      "title": "Recipient"
    },
    "step": {
      "type": "integer",
      "title": "Step"
    },
    "sequence_position": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Position"
    },
    "sequence_total": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Sequence Total"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "due_at": {
      "type": "number",
      "title": "Due At"
    },
    "updated_at": {
      "type": "number",
      "title": "Updated At"
    },
    "campaign_state": {
      "type": "string",
      "title": "Campaign State"
    },
    "enrollment_state": {
      "type": "string",
      "title": "Enrollment State"
    },
    "content": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MessageCopy"
        },
        {
          "type": "null"
        }
      ]
    },
    "preparation_state": {
      "type": "string",
      "title": "Preparation State"
    },
    "transformer": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Transformer"
    },
    "quality_check": {
      "type": "string",
      "title": "Quality Check"
    },
    "verification": {
      "$ref": "#/components/schemas/VerificationView"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    }
  },
  "type": "object",
  "required": [
    "recipient",
    "step",
    "sequence_position",
    "sequence_total",
    "state",
    "due_at",
    "updated_at",
    "campaign_state",
    "enrollment_state",
    "content",
    "preparation_state",
    "transformer",
    "quality_check",
    "verification",
    "observed_at"
  ],
  "title": "SendDetail"
}
```

`SendProjectionSummary`

`object`

| Field | Type and constraints |
| --- | --- |
| `definition`Optional  | `"send-projection-v1"` Default: `"send-projection-v1"`  |
| `state`Optional  | `"ready" \| "partial" \| "unavailable"` Default: `"ready"`  |
| `observed_at`Required  | `number` |
| `as_of`Required  | `number` |
| `horizon_end`Required  | `number` |
| `timezone`Required  | `string` |
| `complete`Optional  | `boolean` Default: `true`  |
| `reason`Optional  | `string` Default: `""`  |
| `fingerprint`Optional  | `string` Default: `""`  |
| `days`Optional  | array of [`ProjectedDay`](https://startwave.io/docs/api/#schema-ProjectedDay) |
| `campaigns`Optional  | array of [`CampaignProjection`](https://startwave.io/docs/api/#schema-CampaignProjection) |
| `insights`Optional  | array of [`Insight`](https://startwave.io/docs/api/#schema-Insight) |
| `assumptions`Optional  | array of `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "definition": {
      "type": "string",
      "const": "send-projection-v1",
      "title": "Definition",
      "default": "send-projection-v1"
    },
    "state": {
      "type": "string",
      "enum": [
        "ready",
        "partial",
        "unavailable"
      ],
      "title": "State",
      "default": "ready"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "as_of": {
      "type": "number",
      "title": "As Of"
    },
    "horizon_end": {
      "type": "number",
      "title": "Horizon End"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "complete": {
      "type": "boolean",
      "title": "Complete",
      "default": true
    },
    "reason": {
      "type": "string",
      "title": "Reason",
      "default": ""
    },
    "fingerprint": {
      "type": "string",
      "title": "Fingerprint",
      "default": ""
    },
    "days": {
      "items": {
        "$ref": "#/components/schemas/ProjectedDay"
      },
      "type": "array",
      "title": "Days"
    },
    "campaigns": {
      "items": {
        "$ref": "#/components/schemas/CampaignProjection"
      },
      "type": "array",
      "title": "Campaigns"
    },
    "insights": {
      "items": {
        "$ref": "#/components/schemas/Insight"
      },
      "type": "array",
      "title": "Insights"
    },
    "assumptions": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Assumptions"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "observed_at",
    "as_of",
    "horizon_end",
    "timezone"
  ],
  "title": "SendProjectionSummary"
}
```

`SenderIdentity`

`object`

| Field | Type and constraints |
| --- | --- |
| `mailbox`Required  | `string` |
| `revision`Required  | `integer` |
| `full_name`Required  | `string` |
| `job_title`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "mailbox": {
      "type": "string",
      "title": "Mailbox"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "full_name": {
      "type": "string",
      "title": "Full Name"
    },
    "job_title": {
      "type": "string",
      "title": "Job Title"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "mailbox",
    "revision",
    "full_name",
    "job_title"
  ],
  "title": "SenderIdentity"
}
```

`SenderIdentityPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`EffectiveSenderIdentity`](https://startwave.io/docs/api/#schema-EffectiveSenderIdentity) Max items: `100`  |
| `next_cursor`Required  | `string` \| `null` |
| `local_parts`Required  | array of [`SenderIdentity`](https://startwave.io/docs/api/#schema-SenderIdentity) Max items: `100`  |
| `default_identity`Required  | [`SenderIdentity`](https://startwave.io/docs/api/#schema-SenderIdentity) |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/EffectiveSenderIdentity"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "local_parts": {
      "items": {
        "$ref": "#/components/schemas/SenderIdentity"
      },
      "type": "array",
      "maxItems": 100,
      "title": "Local Parts"
    },
    "default_identity": {
      "$ref": "#/components/schemas/SenderIdentity"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "local_parts",
    "default_identity"
  ],
  "title": "SenderIdentityPage"
}
```

`SenderProfile`

`object`

| Field | Type and constraints |
| --- | --- |
| `workspace`Required  | `string` |
| `sender`Required  | `string` |
| `revision`Required  | `integer` |
| `business_name`Required  | `string` |
| `postal_address`Required  | `string` |
| `enabled`Required  | `0 \| 1` |
| `actor`Required  | `string` |
| `created_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "workspace": {
      "type": "string",
      "title": "Workspace"
    },
    "sender": {
      "type": "string",
      "title": "Sender"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "business_name": {
      "type": "string",
      "title": "Business Name"
    },
    "postal_address": {
      "type": "string",
      "title": "Postal Address"
    },
    "enabled": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Enabled"
    },
    "actor": {
      "type": "string",
      "title": "Actor"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "workspace",
    "sender",
    "revision",
    "business_name",
    "postal_address",
    "enabled",
    "actor",
    "created_at"
  ],
  "title": "SenderProfile"
}
```

`SendingOutlook`

`object`

| Field | Type and constraints |
| --- | --- |
| `forecast`Optional  | [`SendProjectionSummary`](https://startwave.io/docs/api/#schema-SendProjectionSummary) \| `null` |
| `definition`Optional  | `"sending-outlook-v1"` Default: `"sending-outlook-v1"`  |
| `state`Required  | `"ready" \| "unavailable"` |
| `observed_at`Required  | `number` |
| `timezone`Required  | `string` |
| `local_date`Required  | `string` |
| `accepted`Required  | [`SendCounts`](https://startwave.io/docs/api/#schema-SendCounts) |
| `accepted_replies`Required  | `integer` |
| `paid_limit`Required  | `integer` |
| `mailbox_limit`Required  | `integer` \| `null` |
| `capacity_ceiling`Required  | `integer` \| `null` |
| `configured_limit`Required  | `integer` \| `null` |
| `maximum`Required  | `integer` \| `null` |
| `remaining_maximum`Required  | `integer` \| `null` |
| `capacity_gap`Required  | `integer` \| `null` |
| `carry_forward_at_least`Required  | `integer` \| `null` |
| `has_window_today`Required  | `boolean` |
| `reason`Required  | `string` |
| `campaigns`Required  | array of [`CampaignOutlook`](https://startwave.io/docs/api/#schema-CampaignOutlook) |
| `semantics`Optional  | `"upper_bound_not_a_booking_or_delivery_promise"` Default: `"upper_bound_not_a_booking_or_delivery_promise"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "forecast": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SendProjectionSummary"
        },
        {
          "type": "null"
        }
      ]
    },
    "definition": {
      "type": "string",
      "const": "sending-outlook-v1",
      "title": "Definition",
      "default": "sending-outlook-v1"
    },
    "state": {
      "type": "string",
      "enum": [
        "ready",
        "unavailable"
      ],
      "title": "State"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "timezone": {
      "type": "string",
      "title": "Timezone"
    },
    "local_date": {
      "type": "string",
      "title": "Local Date"
    },
    "accepted": {
      "$ref": "#/components/schemas/SendCounts"
    },
    "accepted_replies": {
      "type": "integer",
      "title": "Accepted Replies"
    },
    "paid_limit": {
      "type": "integer",
      "title": "Paid Limit"
    },
    "mailbox_limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Mailbox Limit"
    },
    "capacity_ceiling": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Ceiling"
    },
    "configured_limit": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Configured Limit"
    },
    "maximum": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Maximum"
    },
    "remaining_maximum": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Remaining Maximum"
    },
    "capacity_gap": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Gap"
    },
    "carry_forward_at_least": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Carry Forward At Least"
    },
    "has_window_today": {
      "type": "boolean",
      "title": "Has Window Today"
    },
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "campaigns": {
      "items": {
        "$ref": "#/components/schemas/CampaignOutlook"
      },
      "type": "array",
      "title": "Campaigns"
    },
    "semantics": {
      "type": "string",
      "const": "upper_bound_not_a_booking_or_delivery_promise",
      "title": "Semantics",
      "default": "upper_bound_not_a_booking_or_delivery_promise"
    }
  },
  "type": "object",
  "required": [
    "state",
    "observed_at",
    "timezone",
    "local_date",
    "accepted",
    "accepted_replies",
    "paid_limit",
    "mailbox_limit",
    "capacity_ceiling",
    "configured_limit",
    "maximum",
    "remaining_maximum",
    "capacity_gap",
    "carry_forward_at_least",
    "has_window_today",
    "reason",
    "campaigns"
  ],
  "title": "SendingOutlook"
}
```

`SendingPolicyOperation`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `state`Required  | `"pending" \| "replanning" \| "complete" \| "failed"` |
| `requested_slow_ramp`Required  | `boolean` |
| `expected_revision`Required  | `integer` |
| `receipt`Required  | [`LegacySendingPolicyReceipt`](https://startwave.io/docs/api/#schema-LegacySendingPolicyReceipt) \| `null` |
| `error`Required  | `string` |
| `created_at`Required  | `number` |
| `completed_at`Required  | `number` \| `null` |
| `processed`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "replanning",
        "complete",
        "failed"
      ],
      "title": "State"
    },
    "requested_slow_ramp": {
      "type": "boolean",
      "title": "Requested Slow Ramp"
    },
    "expected_revision": {
      "type": "integer",
      "title": "Expected Revision"
    },
    "receipt": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/LegacySendingPolicyReceipt"
        },
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "completed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Completed At"
    },
    "processed": {
      "type": "integer",
      "title": "Processed"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "state",
    "requested_slow_ramp",
    "expected_revision",
    "receipt",
    "error",
    "created_at",
    "completed_at",
    "processed"
  ],
  "title": "SendingPolicyOperation"
}
```

`SendingPoolAllocation`

`object`

| Field | Type and constraints |
| --- | --- |
| `pool`Required  | `"mailbox" \| "transactional" \| "all"` |
| `available`Required  | `integer` Minimum: `0.0`  |
| `overage`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Pool"
    },
    "available": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Available"
    },
    "overage": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Overage"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "pool",
    "available",
    "overage"
  ],
  "title": "SendingPoolAllocation"
}
```

`SendingPoolCapacity`

`object`

| Field | Type and constraints |
| --- | --- |
| `pool`Required  | `"mailbox" \| "transactional" \| "all"` |
| `daily_limit`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "pool": {
      "type": "string",
      "enum": [
        "mailbox",
        "transactional",
        "all"
      ],
      "title": "Pool"
    },
    "daily_limit": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Daily Limit"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "pool",
    "daily_limit"
  ],
  "title": "SendingPoolCapacity"
}
```

`ServiceInterval`

`object`

| Field | Type and constraints |
| --- | --- |
| `start`Required  | `string` |
| `end`Required  | `string` |
| `daily_sends`Required  | `integer` |
| `kind`Required  | `"term" \| "addition" \| "renewal"` |

Complete schema

JSON schema

```
{
  "properties": {
    "start": {
      "type": "string",
      "title": "Start"
    },
    "end": {
      "type": "string",
      "title": "End"
    },
    "daily_sends": {
      "type": "integer",
      "title": "Daily Sends"
    },
    "kind": {
      "type": "string",
      "enum": [
        "term",
        "addition",
        "renewal"
      ],
      "title": "Kind"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "start",
    "end",
    "daily_sends",
    "kind"
  ],
  "title": "ServiceInterval"
}
```

`SignupBonus`

`object`

| Field | Type and constraints |
| --- | --- |
| `card_bonus_minor`Required  | `integer` Minimum: `0.0` · Maximum: `500.0`  |
| `card_bonus_state`Required  | `"ineligible" \| "pending" \| "awarded"` |

Complete schema

JSON schema

```
{
  "properties": {
    "card_bonus_minor": {
      "type": "integer",
      "maximum": 500.0,
      "minimum": 0.0,
      "title": "Card Bonus Minor"
    },
    "card_bonus_state": {
      "type": "string",
      "enum": [
        "ineligible",
        "pending",
        "awarded"
      ],
      "title": "Card Bonus State"
    }
  },
  "type": "object",
  "required": [
    "card_bonus_minor",
    "card_bonus_state"
  ],
  "title": "SignupBonus"
}
```

`Sort`

`object`

| Field | Type and constraints |
| --- | --- |
| `field`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |
| `direction`Optional  | `"asc" \| "desc"` Default: `"asc"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "field": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[^\\x00-\\x1f\\x7f]+$",
      "title": "Field"
    },
    "direction": {
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ],
      "title": "Direction",
      "default": "asc"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "field"
  ],
  "title": "Sort"
}
```

`SourceCheck`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_revision`Required  | `integer` |
| `expected_check_revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    },
    "expected_check_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Check Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_revision",
    "expected_check_revision"
  ],
  "title": "SourceCheck"
}
```

`SourceCheckHistory`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`SourceCheckObservation`](https://startwave.io/docs/api/#schema-SourceCheckObservation) |
| `next_after`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/SourceCheckObservation"
      },
      "type": "array",
      "title": "Items"
    },
    "next_after": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next After"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_after"
  ],
  "title": "SourceCheckHistory"
}
```

`SourceCheckObservation`

`object`

| Field | Type and constraints |
| --- | --- |
| `check_revision`Required  | `integer` |
| `checked_at`Required  | `string` |
| `saved_version_id`Required  | `string` \| `null` |
| `latest_version_id`Required  | `string` \| `null` |
| `freshness`Required  | `"current" \| "update_available" \| "unavailable"` |
| `supplier_hash_status`Required  | `"absent" \| "observed" \| "consistent" \| "drift"` |

Complete schema

JSON schema

```
{
  "properties": {
    "check_revision": {
      "type": "integer",
      "title": "Check Revision"
    },
    "checked_at": {
      "type": "string",
      "title": "Checked At"
    },
    "saved_version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Saved Version Id"
    },
    "latest_version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest Version Id"
    },
    "freshness": {
      "type": "string",
      "enum": [
        "current",
        "update_available",
        "unavailable"
      ],
      "title": "Freshness"
    },
    "supplier_hash_status": {
      "type": "string",
      "enum": [
        "absent",
        "observed",
        "consistent",
        "drift"
      ],
      "title": "Supplier Hash Status"
    }
  },
  "type": "object",
  "required": [
    "check_revision",
    "checked_at",
    "saved_version_id",
    "latest_version_id",
    "freshness",
    "supplier_hash_status"
  ],
  "title": "SourceCheckObservation"
}
```

`SourceCollection`

`object`

| Field | Type and constraints |
| --- | --- |
| `campaign_id`Required  | `string` |
| `campaign_revision`Required  | `integer` |
| `sources_revision`Required  | `integer` |
| `max_sources`Optional  | `integer` Default: `50`  |
| `admission_enabled`Optional  | `true` Default: `true`  |
| `admission_max_people`Optional  | `integer` Default: `200`  |
| `automatic_refill_enabled`Optional  | `true` Default: `true`  |
| `included_preparation_enabled`Optional  | `boolean` Default: `false`  |
| `included_unlock_enabled`Optional  | `boolean` Default: `false`  |
| `items`Required  | array of [`CampaignSource`](https://startwave.io/docs/api/#schema-CampaignSource) |

Complete schema

JSON schema

```
{
  "properties": {
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "sources_revision": {
      "type": "integer",
      "title": "Sources Revision"
    },
    "max_sources": {
      "type": "integer",
      "title": "Max Sources",
      "default": 50
    },
    "admission_enabled": {
      "type": "boolean",
      "const": true,
      "title": "Admission Enabled",
      "default": true
    },
    "admission_max_people": {
      "type": "integer",
      "title": "Admission Max People",
      "default": 200
    },
    "automatic_refill_enabled": {
      "type": "boolean",
      "const": true,
      "title": "Automatic Refill Enabled",
      "default": true
    },
    "included_preparation_enabled": {
      "type": "boolean",
      "title": "Included Preparation Enabled",
      "default": false
    },
    "included_unlock_enabled": {
      "type": "boolean",
      "title": "Included Unlock Enabled",
      "default": false
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/CampaignSource"
      },
      "type": "array",
      "title": "Items"
    }
  },
  "type": "object",
  "required": [
    "campaign_id",
    "campaign_revision",
    "sources_revision",
    "items"
  ],
  "title": "SourceCollection"
}
```

`SourceComparison`

`object`

| Field | Type and constraints |
| --- | --- |
| `baseline_version_id`Required  | `string` \| `null` |
| `observed_version_id`Required  | `string` \| `null` |
| `checked_at`Required  | `string` |
| `preview_fields`Required  | array of `"UUID" \| "FIRST_NAME" \| "LAST_NAME" \| "PHOTO_URL" \| "COMPANY_NAME" \| "JOB_TITLE" \| "COMPANY_LOGO_URL" \| "PERSONAL_CITY" \| "PERSONAL_STATE" \| "PERSONAL_COUNTRY" \| "COMPANY_DOMAIN" \| "COMPANY_ID" \| "COMPANY_CITY" \| "COMPANY_STATE" \| "COMPANY_COUNTRY"` \| `null` |
| `employment`Required  | [`EmploymentComparison`](https://startwave.io/docs/api/#schema-EmploymentComparison) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "baseline_version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Baseline Version Id"
    },
    "observed_version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Observed Version Id"
    },
    "checked_at": {
      "type": "string",
      "title": "Checked At"
    },
    "preview_fields": {
      "anyOf": [
        {
          "items": {
            "type": "string",
            "enum": [
              "UUID",
              "FIRST_NAME",
              "LAST_NAME",
              "PHOTO_URL",
              "COMPANY_NAME",
              "JOB_TITLE",
              "COMPANY_LOGO_URL",
              "PERSONAL_CITY",
              "PERSONAL_STATE",
              "PERSONAL_COUNTRY",
              "COMPANY_DOMAIN",
              "COMPANY_ID",
              "COMPANY_CITY",
              "COMPANY_STATE",
              "COMPANY_COUNTRY"
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Preview Fields"
    },
    "employment": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/EmploymentComparison"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "type": "object",
  "required": [
    "baseline_version_id",
    "observed_version_id",
    "checked_at",
    "preview_fields",
    "employment"
  ],
  "title": "SourceComparison"
}
```

`SourceConnect`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `list_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_campaign_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Campaign Revision"
    },
    "expected_sources_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Sources Revision"
    },
    "list_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "List Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_campaign_revision",
    "expected_sources_revision",
    "list_id"
  ],
  "title": "SourceConnect"
}
```

`SourceEdit`

`object`

| Field | Type and constraints |
| --- | --- |
| `expected_campaign_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `state`Required  | `"connected" \| "disconnected"` |

Complete schema

JSON schema

```
{
  "properties": {
    "expected_campaign_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Campaign Revision"
    },
    "expected_sources_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Sources Revision"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "state": {
      "type": "string",
      "enum": [
        "connected",
        "disconnected"
      ],
      "title": "State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "expected_campaign_revision",
    "expected_sources_revision",
    "expected_revision",
    "state"
  ],
  "title": "SourceEdit"
}
```

`SourceLookup`

`object`

| Field | Type and constraints |
| --- | --- |
| `ids`Required  | array of `string` Min items: `1` · Max items: `100`  |
| `id_type`Optional  | `"source" \| "record"` Default: `"source"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "ids": {
      "items": {
        "type": "string",
        "maxLength": 256,
        "minLength": 1,
        "pattern": "^[^\\x00-\\x1f\\x7f]+$"
      },
      "type": "array",
      "maxItems": 100,
      "minItems": 1,
      "title": "Ids"
    },
    "id_type": {
      "type": "string",
      "enum": [
        "source",
        "record"
      ],
      "title": "Id Type",
      "default": "source"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "ids"
  ],
  "title": "SourceLookup"
}
```

`SourceOperation`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign_id`Required  | `string` |
| `source_id`Required  | `string` |
| `revision`Required  | `integer` |
| `sources_revision`Required  | `integer` |
| `state`Optional  | `"completed"` Default: `"completed"`  |
| `created_at`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign_id": {
      "type": "string",
      "title": "Campaign Id"
    },
    "source_id": {
      "type": "string",
      "title": "Source Id"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "sources_revision": {
      "type": "integer",
      "title": "Sources Revision"
    },
    "state": {
      "type": "string",
      "const": "completed",
      "title": "State",
      "default": "completed"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    }
  },
  "type": "object",
  "required": [
    "id",
    "campaign_id",
    "source_id",
    "revision",
    "sources_revision",
    "created_at"
  ],
  "title": "SourceOperation"
}
```

`SourceProgress`

`object`

| Field | Type and constraints |
| --- | --- |
| `source_id`Required  | `string` |
| `examined`Optional  | `integer` Default: `0`  |
| `added`Optional  | `integer` Default: `0`  |
| `held`Optional  | `integer` Default: `0`  |
| `already_admitted`Optional  | `integer` Default: `0`  |
| `last_admission_id`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "source_id": {
      "type": "string",
      "title": "Source Id"
    },
    "examined": {
      "type": "integer",
      "title": "Examined",
      "default": 0
    },
    "added": {
      "type": "integer",
      "title": "Added",
      "default": 0
    },
    "held": {
      "type": "integer",
      "title": "Held",
      "default": 0
    },
    "already_admitted": {
      "type": "integer",
      "title": "Already Admitted",
      "default": 0
    },
    "last_admission_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Last Admission Id"
    }
  },
  "type": "object",
  "required": [
    "source_id"
  ],
  "title": "SourceProgress"
}
```

`SourceSelection`

`object`

| Field | Type and constraints |
| --- | --- |
| `list_ids`Required  | array of `string` Max items: `50`  |
| `expected_sources_revision`Required  | `integer` Minimum: `1.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "list_ids": {
      "items": {
        "type": "string",
        "pattern": "^[a-f0-9]{32}$"
      },
      "type": "array",
      "maxItems": 50,
      "title": "List Ids"
    },
    "expected_sources_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Sources Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "list_ids",
    "expected_sources_revision"
  ],
  "title": "SourceSelection"
}
```

`SourceState`

`object`

| Field | Type and constraints |
| --- | --- |
| `freshness`Required  | `"current" \| "update_available" \| "unavailable"` |
| `check_revision`Required  | `integer` |
| `checked_at`Required  | `string` |
| `saved_version_id`Required  | `string` \| `null` |
| `latest_version_id`Required  | `string` \| `null` |
| `latest_preview`Required  | [`PersonPreview`](https://startwave.io/docs/api/#schema-PersonPreview) \| [`CompanyPreview`](https://startwave.io/docs/api/#schema-CompanyPreview) \| `null` |
| `supplier_hash_status`Required  | `"absent" \| "observed" \| "consistent" \| "drift"` |
| `comparison`Required  | [`SourceComparison`](https://startwave.io/docs/api/#schema-SourceComparison) |

Complete schema

JSON schema

```
{
  "properties": {
    "freshness": {
      "type": "string",
      "enum": [
        "current",
        "update_available",
        "unavailable"
      ],
      "title": "Freshness"
    },
    "check_revision": {
      "type": "integer",
      "title": "Check Revision"
    },
    "checked_at": {
      "type": "string",
      "title": "Checked At"
    },
    "saved_version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Saved Version Id"
    },
    "latest_version_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest Version Id"
    },
    "latest_preview": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PersonPreview"
        },
        {
          "$ref": "#/components/schemas/CompanyPreview"
        },
        {
          "type": "null"
        }
      ],
      "title": "Latest Preview"
    },
    "supplier_hash_status": {
      "type": "string",
      "enum": [
        "absent",
        "observed",
        "consistent",
        "drift"
      ],
      "title": "Supplier Hash Status"
    },
    "comparison": {
      "$ref": "#/components/schemas/SourceComparison"
    }
  },
  "type": "object",
  "required": [
    "freshness",
    "check_revision",
    "checked_at",
    "saved_version_id",
    "latest_version_id",
    "latest_preview",
    "supplier_hash_status",
    "comparison"
  ],
  "title": "SourceState"
}
```

`SourceTarget`

`object`

| Field | Type and constraints |
| --- | --- |
| `record_id`Required  | `string` Pattern: `"^[a-f0-9]{32}$"`  |
| `expected_revision`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "record_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{32}$",
      "title": "Record Id"
    },
    "expected_revision": {
      "type": "integer",
      "exclusiveMinimum": 0.0,
      "title": "Expected Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "record_id",
    "expected_revision"
  ],
  "title": "SourceTarget"
}
```

`SourceUnlock`

`object`

| Field | Type and constraints |
| --- | --- |
| `policy_id`Required  | `string` Min length: `1` · Max length: `100`  |
| `currency`Optional  | `"usd"` Default: `"usd"`  |
| `max_amount_minor`Required  | `integer` Minimum: `0.0` · Maximum: `10000000.0`  |
| `action`Required  | `"unlock"` |
| `resource`Required  | `"people" \| "companies"` |
| `source_id`Required  | `string` Min length: `1` · Max length: `256` · Pattern: `"^[^\\x00-\\x1f\\x7f]+$"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "policy_id": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "title": "Policy Id"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency",
      "default": "usd"
    },
    "max_amount_minor": {
      "type": "integer",
      "maximum": 10000000.0,
      "minimum": 0.0,
      "title": "Max Amount Minor"
    },
    "action": {
      "type": "string",
      "const": "unlock",
      "title": "Action"
    },
    "resource": {
      "type": "string",
      "enum": [
        "people",
        "companies"
      ],
      "title": "Resource"
    },
    "source_id": {
      "type": "string",
      "maxLength": 256,
      "minLength": 1,
      "pattern": "^[^\\x00-\\x1f\\x7f]+$",
      "title": "Source Id"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "policy_id",
    "max_amount_minor",
    "action",
    "resource",
    "source_id"
  ],
  "title": "SourceUnlock"
}
```

`StartRecovery`

`object`

| Field | Type and constraints |
| --- | --- |
| `release_available`Required  | `boolean` |
| `release`Required  | [`CapacityRelease`](https://startwave.io/docs/api/#schema-CapacityRelease) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "release_available": {
      "type": "boolean",
      "title": "Release Available"
    },
    "release": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/CapacityRelease"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "release_available",
    "release"
  ],
  "title": "StartRecovery"
}
```

`StartReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `kind`Required  | `"start"` |
| `campaign`Required  | `string` |
| `campaign_revision`Required  | `integer` |
| `capacity`Required  | [`ReviewedCapacity`](https://startwave.io/docs/api/#schema-ReviewedCapacity) |
| `audience_revision`Required  | `integer` |
| `remaining_send_count`Required  | `integer` |
| `state`Required  | `"reviewed"` |
| `send_price_cents`Required  | `integer` |
| `send_budget_cents`Required  | `integer` |
| `audience_count`Required  | `integer` |
| `sequence_steps`Required  | `integer` |
| `send_committed_cents`Required  | `integer` |
| `reviewed_at`Required  | `number` |
| `reviewed_by`Required  | `string` |
| `commercial_policy_version`Optional  | `string` \| `null` |
| `spending_mode`Optional  | `"finite" \| "capacity"` \| `null` |
| `schedule`Optional  | [`ReviewedSchedule`](https://startwave.io/docs/api/#schema-ReviewedSchedule) \| `null` |
| `source_intake`Optional  | [`ReviewedSourceIntake`](https://startwave.io/docs/api/#schema-ReviewedSourceIntake) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "kind": {
      "type": "string",
      "const": "start",
      "title": "Kind"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "campaign_revision": {
      "type": "integer",
      "title": "Campaign Revision"
    },
    "capacity": {
      "$ref": "#/components/schemas/ReviewedCapacity"
    },
    "audience_revision": {
      "type": "integer",
      "title": "Audience Revision"
    },
    "remaining_send_count": {
      "type": "integer",
      "title": "Remaining Send Count"
    },
    "state": {
      "type": "string",
      "const": "reviewed",
      "title": "State"
    },
    "send_price_cents": {
      "type": "integer",
      "title": "Send Price Cents"
    },
    "send_budget_cents": {
      "type": "integer",
      "title": "Send Budget Cents"
    },
    "audience_count": {
      "type": "integer",
      "title": "Audience Count"
    },
    "sequence_steps": {
      "type": "integer",
      "title": "Sequence Steps"
    },
    "send_committed_cents": {
      "type": "integer",
      "title": "Send Committed Cents"
    },
    "reviewed_at": {
      "type": "number",
      "title": "Reviewed At"
    },
    "reviewed_by": {
      "type": "string",
      "title": "Reviewed By"
    },
    "commercial_policy_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Commercial Policy Version"
    },
    "spending_mode": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "finite",
            "capacity"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Spending Mode"
    },
    "schedule": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedSchedule"
        },
        {
          "type": "null"
        }
      ]
    },
    "source_intake": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedSourceIntake"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "kind",
    "campaign",
    "campaign_revision",
    "capacity",
    "audience_revision",
    "remaining_send_count",
    "state",
    "send_price_cents",
    "send_budget_cents",
    "audience_count",
    "sequence_steps",
    "send_committed_cents",
    "reviewed_at",
    "reviewed_by"
  ],
  "title": "StartReview"
}
```

`StartReviewIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `spending_mode`Optional  | `"finite" \| "capacity"` Default: `"finite"`  |
| `quote_id`Optional  | `string` \| `null` |
| `capacity_operation`Optional  | `string` \| `null` |
| `source_refill`Optional  | [`RefillScope`](https://startwave.io/docs/api/#schema-RefillScope) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "spending_mode": {
      "type": "string",
      "enum": [
        "finite",
        "capacity"
      ],
      "title": "Spending Mode",
      "default": "finite"
    },
    "quote_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Quote Id"
    },
    "capacity_operation": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128,
          "minLength": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Capacity Operation"
    },
    "source_refill": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/RefillScope"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision"
  ],
  "title": "StartReviewIn"
}
```

`StartReviewPage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`StartReview`](https://startwave.io/docs/api/#schema-StartReview) |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/StartReview"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "StartReviewPage"
}
```

`StatusIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |
| `status`Required  | `"closed" \| "needs_reply"` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    },
    "status": {
      "type": "string",
      "enum": [
        "closed",
        "needs_reply"
      ],
      "title": "Status"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision",
    "status"
  ],
  "title": "StatusIn"
}
```

`Step`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Optional  | `integer` Retain the returned ID when editing. Omit only for a new step. Minimum: `0.0`  |
| `subject`Optional  | `string` \| `null` |
| `body`Required  | `string` Min length: `1` · Max length: `100000`  |
| `html`Optional  | `string` Default: `""` · Max length: `100000`  |
| `attachments`Optional  | array of [`AttachmentIn`](https://startwave.io/docs/api/#schema-AttachmentIn) Max items: `3`  |
| `delay_seconds`Optional  | `integer` Default: `0` · Minimum: `0.0` · Maximum: `31536000.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Id",
      "description": "Retain the returned ID when editing. Omit only for a new step."
    },
    "subject": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject"
    },
    "body": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 1,
      "title": "Body"
    },
    "html": {
      "type": "string",
      "maxLength": 100000,
      "title": "Html",
      "default": ""
    },
    "attachments": {
      "items": {
        "$ref": "#/components/schemas/AttachmentIn"
      },
      "type": "array",
      "maxItems": 3,
      "title": "Attachments"
    },
    "delay_seconds": {
      "type": "integer",
      "maximum": 31536000.0,
      "minimum": 0.0,
      "title": "Delay Seconds",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "body"
  ],
  "title": "Step"
}
```

`StopCapacityReview`

`object`

| Field | Type and constraints |
| --- | --- |
| `rate_version`Required  | `string` |
| `effective_at`Required  | `string` \| `null` |
| `already_paid_term`Optional  | [`PaidCapacityTerm`](https://startwave.io/docs/api/#schema-PaidCapacityTerm) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "effective_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Effective At"
    },
    "already_paid_term": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/PaidCapacityTerm"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "rate_version",
    "effective_at"
  ],
  "title": "StopCapacityReview"
}
```

`StopFollowupsIn`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` Min length: `1` · Max length: `128`  |
| `expected_revision`Required  | `integer` Minimum: `1.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 128,
      "minLength": 1,
      "title": "Id"
    },
    "expected_revision": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Expected Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "expected_revision"
  ],
  "title": "StopFollowupsIn"
}
```

`SubscriptionChange`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `kind`Required  | `"initial" \| "upgrade" \| "decrease" \| "cancel" \| "restore" \| "renewal"` |
| `state`Required  | `"reviewed" \| "submitted" \| "pending" \| "completed" \| "canceled" \| "blocked"` |
| `invoice`Required  | `string` \| `null` |
| `created_at`Required  | `number` |
| `confirmed_at`Required  | `number` \| `null` |
| `error`Required  | `string` |
| `revision`Required  | `integer` |
| `daily_sends`Required  | `integer` |
| `reviewed_method`Required  | [`ReviewedCard`](https://startwave.io/docs/api/#schema-ReviewedCard) \| `null` |
| `maximum_cents`Required  | `integer` |
| `credit_cents`Required  | `integer` |
| `balance_credit_cents`Required  | `integer` |
| `net_obligation_cents`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `effective_at`Required  | `integer` \| `null` |
| `expires_at`Required  | `integer` |
| `policy`Required  | `string` |
| `cancel_requested`Required  | `boolean` |
| `affected_conversations`Required  | `integer` |
| `provisioning_policy`Required  | `string` \| `null` |
| `provisioning`Required  | [`ProvisioningReview`](https://startwave.io/docs/api/#schema-ProvisioningReview) \| `null` |
| `mailbox_plan`Required  | [`MailboxPlan`](https://startwave.io/docs/api/#schema-MailboxPlan) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "kind": {
      "type": "string",
      "enum": [
        "initial",
        "upgrade",
        "decrease",
        "cancel",
        "restore",
        "renewal"
      ],
      "title": "Kind"
    },
    "state": {
      "type": "string",
      "enum": [
        "reviewed",
        "submitted",
        "pending",
        "completed",
        "canceled",
        "blocked"
      ],
      "title": "State"
    },
    "invoice": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invoice"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "confirmed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Confirmed At"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "daily_sends": {
      "type": "integer",
      "title": "Daily Sends"
    },
    "reviewed_method": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedCard"
        },
        {
          "type": "null"
        }
      ]
    },
    "maximum_cents": {
      "type": "integer",
      "title": "Maximum Cents"
    },
    "credit_cents": {
      "type": "integer",
      "title": "Credit Cents"
    },
    "balance_credit_cents": {
      "type": "integer",
      "title": "Balance Credit Cents"
    },
    "net_obligation_cents": {
      "type": "integer",
      "title": "Net Obligation Cents"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "effective_at": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Effective At"
    },
    "expires_at": {
      "type": "integer",
      "title": "Expires At"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "cancel_requested": {
      "type": "boolean",
      "title": "Cancel Requested"
    },
    "affected_conversations": {
      "type": "integer",
      "title": "Affected Conversations"
    },
    "provisioning_policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Policy"
    },
    "provisioning": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ProvisioningReview"
        },
        {
          "type": "null"
        }
      ]
    },
    "mailbox_plan": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MailboxPlan"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "kind",
    "state",
    "invoice",
    "created_at",
    "confirmed_at",
    "error",
    "revision",
    "daily_sends",
    "reviewed_method",
    "maximum_cents",
    "credit_cents",
    "balance_credit_cents",
    "net_obligation_cents",
    "term_cents",
    "effective_at",
    "expires_at",
    "policy",
    "cancel_requested",
    "affected_conversations",
    "provisioning_policy",
    "provisioning",
    "mailbox_plan"
  ],
  "title": "SubscriptionChange"
}
```

`SubscriptionChangeStatus`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `kind`Required  | `"initial" \| "upgrade" \| "decrease" \| "cancel" \| "restore" \| "renewal"` |
| `state`Required  | `"reviewed" \| "submitted" \| "pending" \| "completed" \| "canceled" \| "blocked"` |
| `invoice`Required  | `string` \| `null` |
| `created_at`Required  | `number` |
| `confirmed_at`Required  | `number` \| `null` |
| `error`Required  | `string` |
| `revision`Required  | `integer` |
| `daily_sends`Required  | `integer` |
| `reviewed_method`Required  | [`ReviewedCard`](https://startwave.io/docs/api/#schema-ReviewedCard) \| `null` |
| `maximum_cents`Required  | `integer` |
| `credit_cents`Required  | `integer` |
| `balance_credit_cents`Required  | `integer` |
| `net_obligation_cents`Required  | `integer` |
| `term_cents`Required  | `integer` |
| `effective_at`Required  | `integer` \| `null` |
| `expires_at`Required  | `integer` |
| `policy`Required  | `string` |
| `cancel_requested`Required  | `boolean` |
| `affected_conversations`Required  | `integer` |
| `provisioning_policy`Required  | `string` \| `null` |
| `provisioning`Required  | [`ProvisioningReview`](https://startwave.io/docs/api/#schema-ProvisioningReview) \| `null` |
| `mailbox_plan`Required  | [`MailboxPlan`](https://startwave.io/docs/api/#schema-MailboxPlan) \| `null` |
| `provisioning_status`Required  | [`ProvisioningStatus`](https://startwave.io/docs/api/#schema-ProvisioningStatus) \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "kind": {
      "type": "string",
      "enum": [
        "initial",
        "upgrade",
        "decrease",
        "cancel",
        "restore",
        "renewal"
      ],
      "title": "Kind"
    },
    "state": {
      "type": "string",
      "enum": [
        "reviewed",
        "submitted",
        "pending",
        "completed",
        "canceled",
        "blocked"
      ],
      "title": "State"
    },
    "invoice": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invoice"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "confirmed_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Confirmed At"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "daily_sends": {
      "type": "integer",
      "title": "Daily Sends"
    },
    "reviewed_method": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedCard"
        },
        {
          "type": "null"
        }
      ]
    },
    "maximum_cents": {
      "type": "integer",
      "title": "Maximum Cents"
    },
    "credit_cents": {
      "type": "integer",
      "title": "Credit Cents"
    },
    "balance_credit_cents": {
      "type": "integer",
      "title": "Balance Credit Cents"
    },
    "net_obligation_cents": {
      "type": "integer",
      "title": "Net Obligation Cents"
    },
    "term_cents": {
      "type": "integer",
      "title": "Term Cents"
    },
    "effective_at": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Effective At"
    },
    "expires_at": {
      "type": "integer",
      "title": "Expires At"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "cancel_requested": {
      "type": "boolean",
      "title": "Cancel Requested"
    },
    "affected_conversations": {
      "type": "integer",
      "title": "Affected Conversations"
    },
    "provisioning_policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Policy"
    },
    "provisioning": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ProvisioningReview"
        },
        {
          "type": "null"
        }
      ]
    },
    "mailbox_plan": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MailboxPlan"
        },
        {
          "type": "null"
        }
      ]
    },
    "provisioning_status": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ProvisioningStatus"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "kind",
    "state",
    "invoice",
    "created_at",
    "confirmed_at",
    "error",
    "revision",
    "daily_sends",
    "reviewed_method",
    "maximum_cents",
    "credit_cents",
    "balance_credit_cents",
    "net_obligation_cents",
    "term_cents",
    "effective_at",
    "expires_at",
    "policy",
    "cancel_requested",
    "affected_conversations",
    "provisioning_policy",
    "provisioning",
    "mailbox_plan",
    "provisioning_status"
  ],
  "title": "SubscriptionChangeStatus"
}
```

`SubscriptionConfirmation`

`object`

| Field | Type and constraints |
| --- | --- |
| `enabled`Required  | `boolean` |
| `mailbox_recovery`Required  | [`MailboxRecovery`](https://startwave.io/docs/api/#schema-MailboxRecovery) |
| `provisioning_available`Required  | `boolean` |
| `provisioning_blocker`Required  | `string` \| `null` |
| `payment_mode`Required  | `"live" \| "test"` \| `null` |
| `provisioning_funding_source`Required  | `"owner_test" \| "customer_live"` \| `null` |
| `observed_at`Required  | `number` |
| `policy`Required  | `string` |
| `pack_sends`Required  | `integer` |
| `pack_cents`Required  | `integer` |
| `maximum_sends`Required  | `integer` |
| `term_seconds`Required  | `integer` |
| `currency`Required  | `"usd"` |
| `revision`Required  | `integer` |
| `current`Required  | [`SubscriptionCurrent`](https://startwave.io/docs/api/#schema-SubscriptionCurrent) \| `null` |
| `changes`Required  | array of [`SubscriptionChangeStatus`](https://startwave.io/docs/api/#schema-SubscriptionChangeStatus) |
| `invoices`Required  | array of [`SubscriptionInvoice`](https://startwave.io/docs/api/#schema-SubscriptionInvoice) |
| `changes_next_cursor`Required  | `string` \| `null` |
| `invoices_next_cursor`Required  | `string` \| `null` |
| `outcome`Required  | [`SubscriptionOutcome`](https://startwave.io/docs/api/#schema-SubscriptionOutcome) |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "mailbox_recovery": {
      "$ref": "#/components/schemas/MailboxRecovery"
    },
    "provisioning_available": {
      "type": "boolean",
      "title": "Provisioning Available"
    },
    "provisioning_blocker": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Blocker"
    },
    "payment_mode": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "live",
            "test"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Payment Mode"
    },
    "provisioning_funding_source": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "owner_test",
            "customer_live"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Funding Source"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "pack_sends": {
      "type": "integer",
      "title": "Pack Sends"
    },
    "pack_cents": {
      "type": "integer",
      "title": "Pack Cents"
    },
    "maximum_sends": {
      "type": "integer",
      "title": "Maximum Sends"
    },
    "term_seconds": {
      "type": "integer",
      "title": "Term Seconds"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "current": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SubscriptionCurrent"
        },
        {
          "type": "null"
        }
      ]
    },
    "changes": {
      "items": {
        "$ref": "#/components/schemas/SubscriptionChangeStatus"
      },
      "type": "array",
      "title": "Changes"
    },
    "invoices": {
      "items": {
        "$ref": "#/components/schemas/SubscriptionInvoice"
      },
      "type": "array",
      "title": "Invoices"
    },
    "changes_next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Changes Next Cursor"
    },
    "invoices_next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invoices Next Cursor"
    },
    "outcome": {
      "$ref": "#/components/schemas/SubscriptionOutcome"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "enabled",
    "mailbox_recovery",
    "provisioning_available",
    "provisioning_blocker",
    "payment_mode",
    "provisioning_funding_source",
    "observed_at",
    "policy",
    "pack_sends",
    "pack_cents",
    "maximum_sends",
    "term_seconds",
    "currency",
    "revision",
    "current",
    "changes",
    "invoices",
    "changes_next_cursor",
    "invoices_next_cursor",
    "outcome"
  ],
  "title": "SubscriptionConfirmation"
}
```

`SubscriptionCurrent`

`object`

| Field | Type and constraints |
| --- | --- |
| `paid_quantity`Required  | `integer` |
| `period_start`Required  | `integer` \| `null` |
| `period_end`Required  | `integer` \| `null` |
| `next_quantity`Required  | `integer` |
| `cancel_at_end`Required  | `0 \| 1` |
| `paid_invoice`Required  | `string` \| `null` |
| `observed_at`Required  | `number` |
| `review_required`Required  | `string` |
| `error`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "paid_quantity": {
      "type": "integer",
      "title": "Paid Quantity"
    },
    "period_start": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Period Start"
    },
    "period_end": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Period End"
    },
    "next_quantity": {
      "type": "integer",
      "title": "Next Quantity"
    },
    "cancel_at_end": {
      "type": "integer",
      "enum": [
        0,
        1
      ],
      "title": "Cancel At End"
    },
    "paid_invoice": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Paid Invoice"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "review_required": {
      "type": "string",
      "title": "Review Required"
    },
    "error": {
      "type": "string",
      "title": "Error"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "paid_quantity",
    "period_start",
    "period_end",
    "next_quantity",
    "cancel_at_end",
    "paid_invoice",
    "observed_at",
    "review_required",
    "error"
  ],
  "title": "SubscriptionCurrent"
}
```

`SubscriptionInvoice`

`object`

| Field | Type and constraints |
| --- | --- |
| `invoice`Required  | `string` |
| `quantity`Required  | `integer` |
| `period_start`Required  | `integer` |
| `period_end`Required  | `integer` |
| `amount_cents`Required  | `integer` |
| `credit_cents`Required  | `integer` |
| `fulfillment`Required  | `"pending" \| "applied" \| "review"` |
| `review_required`Required  | `string` |
| `payment_review`Required  | `string` |
| `card_cents`Required  | `integer` |
| `balance_credit_cents`Required  | `integer` |
| `service_decision`Required  | `"retain_original_service" \| "withhold_service"` \| `null` |
| `refunded_cents`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "invoice": {
      "type": "string",
      "title": "Invoice"
    },
    "quantity": {
      "type": "integer",
      "title": "Quantity"
    },
    "period_start": {
      "type": "integer",
      "title": "Period Start"
    },
    "period_end": {
      "type": "integer",
      "title": "Period End"
    },
    "amount_cents": {
      "type": "integer",
      "title": "Amount Cents"
    },
    "credit_cents": {
      "type": "integer",
      "title": "Credit Cents"
    },
    "fulfillment": {
      "type": "string",
      "enum": [
        "pending",
        "applied",
        "review"
      ],
      "title": "Fulfillment"
    },
    "review_required": {
      "type": "string",
      "title": "Review Required"
    },
    "payment_review": {
      "type": "string",
      "title": "Payment Review"
    },
    "card_cents": {
      "type": "integer",
      "title": "Card Cents"
    },
    "balance_credit_cents": {
      "type": "integer",
      "title": "Balance Credit Cents"
    },
    "service_decision": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "retain_original_service",
            "withhold_service"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Service Decision"
    },
    "refunded_cents": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Refunded Cents"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "invoice",
    "quantity",
    "period_start",
    "period_end",
    "amount_cents",
    "credit_cents",
    "fulfillment",
    "review_required",
    "payment_review",
    "card_cents",
    "balance_credit_cents",
    "service_decision",
    "refunded_cents"
  ],
  "title": "SubscriptionInvoice"
}
```

`SubscriptionOutcome`

`object`

| Field | Type and constraints |
| --- | --- |
| `status`Optional  | `string` \| `null` |
| `funded`Optional  | `boolean` |
| `fulfillment`Optional  | `"pending" \| "applied" \| "review"` |
| `error`Optional  | `string` |
| `provisioning`Optional  | `boolean` |

Complete schema

JSON schema

```
{
  "properties": {
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Status"
    },
    "funded": {
      "type": "boolean",
      "title": "Funded"
    },
    "fulfillment": {
      "type": "string",
      "enum": [
        "pending",
        "applied",
        "review"
      ],
      "title": "Fulfillment"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "provisioning": {
      "type": "boolean",
      "title": "Provisioning"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "SubscriptionOutcome"
}
```

`SubscriptionRecovery`

`object`

| Field | Type and constraints |
| --- | --- |
| `invoice`Required  | `string` |
| `url`Required  | `string` |
| `amount_cents`Required  | `integer` |
| `period_start`Required  | `integer` |
| `period_end`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "invoice": {
      "type": "string",
      "title": "Invoice"
    },
    "url": {
      "type": "string",
      "title": "Url"
    },
    "amount_cents": {
      "type": "integer",
      "title": "Amount Cents"
    },
    "period_start": {
      "type": "integer",
      "title": "Period Start"
    },
    "period_end": {
      "type": "integer",
      "title": "Period End"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "invoice",
    "url",
    "amount_cents",
    "period_start",
    "period_end"
  ],
  "title": "SubscriptionRecovery"
}
```

`SubscriptionSnapshot`

`object`

| Field | Type and constraints |
| --- | --- |
| `enabled`Required  | `boolean` |
| `mailbox_recovery`Required  | [`MailboxRecovery`](https://startwave.io/docs/api/#schema-MailboxRecovery) |
| `provisioning_available`Required  | `boolean` |
| `provisioning_blocker`Required  | `string` \| `null` |
| `payment_mode`Required  | `"live" \| "test"` \| `null` |
| `provisioning_funding_source`Required  | `"owner_test" \| "customer_live"` \| `null` |
| `observed_at`Required  | `number` |
| `policy`Required  | `string` |
| `pack_sends`Required  | `integer` |
| `pack_cents`Required  | `integer` |
| `maximum_sends`Required  | `integer` |
| `term_seconds`Required  | `integer` |
| `currency`Required  | `"usd"` |
| `revision`Required  | `integer` |
| `current`Required  | [`SubscriptionCurrent`](https://startwave.io/docs/api/#schema-SubscriptionCurrent) \| `null` |
| `changes`Required  | array of [`SubscriptionChangeStatus`](https://startwave.io/docs/api/#schema-SubscriptionChangeStatus) |
| `invoices`Required  | array of [`SubscriptionInvoice`](https://startwave.io/docs/api/#schema-SubscriptionInvoice) |
| `changes_next_cursor`Required  | `string` \| `null` |
| `invoices_next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled"
    },
    "mailbox_recovery": {
      "$ref": "#/components/schemas/MailboxRecovery"
    },
    "provisioning_available": {
      "type": "boolean",
      "title": "Provisioning Available"
    },
    "provisioning_blocker": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Blocker"
    },
    "payment_mode": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "live",
            "test"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Payment Mode"
    },
    "provisioning_funding_source": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "owner_test",
            "customer_live"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Provisioning Funding Source"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "pack_sends": {
      "type": "integer",
      "title": "Pack Sends"
    },
    "pack_cents": {
      "type": "integer",
      "title": "Pack Cents"
    },
    "maximum_sends": {
      "type": "integer",
      "title": "Maximum Sends"
    },
    "term_seconds": {
      "type": "integer",
      "title": "Term Seconds"
    },
    "currency": {
      "type": "string",
      "const": "usd",
      "title": "Currency"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "current": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/SubscriptionCurrent"
        },
        {
          "type": "null"
        }
      ]
    },
    "changes": {
      "items": {
        "$ref": "#/components/schemas/SubscriptionChangeStatus"
      },
      "type": "array",
      "title": "Changes"
    },
    "invoices": {
      "items": {
        "$ref": "#/components/schemas/SubscriptionInvoice"
      },
      "type": "array",
      "title": "Invoices"
    },
    "changes_next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Changes Next Cursor"
    },
    "invoices_next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invoices Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "enabled",
    "mailbox_recovery",
    "provisioning_available",
    "provisioning_blocker",
    "payment_mode",
    "provisioning_funding_source",
    "observed_at",
    "policy",
    "pack_sends",
    "pack_cents",
    "maximum_sends",
    "term_seconds",
    "currency",
    "revision",
    "current",
    "changes",
    "invoices",
    "changes_next_cursor",
    "invoices_next_cursor"
  ],
  "title": "SubscriptionSnapshot"
}
```

`SuppressionDefaults`

`object`

| Field | Type and constraints |
| --- | --- |
| `reason`Required  | `string` Min length: `1` · Max length: `500` · Pattern: `"\\S"`  |
| `evidence`Required  | `string` Min length: `1` · Max length: `2000` · Pattern: `"\\S"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "reason": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Reason"
    },
    "evidence": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 1,
      "pattern": "\\S",
      "title": "Evidence"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "reason",
    "evidence"
  ],
  "title": "SuppressionDefaults"
}
```

`SuppressionExport`

`object`

| Field | Type and constraints |
| --- | --- |
| `scope`Required  | `"email" \| "domain"` |
| `max_bytes`Optional  | `integer` Default: `67108864` · Minimum: `1.0` · Maximum: `4294967296.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "email",
        "domain"
      ],
      "title": "Scope"
    },
    "max_bytes": {
      "type": "integer",
      "maximum": 4294967296.0,
      "minimum": 1.0,
      "title": "Max Bytes",
      "default": 67108864
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "scope"
  ],
  "title": "SuppressionExport"
}
```

`UnavailableInboundMessage`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `direction`Required  | `"in" \| "out"` |
| `authorship`Required  | `"external" \| "campaign" \| "human" \| "automation"` |
| `occurred_at`Required  | `number` |
| `event_id`Required  | `string` |
| `content`Required  | `null` |
| `kind`Required  | `"unavailable"` |
| `classification`Optional  | [`ReplyClassificationObservation`](https://startwave.io/docs/api/#schema-ReplyClassificationObservation) \| [`AgentClassificationObservation`](https://startwave.io/docs/api/#schema-AgentClassificationObservation) |
| `participants`Required  | [`MessageParticipants`](https://startwave.io/docs/api/#schema-MessageParticipants) \| `null` |
| `subject`Optional  | `string` |
| `attachments`Optional  | array of [`MessageAttachment`](https://startwave.io/docs/api/#schema-MessageAttachment) |
| `attachments_state`Optional  | `"available" \| "none" \| "unavailable" \| "original_only"` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "direction": {
      "type": "string",
      "enum": [
        "in",
        "out"
      ],
      "title": "Direction"
    },
    "authorship": {
      "type": "string",
      "enum": [
        "external",
        "campaign",
        "human",
        "automation"
      ],
      "title": "Authorship"
    },
    "occurred_at": {
      "type": "number",
      "title": "Occurred At"
    },
    "event_id": {
      "type": "string",
      "title": "Event Id"
    },
    "content": {
      "type": "null",
      "title": "Content"
    },
    "kind": {
      "type": "string",
      "const": "unavailable",
      "title": "Kind"
    },
    "classification": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReplyClassificationObservation"
        },
        {
          "$ref": "#/components/schemas/AgentClassificationObservation"
        }
      ],
      "title": "Classification"
    },
    "participants": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/MessageParticipants"
        },
        {
          "type": "null"
        }
      ]
    },
    "subject": {
      "type": "string",
      "title": "Subject"
    },
    "attachments": {
      "items": {
        "$ref": "#/components/schemas/MessageAttachment"
      },
      "type": "array",
      "title": "Attachments"
    },
    "attachments_state": {
      "type": "string",
      "enum": [
        "available",
        "none",
        "unavailable",
        "original_only"
      ],
      "title": "Attachments State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "direction",
    "authorship",
    "occurred_at",
    "event_id",
    "content",
    "kind",
    "participants"
  ],
  "title": "UnavailableInboundMessage"
}
```

`UnavailableOutboundMessage`

`object`

| Field | Type and constraints |
| --- | --- |
| `seq`Required  | `integer` |
| `direction`Required  | `"in" \| "out"` |
| `authorship`Required  | `"external" \| "campaign" \| "human" \| "automation"` |
| `occurred_at`Required  | `number` |
| `content`Required  | `null` |
| `state`Required  | `"unavailable"` |

Complete schema

JSON schema

```
{
  "properties": {
    "seq": {
      "type": "integer",
      "title": "Seq"
    },
    "direction": {
      "type": "string",
      "enum": [
        "in",
        "out"
      ],
      "title": "Direction"
    },
    "authorship": {
      "type": "string",
      "enum": [
        "external",
        "campaign",
        "human",
        "automation"
      ],
      "title": "Authorship"
    },
    "occurred_at": {
      "type": "number",
      "title": "Occurred At"
    },
    "content": {
      "type": "null",
      "title": "Content"
    },
    "state": {
      "type": "string",
      "const": "unavailable",
      "title": "State"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "seq",
    "direction",
    "authorship",
    "occurred_at",
    "content",
    "state"
  ],
  "title": "UnavailableOutboundMessage"
}
```

`ValidationError`

`object`

| Field | Type and constraints |
| --- | --- |
| `loc`Required  | array of `string` \| `integer` |
| `msg`Required  | `string` |
| `type`Required  | `string` |
| `input`Optional  | `value` |
| `ctx`Optional  | `object` |

Complete schema

JSON schema

```
{
  "properties": {
    "loc": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "integer"
          }
        ]
      },
      "type": "array",
      "title": "Location"
    },
    "msg": {
      "type": "string",
      "title": "Message"
    },
    "type": {
      "type": "string",
      "title": "Error Type"
    },
    "input": {
      "title": "Input"
    },
    "ctx": {
      "type": "object",
      "title": "Context"
    }
  },
  "type": "object",
  "required": [
    "loc",
    "msg",
    "type"
  ],
  "title": "ValidationError"
}
```

`VerificationBatchView`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `campaign`Required  | `string` |
| `revision`Required  | `integer` |
| `policy`Required  | `string` |
| `rate_version`Required  | `string` |
| `price_cents`Required  | `integer` |
| `maximum_cents`Required  | `integer` |
| `authorized_cents`Required  | `integer` |
| `mode`Required  | `"manual" \| "automatic"` |
| `target_count`Required  | `integer` \| `null` |
| `completed_count`Required  | `integer` |
| `state`Required  | `"active" \| "complete" \| "blocked" \| "cancelled"` |
| `error`Required  | `string` |
| `created_at`Required  | `number` |
| `deadline`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "revision": {
      "type": "integer",
      "title": "Revision"
    },
    "policy": {
      "type": "string",
      "title": "Policy"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "price_cents": {
      "type": "integer",
      "title": "Price Cents"
    },
    "maximum_cents": {
      "type": "integer",
      "title": "Maximum Cents"
    },
    "authorized_cents": {
      "type": "integer",
      "title": "Authorized Cents"
    },
    "mode": {
      "type": "string",
      "enum": [
        "manual",
        "automatic"
      ],
      "title": "Mode"
    },
    "target_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Count"
    },
    "completed_count": {
      "type": "integer",
      "title": "Completed Count"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "complete",
        "blocked",
        "cancelled"
      ],
      "title": "State"
    },
    "error": {
      "type": "string",
      "title": "Error"
    },
    "created_at": {
      "type": "number",
      "title": "Created At"
    },
    "deadline": {
      "type": "number",
      "title": "Deadline"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "campaign",
    "revision",
    "policy",
    "rate_version",
    "price_cents",
    "maximum_cents",
    "authorized_cents",
    "mode",
    "target_count",
    "completed_count",
    "state",
    "error",
    "created_at",
    "deadline"
  ],
  "title": "VerificationBatchView"
}
```

`VerificationCohort`

`object`

| Field | Type and constraints |
| --- | --- |
| `verdict`Required  | `"valid" \| "invalid" \| "catch_all" \| "risky" \| "unknown" \| "unverified"` |
| `accepted_enrollments`Required  | `integer` Minimum: `0.0`  |
| `human_replied_enrollments`Required  | `integer` Minimum: `0.0`  |
| `unclassified_replied_enrollments`Required  | `integer` Minimum: `0.0`  |
| `human_reply_rate`Required  | `number` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "verdict": {
      "type": "string",
      "enum": [
        "valid",
        "invalid",
        "catch_all",
        "risky",
        "unknown",
        "unverified"
      ],
      "title": "Verdict"
    },
    "accepted_enrollments": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Accepted Enrollments"
    },
    "human_replied_enrollments": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Human Replied Enrollments"
    },
    "unclassified_replied_enrollments": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unclassified Replied Enrollments"
    },
    "human_reply_rate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Human Reply Rate"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "verdict",
    "accepted_enrollments",
    "human_replied_enrollments",
    "unclassified_replied_enrollments",
    "human_reply_rate"
  ],
  "title": "VerificationCohort"
}
```

`VerificationCohorts`

`object`

| Field | Type and constraints |
| --- | --- |
| `cohort_start`Required  | `number` |
| `cohort_end`Required  | `number` |
| `observed_at`Required  | `number` |
| `items`Required  | array of [`VerificationCohort`](https://startwave.io/docs/api/#schema-VerificationCohort) Max items: `6`  |
| `definition`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "cohort_start": {
      "type": "number",
      "title": "Cohort Start"
    },
    "cohort_end": {
      "type": "number",
      "title": "Cohort End"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "items": {
      "items": {
        "$ref": "#/components/schemas/VerificationCohort"
      },
      "type": "array",
      "maxItems": 6,
      "title": "Items"
    },
    "definition": {
      "type": "string",
      "title": "Definition"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "cohort_start",
    "cohort_end",
    "observed_at",
    "items",
    "definition"
  ],
  "title": "VerificationCohorts"
}
```

`VerificationUsageGroup`

`object`

| Field | Type and constraints |
| --- | --- |
| `day`Required  | `string` |
| `campaign`Required  | `string` |
| `campaign_name`Optional  | `string` \| `null` |
| `rate_version`Required  | `string` |
| `posted_count`Required  | `integer` |
| `posted_cents`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "day": {
      "type": "string",
      "title": "Day"
    },
    "campaign": {
      "type": "string",
      "title": "Campaign"
    },
    "campaign_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign Name"
    },
    "rate_version": {
      "type": "string",
      "title": "Rate Version"
    },
    "posted_count": {
      "type": "integer",
      "title": "Posted Count"
    },
    "posted_cents": {
      "type": "integer",
      "title": "Posted Cents"
    }
  },
  "type": "object",
  "required": [
    "day",
    "campaign",
    "rate_version",
    "posted_count",
    "posted_cents"
  ],
  "title": "VerificationUsageGroup"
}
```

`VerificationUsagePage`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`VerificationUsageGroup`](https://startwave.io/docs/api/#schema-VerificationUsageGroup) |
| `next_cursor`Required  | `string` \| `null` |
| `totals`Required  | [`VerificationUsageTotals`](https://startwave.io/docs/api/#schema-VerificationUsageTotals) |
| `pending`Required  | [`VerificationUsagePending`](https://startwave.io/docs/api/#schema-VerificationUsagePending) |
| `start`Required  | `number` |
| `end`Required  | `number` |
| `campaign`Required  | `string` \| `null` |
| `currency`Required  | `"USD"` |
| `amount_unit`Required  | `"cents"` |
| `observed_at`Required  | `number` |
| `semantics`Required  | `"posted_verification_events_not_holds_or_reused_evidence"` |
| `day_clock`Required  | `"UTC"` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/VerificationUsageGroup"
      },
      "type": "array",
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    },
    "totals": {
      "$ref": "#/components/schemas/VerificationUsageTotals"
    },
    "pending": {
      "$ref": "#/components/schemas/VerificationUsagePending"
    },
    "start": {
      "type": "number",
      "title": "Start"
    },
    "end": {
      "type": "number",
      "title": "End"
    },
    "campaign": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Campaign"
    },
    "currency": {
      "type": "string",
      "const": "USD",
      "title": "Currency"
    },
    "amount_unit": {
      "type": "string",
      "const": "cents",
      "title": "Amount Unit"
    },
    "observed_at": {
      "type": "number",
      "title": "Observed At"
    },
    "semantics": {
      "type": "string",
      "const": "posted_verification_events_not_holds_or_reused_evidence",
      "title": "Semantics"
    },
    "day_clock": {
      "type": "string",
      "const": "UTC",
      "title": "Day Clock"
    }
  },
  "type": "object",
  "required": [
    "items",
    "next_cursor",
    "totals",
    "pending",
    "start",
    "end",
    "campaign",
    "currency",
    "amount_unit",
    "observed_at",
    "semantics",
    "day_clock"
  ],
  "title": "VerificationUsagePage"
}
```

`VerificationUsagePending`

`object`

| Field | Type and constraints |
| --- | --- |
| `held_count`Required  | `integer` |
| `held_cents`Required  | `integer` |
| `unknown_count`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "held_count": {
      "type": "integer",
      "title": "Held Count"
    },
    "held_cents": {
      "type": "integer",
      "title": "Held Cents"
    },
    "unknown_count": {
      "type": "integer",
      "title": "Unknown Count"
    }
  },
  "type": "object",
  "required": [
    "held_count",
    "held_cents",
    "unknown_count"
  ],
  "title": "VerificationUsagePending"
}
```

`VerificationUsageTotals`

`object`

| Field | Type and constraints |
| --- | --- |
| `posted_count`Required  | `integer` |
| `posted_cents`Required  | `integer` |
| `unattributed_cents`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "posted_count": {
      "type": "integer",
      "title": "Posted Count"
    },
    "posted_cents": {
      "type": "integer",
      "title": "Posted Cents"
    },
    "unattributed_cents": {
      "type": "integer",
      "title": "Unattributed Cents"
    }
  },
  "type": "object",
  "required": [
    "posted_count",
    "posted_cents",
    "unattributed_cents"
  ],
  "title": "VerificationUsageTotals"
}
```

`VerificationView`

`object`

| Field | Type and constraints |
| --- | --- |
| `required`Required  | `boolean` |
| `state`Required  | `string` |
| `verdict`Optional  | `string` \| `null` |
| `checked_at`Optional  | `number` \| `null` |
| `expires_at`Optional  | `number` \| `null` |
| `dispatch_verdict`Optional  | `string` \| `null` |
| `dispatch_policy`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "required": {
      "type": "boolean",
      "title": "Required"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "verdict": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Verdict"
    },
    "checked_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Checked At"
    },
    "expires_at": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Expires At"
    },
    "dispatch_verdict": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Dispatch Verdict"
    },
    "dispatch_policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Dispatch Policy"
    }
  },
  "type": "object",
  "required": [
    "required",
    "state"
  ],
  "title": "VerificationView"
}
```

`WalletUsage`

`object`

| Field | Type and constraints |
| --- | --- |
| `balance_cents`Required  | `integer` |
| `debt_cents`Required  | `integer` |
| `state`Required  | `string` |
| `held_cents`Required  | `integer` |
| `spendable_cents`Required  | `integer` |
| `entries`Required  | array of [`LedgerEntry`](https://startwave.io/docs/api/#schema-LedgerEntry) |

Complete schema

JSON schema

```
{
  "properties": {
    "balance_cents": {
      "type": "integer",
      "title": "Balance Cents"
    },
    "debt_cents": {
      "type": "integer",
      "title": "Debt Cents"
    },
    "state": {
      "type": "string",
      "title": "State"
    },
    "held_cents": {
      "type": "integer",
      "title": "Held Cents"
    },
    "spendable_cents": {
      "type": "integer",
      "title": "Spendable Cents"
    },
    "entries": {
      "items": {
        "$ref": "#/components/schemas/LedgerEntry"
      },
      "type": "array",
      "title": "Entries"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "balance_cents",
    "debt_cents",
    "state",
    "held_cents",
    "spendable_cents",
    "entries"
  ],
  "title": "WalletUsage"
}
```

`Window`

`object`

| Field | Type and constraints |
| --- | --- |
| `timezone`Optional  | `string` Default: `"UTC"`  |
| `weekdays`Optional  | array of `integer` Min items: `1` · Max items: `7`  |
| `start`Optional  | `string` Default: `"00:00"`  |
| `end`Optional  | `string` Default: `"24:00"`  |

Complete schema

JSON schema

```
{
  "properties": {
    "timezone": {
      "type": "string",
      "title": "Timezone",
      "default": "UTC"
    },
    "weekdays": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "maxItems": 7,
      "minItems": 1,
      "title": "Weekdays"
    },
    "start": {
      "type": "string",
      "title": "Start",
      "default": "00:00"
    },
    "end": {
      "type": "string",
      "title": "End",
      "default": "24:00"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "Window"
}
```

`WindowActivity`

`object`

| Field | Type and constraints |
| --- | --- |
| `elapsed_seconds`Required  | `number` |
| `active_seconds`Required  | `number` |
| `inactive_seconds`Required  | `number` |
| `unknown_seconds`Required  | `number` |
| `state`Required  | `"not_started" \| "unavailable" \| "unknown" \| "active" \| "partial" \| "inactive"` |
| `reason`Optional  | `string` Present only when activity is unavailable. |

Complete schema

JSON schema

```
{
  "properties": {
    "elapsed_seconds": {
      "type": "number",
      "title": "Elapsed Seconds"
    },
    "active_seconds": {
      "type": "number",
      "title": "Active Seconds"
    },
    "inactive_seconds": {
      "type": "number",
      "title": "Inactive Seconds"
    },
    "unknown_seconds": {
      "type": "number",
      "title": "Unknown Seconds"
    },
    "state": {
      "type": "string",
      "enum": [
        "not_started",
        "unavailable",
        "unknown",
        "active",
        "partial",
        "inactive"
      ],
      "title": "State"
    },
    "reason": {
      "type": "string",
      "title": "Reason",
      "description": "Present only when activity is unavailable."
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "elapsed_seconds",
    "active_seconds",
    "inactive_seconds",
    "unknown_seconds",
    "state"
  ],
  "title": "WindowActivity"
}
```

`WindowAttempts`

`object`

| Field | Type and constraints |
| --- | --- |
| `reserved`Required  | `integer` |
| `dispatch_recorded`Required  | `integer` |
| `accepted`Required  | `integer` |
| `not_accepted`Required  | `integer` |
| `unknown`Required  | `integer` |
| `in_progress`Required  | `integer` |
| `requeued`Required  | `integer` |
| `accepted_timing_unproven`Required  | `integer` |
| `dispatch_outside_window`Required  | `integer` |

Complete schema

JSON schema

```
{
  "properties": {
    "reserved": {
      "type": "integer",
      "title": "Reserved"
    },
    "dispatch_recorded": {
      "type": "integer",
      "title": "Dispatch Recorded"
    },
    "accepted": {
      "type": "integer",
      "title": "Accepted"
    },
    "not_accepted": {
      "type": "integer",
      "title": "Not Accepted"
    },
    "unknown": {
      "type": "integer",
      "title": "Unknown"
    },
    "in_progress": {
      "type": "integer",
      "title": "In Progress"
    },
    "requeued": {
      "type": "integer",
      "title": "Requeued"
    },
    "accepted_timing_unproven": {
      "type": "integer",
      "title": "Accepted Timing Unproven"
    },
    "dispatch_outside_window": {
      "type": "integer",
      "title": "Dispatch Outside Window"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "reserved",
    "dispatch_recorded",
    "accepted",
    "not_accepted",
    "unknown",
    "in_progress",
    "requeued",
    "accepted_timing_unproven",
    "dispatch_outside_window"
  ],
  "title": "WindowAttempts"
}
```

`WindowBlocker`

`object`

| Field | Type and constraints |
| --- | --- |
| `reason`Required  | `string` |
| `category`Required  | `string` |
| `observed_samples`Required  | `integer` |
| `first_observed_at`Required  | `number` |
| `last_observed_at`Required  | `number` |

Complete schema

JSON schema

```
{
  "properties": {
    "reason": {
      "type": "string",
      "title": "Reason"
    },
    "category": {
      "type": "string",
      "title": "Category"
    },
    "observed_samples": {
      "type": "integer",
      "title": "Observed Samples"
    },
    "first_observed_at": {
      "type": "number",
      "title": "First Observed At"
    },
    "last_observed_at": {
      "type": "number",
      "title": "Last Observed At"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "reason",
    "category",
    "observed_samples",
    "first_observed_at",
    "last_observed_at"
  ],
  "title": "WindowBlocker"
}
```

`WindowPressure`

`object`

| Field | Type and constraints |
| --- | --- |
| `local_date`Required  | `string` |
| `opens_at`Required  | `number` |
| `closes_at`Required  | `number` |
| `eligible_by_close`Required  | `integer` |
| `nominal_gap_seconds`Required  | `number` \| `null` |
| `pacing_slots_upper_bound`Required  | `integer` \| `null` |
| `carryover_lower_bound`Required  | `integer` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "local_date": {
      "type": "string",
      "title": "Local Date"
    },
    "opens_at": {
      "type": "number",
      "title": "Opens At"
    },
    "closes_at": {
      "type": "number",
      "title": "Closes At"
    },
    "eligible_by_close": {
      "type": "integer",
      "title": "Eligible By Close"
    },
    "nominal_gap_seconds": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Nominal Gap Seconds"
    },
    "pacing_slots_upper_bound": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pacing Slots Upper Bound"
    },
    "carryover_lower_bound": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Carryover Lower Bound"
    }
  },
  "type": "object",
  "required": [
    "local_date",
    "opens_at",
    "closes_at",
    "eligible_by_close",
    "nominal_gap_seconds",
    "pacing_slots_upper_bound",
    "carryover_lower_bound"
  ],
  "title": "WindowPressure"
}
```

`WorkExperience`

`object`

| Field | Type and constraints |
| --- | --- |
| `COMPANY_NAME`Optional  | `string` \| `null` |
| `POSITION`Optional  | `string` \| `null` |
| `COMPANY_IDENTIFIER`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_UID`Optional  | `string` \| `null` |
| `COMPANY_LINKEDIN_URL`Optional  | `string` \| `null` |
| `START_DATE`Optional  | `string` \| `null` |
| `END_DATE`Optional  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "COMPANY_NAME": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Name"
    },
    "POSITION": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Position"
    },
    "COMPANY_IDENTIFIER": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Identifier"
    },
    "COMPANY_LINKEDIN_UID": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Linkedin Uid"
    },
    "COMPANY_LINKEDIN_URL": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Company Linkedin Url"
    },
    "START_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "Start Date"
    },
    "END_DATE": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 65536
        },
        {
          "type": "null"
        }
      ],
      "title": "End Date"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "WorkExperience"
}
```

`WorkspaceMember`

`object`

| Field | Type and constraints |
| --- | --- |
| `id`Required  | `string` |
| `email`Required  | `string` |
| `role`Required  | `"owner" \| "operator" \| "member"` |
| `revision`Required  | `string` |

Complete schema

JSON schema

```
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "email": {
      "type": "string",
      "title": "Email"
    },
    "role": {
      "type": "string",
      "enum": [
        "owner",
        "operator",
        "member"
      ],
      "title": "Role"
    },
    "revision": {
      "type": "string",
      "title": "Revision"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "id",
    "email",
    "role",
    "revision"
  ],
  "title": "WorkspaceMember"
}
```

`WorkspaceMembers`

`object`

| Field | Type and constraints |
| --- | --- |
| `items`Required  | array of [`WorkspaceMember`](https://startwave.io/docs/api/#schema-WorkspaceMember) Max items: `200`  |
| `next_cursor`Required  | `string` \| `null` |

Complete schema

JSON schema

```
{
  "properties": {
    "items": {
      "items": {
        "$ref": "#/components/schemas/WorkspaceMember"
      },
      "type": "array",
      "maxItems": 200,
      "title": "Items"
    },
    "next_cursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Next Cursor"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "items",
    "next_cursor"
  ],
  "title": "WorkspaceMembers"
}
```

`sequencer__application__draft_operations__Counts`

`object`

| Field | Type and constraints |
| --- | --- |
| `contacts`Required  | `integer` \| `null` |
| `added`Required  | `integer` Minimum: `0.0`  |
| `excluded`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "contacts": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Contacts"
    },
    "added": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Added"
    },
    "excluded": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Excluded"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "contacts",
    "added",
    "excluded"
  ],
  "title": "Counts"
}
```

`sequencer__application__name_cleaning_api__Counts`

`object`

| Field | Type and constraints |
| --- | --- |
| `unchecked`Required  | `integer` Minimum: `0.0`  |
| `ready`Required  | `integer` Minimum: `0.0`  |
| `pending`Required  | `integer` Minimum: `0.0`  |
| `held`Required  | `integer` Minimum: `0.0`  |
| `unavailable`Required  | `integer` Minimum: `0.0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "unchecked": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unchecked"
    },
    "ready": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Ready"
    },
    "pending": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Pending"
    },
    "held": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Held"
    },
    "unavailable": {
      "type": "integer",
      "minimum": 0.0,
      "title": "Unavailable"
    }
  },
  "type": "object",
  "required": [
    "unchecked",
    "ready",
    "pending",
    "held",
    "unavailable"
  ],
  "title": "Counts"
}
```

`sequencer__application__send_projection__Counts`

`object`

| Field | Type and constraints |
| --- | --- |
| `first_touches`Optional  | `integer` Default: `0`  |
| `followups`Optional  | `integer` Default: `0`  |

Complete schema

JSON schema

```
{
  "properties": {
    "first_touches": {
      "type": "integer",
      "title": "First Touches",
      "default": 0
    },
    "followups": {
      "type": "integer",
      "title": "Followups",
      "default": 0
    }
  },
  "additionalProperties": false,
  "type": "object",
  "title": "Counts"
}
```

No models match. Try a model name or field.
