Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Nooks Sequencing Sequence States API
version: 0.1.0
description: "The Nooks Sequencing API provides programmatic access to manage sequences, tasks, templates, and prospect engagement workflows created using the Nooks SEP.\n\n## Authentication\n\nSend a bearer token in the `Authorization` header:\n```\nAuthorization: Bearer <token>\n```\n\nTwo token types are accepted on the same header — the API detects which\nformat you sent and validates accordingly. If you already have a token,\npaste it into the Authentication panel and skip the flow setup.\n\n### API keys\n\nLong-lived, workspace-scoped. Best for backend integrations and\nserver-to-server automation. Generate one from **Developer Settings →\nAPI Keys** in your Nooks workspace. API keys are prefixed `nooks-api-`\nand have full read/write access within the owning workspace.\n\n### OAuth 2.0 access tokens\n\nShort-lived (1 hour), user-scoped, scope-limited JWTs issued by\n`https://oauth.nooks.in` via the standard authorization-code + PKCE flow.\nBest for third-party apps acting on behalf of a specific user — the token\ncarries that user's identity and a subset of scopes the user consented\nto. Refresh tokens rotate every 90 days and are invalidated on first\nre-use (refresh-token reuse detection).\n\n**Endpoints:**\n\n- Authorize: `https://oauth.nooks.in/oauth/authorize`\n- Token: `https://oauth.nooks.in/oauth/token`\n- JWKS: `https://oauth.nooks.in/.well-known/jwks.json`\n- Server metadata (RFC 8414): `https://oauth.nooks.in/.well-known/oauth-authorization-server`\n\n**Available scopes:**\n\n| Scope | Grants |\n| --- | --- |\n| `prospects:read` | View your prospects |\n| `prospects:write` | Create and update prospects |\n| `sequences:read` | View your sequences |\n| `sequences:write` | Create and update sequences |\n| `sequence-steps:read` | View sequence steps |\n| `sequence-states:read` | View sequence enrollments |\n| `sequence-states:write` | Enroll prospects and manage enrollments |\n| `tasks:read` | View your tasks |\n| `tasks:write` | Create, update, complete, skip, and delete tasks |\n| `calls:read` | View your calls |\n| `calls:write` | Create and update calls |\n| `call-dispositions:read` | View call dispositions |\n| `emails:read` | View your emails |\n| `emails:write` | Create and update emails |\n| `mailboxes:read` | View connected mailboxes |\n| `users:read` | View users in your workspace |\n| `accounts:read` | View accounts (companies) in your workspace |\n| `notes:write` | Create notes on CRM-backed prospects and accounts |\n| `opportunities:read` | View opportunities (deals) in your workspace |\n| `search:read` | Search across your prospects, accounts, and other records |\n\n## Rate Limiting\nAPI requests are rate limited per workspace and per endpoint in a fixed\none-minute window. Separate endpoint buckets do not share quota, except\nroutes without an explicit limit use the shared default bucket.\n\nEvery response includes these headers:\n- `X-RateLimit-Limit` -- maximum requests allowed in the current per-minute window\n- `X-RateLimit-Remaining` -- requests remaining in the current window\n- `X-RateLimit-Reset` -- seconds until the current window resets\n\nWhen the limit is exceeded the API returns `429 Too Many Requests` with a\n`Retry-After` header indicating how many seconds to wait before retrying.\n\n**Current limits:**\n\n| Endpoint class | Methods | Limit |\n| --- | --- | --- |\n| List reads: `/sequences`, `/emails`, `/users`, `/sequenceStates`, `/prospects`, `/mailboxes`, `/calls`, `/sequenceSteps`, `/callDispositions`, `/tasks`, `/accounts` | `GET` | 300 requests/minute per endpoint |\n| Read by ID: `/sequences/{id}`, `/emails/{id}`, `/users/{id}`, `/sequenceStates/{id}`, `/prospects/{id}`, `/mailboxes/{id}`, `/calls/{id}`, `/sequenceSteps/{id}`, `/callDispositions/{id}`, `/tasks/{id}`, `/accounts/{id}`, `/emailTemplate/{id}` | `GET` | 600 requests/minute per endpoint |\n| Sequence writes: `/sequences`, `/sequences/{id}` | `POST`, `PATCH` | 120 requests/minute per endpoint |\n| Sequence state writes: `/sequenceStates`, `/sequenceStates/{id}`, `/sequenceStates/{id}/actions/finish` | `POST`, `DELETE` | 120 requests/minute per endpoint |\n| Task writes: `/tasks`, `/tasks/{id}`, `/tasks/{id}/complete`, `/tasks/{id}/skip` | `POST`, `PATCH`, `DELETE` | 120 requests/minute per endpoint |\n| CRM note writes: `/prospects/{id}/notes`, `/accounts/{id}/notes` | `POST` | 30 requests/minute per endpoint |\n| `/integrations/prospects/sync` | `POST` | 10 requests/minute |\n| Any other endpoint | Any | 30 requests/minute, shared default bucket |\n\n## Pagination\nList endpoints support cursor-based pagination using the `page[size]` and `page[after]`/`page[before]` query parameters.\n- Maximum page size: 100\n- Default page size: 50\n\n## Include (Inline Expansion)\nMost GET endpoints support an `include` query parameter that expands related `ReferenceObject` fields inline,\neliminating the need for follow-up API calls.\n\n**Format:** `?include=field1,field2` (comma-separated field names)\n\n**Without include:**\n```json\nGET /v1/prospects/123\n\n{\n \"id\": \"123\",\n \"sequenceStates\": [\n { \"id\": \"ss-1\", \"_href\": \"/v1/sequenceStates/ss-1\" }\n ]\n}\n```\n\n**With `include=sequenceStates`:**\n```json\nGET /v1/prospects/123?include=sequenceStates\n\n{\n \"id\": \"123\",\n \"sequenceStates\": [\n {\n \"id\": \"ss-1\",\n \"_href\": \"/v1/sequenceStates/ss-1\",\n \"state\": \"active\",\n \"sequence\": { \"id\": \"seq-1\", \"_href\": \"/v1/sequences/seq-1\" },\n \"prospect\": { \"id\": \"123\", \"_href\": \"/v1/prospects/123\" },\n \"creator\": { \"id\": \"u-1\", \"_href\": \"/v1/users/u-1\" },\n \"sequenceStep\": null,\n \"createdAt\": \"2024-01-01T00:00:00Z\",\n \"updatedAt\": \"2024-01-01T00:00:00Z\"\n }\n ]\n}\n```\n\nThe expanded object is a superset of `ReferenceObject` — it keeps `id` and `_href` and adds all DTO fields.\nThe response shape is unchanged; the field just contains richer data.\n\n**Hard constraints (enforced with 400 errors):**\n- **Max 3 includes per request.** Requesting more than 3 comma-separated values returns `400: \"include accepts at most 3 values\"`.\n- **GET endpoints only.** POST, PATCH, and DELETE endpoints do not accept `include`.\n- **No nested includes.** Only top-level field names are valid (e.g., `sequenceStates`). Dot-notation like `sequenceStates.prospect` returns 400.\n- **`account` on Prospect is not includable.** Requesting `include=account` returns 400.\n\nEach endpoint's `include` parameter lists the valid field names for that resource.\n"
contact:
name: Nooks API Support
email: support@nooks.in
url: https://www.nooks.in
license:
name: Proprietary
x-logo:
url: ./nooks-logo.svg
altText: Nooks Logo
href: https://www.nooks.ai
servers:
- url: https://partner-api.nooks.in/v1
description: Production API
security:
- BearerAuth: []
tags:
- name: SequenceStates
description: Track prospect enrollments in sequences
paths:
/sequenceStates:
get:
operationId: listSequenceStates
summary: List sequence states
description: "Returns a paginated list of sequence states (enrollments). Supports filtering by sequence, prospect, account, and state.\n\nExample:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/sequenceStates?page[size]=50' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by sequence:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/sequenceStates?filter[sequence][id]=550e8400-e29b-41d4-a716-446655440000' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by account (joins through prospect):\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/sequenceStates?filter[account][id]=990e8400-e29b-41d4-a716-446655440099' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n\nFilter by state:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/sequenceStates?filter[state]=active,paused' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n"
tags:
- SequenceStates
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageAfter'
- $ref: '#/components/parameters/PageBefore'
- name: filter[sequence][id]
in: query
description: Filter by sequence ID
required: false
schema:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
- name: filter[prospect][id]
in: query
description: Filter by prospect ID
required: false
schema:
type: string
format: uuid
example: 770e8400-e29b-41d4-a716-446655440003
- name: filter[account][id]
in: query
description: Filter by account ID (matches the prospect's account).
required: false
schema:
type: string
format: uuid
example: 990e8400-e29b-41d4-a716-446655440099
- name: filter[state]
in: query
description: 'Filter by state (comma-separated). Valid values: active, paused, finished'
required: false
schema:
type: array
items:
type: string
enum:
- active
- paused
- finished
style: form
explode: false
example:
- active
- paused
- name: include
in: query
description: 'Comma-separated relations to expand inline. Valid values: `sequence`, `prospect`, `creator`, `sequenceStep`. Max 3.'
required: false
schema:
type: array
items:
type: string
enum:
- sequence
- prospect
- creator
- sequenceStep
maxItems: 3
style: form
explode: false
example:
- sequence
- prospect
- $ref: '#/components/parameters/FilterUpdatedAtGte'
- $ref: '#/components/parameters/FilterUpdatedAtLt'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SequenceState'
links:
$ref: '#/components/schemas/PaginationLinks'
example:
data:
- id: 880e8400-e29b-41d4-a716-446655440010
state: active
sequence:
id: 550e8400-e29b-41d4-a716-446655440000
_href: /v1/sequences/550e8400-e29b-41d4-a716-446655440000
prospect:
id: 770e8400-e29b-41d4-a716-446655440003
_href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
account:
id: 990e8400-e29b-41d4-a716-446655440099
_href: /v1/accounts/990e8400-e29b-41d4-a716-446655440099
sequenceStep:
id: aa0e8400-e29b-41d4-a716-446655440030
_href: /v1/sequenceSteps/aa0e8400-e29b-41d4-a716-446655440030
creator:
id: 660e8400-e29b-41d4-a716-446655440001
_href: /v1/users/660e8400-e29b-41d4-a716-446655440001
createdAt: '2025-11-01T10:00:00.000Z'
updatedAt: '2025-11-05T14:30:00.000Z'
links:
first: https://partner-api.nooks.in/v1/sequenceStates?page[size]=50
prev: null
next: https://partner-api.nooks.in/v1/sequenceStates?page[size]=50&page[after]=eyJpZCI6Ijg4MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAxMCIsInYiOjF9
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
post:
operationId: createSequenceState
summary: Enroll a prospect in a sequence
description: "Enrolls a prospect into a sequence, creating a new sequence state.\n\nWhen enrolling on behalf of a user, respect the sequence's `privacy`\n(returned by `GET /v1/sequences/{id}`): enroll into `private` sequences\nonly on behalf of their owner.\n\nExample:\n```bash\ncurl -X POST 'https://partner-api.nooks.in/v1/sequenceStates' \\\n -H \"Authorization: Bearer nooks-api-...\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"data\": {\n \"prospect\": { \"id\": \"770e8400-e29b-41d4-a716-446655440003\" },\n \"sequence\": { \"id\": \"550e8400-e29b-41d4-a716-446655440000\" },\n \"owner\": { \"id\": \"KKLvN5wQoghWFwUvC75CZ12QM7I3\" },\n \"mailbox\": { \"id\": \"bb0e8400-e29b-41d4-a716-446655440040\" },\n \"emailOverrides\": {\n \"aa0e8400-e29b-41d4-a716-446655440050\": {\n \"subject\": \"Custom subject for step\",\n \"body\": \"<p>Custom email body</p>\"\n }\n }\n }\n }'\n```\n"
tags:
- SequenceStates
requestBody:
required: true
content:
application/json:
schema:
type: object
description: Request body for enrolling a prospect in a sequence
properties:
data:
type: object
additionalProperties: false
properties:
prospect:
type: object
description: The prospect to enroll
additionalProperties: false
properties:
id:
type: string
format: uuid
description: ID of the prospect
example: 770e8400-e29b-41d4-a716-446655440003
required:
- id
sequence:
type: object
description: The sequence to enroll the prospect in
additionalProperties: false
properties:
id:
type: string
format: uuid
description: ID of the sequence
example: 550e8400-e29b-41d4-a716-446655440000
required:
- id
owner:
type: object
description: The user who owns this enrollment
additionalProperties: false
properties:
id:
type: string
minLength: 1
maxLength: 128
pattern: ^[A-Za-z0-9_-]{1,128}$
description: ID of the owner user (Firebase UID)
example: KKLvN5wQoghWFwUvC75CZ12QM7I3
required:
- id
state:
type: string
enum:
- active
- paused
default: active
description: Initial state of the enrollment
example: active
mailbox:
type: object
description: The mailbox to use for email outreach (optional, defaults to user's primary email)
additionalProperties: false
properties:
id:
type: string
format: uuid
description: ID of the mailbox
example: bb0e8400-e29b-41d4-a716-446655440040
required:
- id
scheduledAt:
type: string
format: date-time
description: When to start the sequence (ISO 8601 with timezone offset). If omitted, starts immediately.
example: '2025-12-01T09:00:00-05:00'
emailOverrides:
type: object
description: 'Per-step email content overrides. Keys are sequence step IDs (UUIDs, obtainable via GET /sequenceSteps).
Values specify custom subject and/or body for that step. Omitted fields use the step''s template defaults.
Returns 422 if any key is not a valid step ID within the target sequence.
'
propertyNames:
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
additionalProperties:
type: object
properties:
subject:
type: string
description: Custom email subject line
example: Custom subject for this prospect
body:
type: string
description: Custom email body (HTML)
example: <p>Custom email body</p>
additionalProperties: false
example:
aa0e8400-e29b-41d4-a716-446655440050:
subject: Custom subject for step
body: <p>Custom email body</p>
enrich:
type: object
additionalProperties: false
description: 'Opt this enrollment into data enrichment, per channel. If the workspace forces
enrichment for a channel, that channel is enriched regardless of what you pass
here; a `false` or omitted channel simply defers to the workspace setting.
'
properties:
phoneNumbers:
type: boolean
description: Enrich the prospect's phone numbers on enrollment.
example: true
emails:
type: boolean
description: Enrich the prospect's email addresses on enrollment.
example: false
required:
- prospect
- sequence
- owner
required:
- data
example:
data:
prospect:
id: 770e8400-e29b-41d4-a716-446655440003
sequence:
id: 550e8400-e29b-41d4-a716-446655440000
owner:
id: KKLvN5wQoghWFwUvC75CZ12QM7I3
state: active
mailbox:
id: bb0e8400-e29b-41d4-a716-446655440040
emailOverrides:
aa0e8400-e29b-41d4-a716-446655440050:
subject: Custom subject for step
body: <p>Custom email body</p>
enrich:
phoneNumbers: true
emails: false
responses:
'201':
description: Prospect successfully enrolled in sequence
content:
application/json:
schema:
$ref: '#/components/schemas/SequenceState'
example:
id: 880e8400-e29b-41d4-a716-446655440010
state: active
createdAt: '2025-11-01T10:00:00.000Z'
updatedAt: '2025-11-01T10:00:00.000Z'
prospect:
id: 770e8400-e29b-41d4-a716-446655440003
_href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
sequence:
id: 550e8400-e29b-41d4-a716-446655440000
_href: /v1/sequences/550e8400-e29b-41d4-a716-446655440000
sequenceStep:
id: aa0e8400-e29b-41d4-a716-446655440030
_href: /v1/sequenceSteps/aa0e8400-e29b-41d4-a716-446655440030
owner:
id: KKLvN5wQoghWFwUvC75CZ12QM7I3
_href: /v1/users/KKLvN5wQoghWFwUvC75CZ12QM7I3
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
description: Conflict - prospect is already enrolled
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
code: CONFLICT
message: Conflict
details:
message: Prospect is already enrolled in this sequence
'422':
description: 'Unprocessable entity. Possible causes:
- Enrollment prerequisites not met (e.g. prospect missing a valid email)
- `emailOverrides` contains step IDs that do not belong to the target sequence
- `owner.id` is not a user in this workspace (use an id from `GET /v1/users`)
'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
missingEmail:
summary: Prospect missing valid email
value:
error:
code: UNPROCESSABLE_ENTITY
message: Unprocessable entity
details:
message: Prospect does not have a valid primary email
ownerNotFound:
summary: Owner is not a user in the workspace
value:
error:
code: UNPROCESSABLE_ENTITY
message: Unprocessable entity
details:
message: Owner user KKLvN5wQoghWFwUvC75CZ12QM7I3 not found in this workspace. Use a user id from GET /v1/users.
invalidStepIds:
summary: emailOverrides references invalid step IDs
value:
error:
code: UNPROCESSABLE_ENTITY
message: Unprocessable entity
details:
message: 'emailOverrides contains step IDs not in sequence 550e8400-...: aa0e8400-..., bb0e8400-...'
'500':
$ref: '#/components/responses/InternalError'
/sequenceStates/{id}:
get:
operationId: getSequenceState
summary: Get sequence state by ID
description: "Returns a single sequence state by its unique identifier.\n\nExample:\n```bash\ncurl -X GET 'https://partner-api.nooks.in/v1/sequenceStates/880e8400-e29b-41d4-a716-446655440010' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n"
tags:
- SequenceStates
parameters:
- name: id
in: path
required: true
description: Unique identifier for the sequence state
schema:
type: string
format: uuid
example: 880e8400-e29b-41d4-a716-446655440010
- name: include
in: query
description: 'Comma-separated relations to expand inline. Valid values: `sequence`, `prospect`, `creator`, `sequenceStep`. Max 3.'
required: false
schema:
type: array
items:
type: string
enum:
- sequence
- prospect
- creator
- sequenceStep
maxItems: 3
style: form
explode: false
example:
- sequence
- prospect
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/SequenceState'
example:
id: 880e8400-e29b-41d4-a716-446655440010
state: active
sequence:
id: 550e8400-e29b-41d4-a716-446655440000
_href: /v1/sequences/550e8400-e29b-41d4-a716-446655440000
prospect:
id: 770e8400-e29b-41d4-a716-446655440003
_href: /v1/prospects/770e8400-e29b-41d4-a716-446655440003
account:
id: 990e8400-e29b-41d4-a716-446655440099
_href: /v1/accounts/990e8400-e29b-41d4-a716-446655440099
sequenceStep:
id: aa0e8400-e29b-41d4-a716-446655440030
_href: /v1/sequenceSteps/aa0e8400-e29b-41d4-a716-446655440030
creator:
id: 660e8400-e29b-41d4-a716-446655440001
_href: /v1/users/660e8400-e29b-41d4-a716-446655440001
createdAt: '2025-11-01T10:00:00.000Z'
updatedAt: '2025-11-05T14:30:00.000Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
delete:
operationId: deleteSequenceState
summary: Remove prospect from sequence
description: "Removes a prospect from a sequence by deleting the sequence state. This unenrolls the prospect and cancels any pending tasks.\n\nExample:\n```bash\ncurl -X DELETE 'https://partner-api.nooks.in/v1/sequenceStates/880e8400-e29b-41d4-a716-446655440010' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n"
tags:
- SequenceStates
parameters:
- name: id
in: path
required: true
description: Unique identifier for the sequence state to remove
schema:
type: string
format: uuid
example: 880e8400-e29b-41d4-a716-446655440010
responses:
'204':
description: Prospect successfully removed from sequence
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalError'
/sequenceStates/{id}/actions/finish:
post:
operationId: finishSequenceState
summary: Finish a sequence state
description: "Marks a sequence state as finished (complete). This stops the prospect's progression\nthrough the sequence and performs cleanup of pending tasks.\n\nThis endpoint is idempotent: returns 204 even if the sequence state is already finished.\n\nExample:\n```bash\ncurl -X POST 'https://partner-api.nooks.in/v1/sequenceStates/880e8400-e29b-41d4-a716-446655440003/actions/finish' \\\n -H \"Authorization: Bearer nooks-api-...\"\n```\n"
tags:
- SequenceStates
parameters:
- name: id
in: path
required: true
description: Unique identifier for the sequence state
schema:
type: string
format: uuid
example: 880e8400-e29b-41d4-a716-446655440003
responses:
'204':
description: Sequence state finished (or already finished)
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
components:
responses:
Unauthorized:
description: Unauthorized - invalid or missing API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
code: UNAUTHORIZED
message: Invalid or missing API key
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
code: NOT_FOUND
message: The requested resource was not found
BadRequest:
description: Bad request - invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
code: BAD_REQUEST
message: Invalid page[after] cursor
InternalError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error:
code: INTERNAL_ERROR
message: An unexpected error occurred
parameters:
FilterUpdatedAtLt:
name: filter[updatedAt][lt]
in: query
description: Filter by updatedAt before this timestamp, exclusive (ISO 8601 datetime)
required: false
schema:
type: string
format: date-time
example: '2026-01-01T00:00:00Z'
PageSize:
name: page[size]
in: query
description: Number of items per page (max 100)
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 50
example: 50
FilterUpdatedAtGte:
name: filter[updatedAt][gte]
in: query
description: Filter by minimum updatedAt (ISO 8601 datetime)
required: false
schema:
type: string
format: date-time
example: '2025-01-01T00:00:00Z'
PageAfter:
name: page[after]
in: query
description: 'Cursor for fetching the next page. Opaque token returned by the
API in `links.next`; callers should treat it as opaque and only
pass values they received from a previous response. Malformed
cursors return `400 Bad Request`.
'
required: false
schema:
type: string
example: eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsInYiOjF9
PageBefore:
name: page[before]
in: query
description: 'Cursor for fetching the previous page. Opaque token returned by
the API in `links.prev`; callers should treat it as opaque and
only pass values they received from a previous response.
Malformed cursors return `400 Bad Request`.
'
required: false
schema:
type: string
example: eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsInYiOjF9
schemas:
Error:
type: object
description: Standard error response
properties:
error:
type: object
properties:
code:
type: string
description: Error code
example: NOT_FOUND
message:
type: string
description: Human-readable error message
example: The requested resource was not found
traceId:
type: string
description: 'Request trace identifier for correlating this error with server
logs and support requests. Present whenever the request carried a
trace context (the normal case); omitted otherwise.
'
example: abc123def456
PaginationLinks:
type: object
description: 'Pagination links for navigating through results.
Links are returned as relative references (path + query) that
should be resolved against the base URL of the request.
'
properties:
first:
type: string
format: uri-reference
description: URL for the first page
example: /v1/sequences?page[size]=50
prev:
type: string
format: uri-reference
nullable: true
description: URL for the previous page (null if on first page)
example: null
next:
type: string
format: uri-reference
nullable: true
description: URL for the next page (null if on last page)
example: /v1/sequences?page[size]=50&page[after]=eyJpZCI6IjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIsInYiOjF9
ReferenceObject:
type: object
description: A reference to a related resource
properties:
id:
type: string
description: Unique iden
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/nooks/refs/heads/main/openapi/nooks-sequencestates-api-openapi.yml