{"openapi":"3.0.3","info":{"title":"Public API","description":"Custom API: public","version":"1.0.0"},"servers":[{"url":"https://api.b2baisaas.com"}],"paths":{"/v1/workspaces/{workspace_id}/api-keys/{key_id}/secret":{"get":{"summary":"Get workspace API key secret","operationId":"get-workspace-api-key-secret","responses":{"200":{"description":"API key secret retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeySecretResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid credentials."},"403":{"description":"Workspace admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"API key not found."}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string"},"description":"API key record ID."}],"tags":["Organization Workspaces > Workspace API Keys"],"description":"Return the full secret for an existing workspace API key. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/api-keys/{key_id}/rotate":{"post":{"summary":"Rotate workspace API key","operationId":"rotate-workspace-api-key","responses":{"200":{"description":"API key rotated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyWithSecretResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid credentials."},"403":{"description":"Workspace admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"API key not found."}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string"},"description":"API key record ID."}],"tags":["Organization Workspaces > Workspace API Keys"],"description":"Generate a new secret for an existing key. The new full value is returned once in `data.api_key`.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/api-keys/{key_id}":{"delete":{"summary":"Delete workspace API key","operationId":"delete-workspace-api-key","responses":{"200":{"description":"API key deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSuccessResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid credentials."},"403":{"description":"Workspace admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"API key not found."}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string"},"description":"API key record ID."}],"tags":["Organization Workspaces > Workspace API Keys"],"description":"Permanently delete a workspace API key. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"put":{"summary":"Update workspace API key","operationId":"update-workspace-api-key","responses":{"200":{"description":"API key updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyResponse"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid credentials."},"403":{"description":"Workspace admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"API key not found."}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","required":true,"schema":{"type":"string"},"description":"API key record ID."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyUpdateRequest"}}}},"tags":["Organization Workspaces > Workspace API Keys"],"description":"Rename a workspace API key. Returns metadata only — no secret value. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/api-keys":{"post":{"summary":"Create workspace API key","operationId":"create-workspace-api-key","responses":{"200":{"description":"API key created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyWithSecretResponse"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid credentials."},"403":{"description":"Workspace admin permissions required."},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyCreateRequest"}}}},"tags":["Organization Workspaces > Workspace API Keys"],"description":"Create a new workspace API key. The full secret is returned once in `data.api_key`.","security":[{"BearerAuth":[]}]},"get":{"summary":"List workspace API keys","operationId":"list-workspace-api-keys","responses":{"200":{"description":"API keys retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceApiKeyListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid credentials."},"403":{"description":"Workspace admin permissions required."},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID. Use a key from List workspaces or Get workspace."}],"tags":["Organization Workspaces > Workspace API Keys"],"description":"List API keys for a workspace. Returns metadata only — no secret values. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/messages/{message_id}/transcription":{"get":{"summary":"Get phone call transcription by message ID","operationId":"get-message-transcription","responses":{"200":{"description":"Transcript retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageTranscriptionResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations > Messages"],"description":"Returns plain-text and structured multichannel transcript JSON for phone_call and ai_phone_call messages.","security":[{"BearerAuth":[]}]}},"/openapi.json":{"get":{"summary":"Get the latest live OpenAPI JSON","operationId":"public-get-openapi-json","responses":{"200":{"description":"OpenAPI 3.0 JSON document","content":{"application/json":{"schema":{"type":"object","description":"Full OpenAPI 3.0 specification object."}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"No live spec published yet","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}},"tags":["OpenAPI Spec"],"description":"Returns the most recently published live-branch OpenAPI 3 document (raw JSON body, not the standard success envelope)."}},"/v1/organizations/{organization_id}/members/{user_id}/workspaces/remove":{"post":{"summary":"Remove organization member from workspace","operationId":"remove-organization-member-from-workspace","responses":{"200":{"description":"Member removed from the workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberResponse"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"Member or workspace not found in this organization."}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"description":"Organization member user record ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Workspace to remove the member from.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberWorkspaceRemoveRequest"}}}},"tags":["Organization Members"],"description":"Remove an organization member from a single workspace without removing them from the organization.","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/members/{user_id}/workspaces/add":{"post":{"summary":"Add organization member to workspace","operationId":"add-organization-member-to-workspace","responses":{"200":{"description":"Member enrolled in the workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberResponse"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"Member or workspace not found in this organization."}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"description":"Organization member user record ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Workspace to enroll the member in and optional workspace role.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberWorkspaceAddRequest"}}}},"tags":["Organization Members"],"description":"Enroll an organization member in a workspace under the same organization.","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/members/{user_id}/remove":{"post":{"summary":"Remove organization member","operationId":"remove-organization-member","responses":{"200":{"description":"Member removed from the organization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"Member not found in this organization."}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"description":"Organization member user record ID.","schema":{"type":"string"}}],"tags":["Organization Members"],"description":"Remove a user from the organization and its workspace memberships.","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/members/{user_id}/update":{"post":{"summary":"Update organization member","operationId":"update-organization-member","responses":{"200":{"description":"Member updated successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberResponse"}}}},"400":{"description":"Invalid request body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"Member not found in this organization."}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}},{"name":"user_id","in":"path","required":true,"description":"Organization member user record ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Fields to update on the member. At least one field is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberUpdateRequest"}}}},"tags":["Organization Members"],"description":"Update organization role, name, phone, or email for a member.","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/members/list-post":{"post":{"summary":"List organization members","operationId":"list-post-organization-members","responses":{"200":{"description":"Members retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}}],"requestBody":{"description":"Pagination, sort, and optional filter options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberListRequest"}}}},"tags":["Organization Members"],"description":"Paginated list of users in the organization.","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/members":{"post":{"summary":"Add organization member","operationId":"add-organization-member","responses":{"200":{"description":"Member added successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberResponse"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Member email, name, phone, role, and optional activation email flag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationMemberAddRequest"}}}},"tags":["Organization Members"],"description":"Invite or create an organization user. Use workspace add/remove routes to enroll workspaces.","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/workspaces/{workspace_id}":{"get":{"summary":"Get workspace","operationId":"get-workspace","responses":{"200":{"description":"Workspace retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWorkspaceResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"},"404":{"description":"Workspace not found in this organization."}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}},{"name":"workspace_id","in":"path","required":true,"description":"Workspace ID to retrieve. Must belong to this organization.","schema":{"type":"string"}}],"tags":["Organization Workspaces"],"description":"Read one workspace by ID (must belong to the organization).","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/workspaces":{"post":{"summary":"Create workspace","operationId":"create-workspace","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"},"201":{"description":"Workspace created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWorkspaceResponse"}}}}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Workspace name and optional owner / snapshot options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWorkspaceCreateRequest"}}}},"tags":["Organization Workspaces"],"description":"Create a new workspace under the organization (optionally with owner user and snapshot).","security":[{"BearerAuth":[]}]}},"/v1/organizations/{organization_id}/workspaces/list":{"post":{"summary":"List workspaces","operationId":"list-workspaces","responses":{"200":{"description":"Workspaces retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWorkspaceListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Missing or invalid organization API key."},"403":{"description":"Organization admin permissions required."},"500":{"description":"Internal server error"}},"parameters":[{"name":"organization_id","in":"path","required":true,"description":"Organization ID. Must belong to the API key used for the request.","schema":{"type":"string"}}],"requestBody":{"description":"Pagination, sort, and optional filter options.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWorkspaceListRequest"}}}},"tags":["Organization Workspaces"],"description":"Paginated list of workspaces in the organization.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contacts/{contact_id}/remove-tags":{"post":{"summary":"Remove tags from contact","operationId":"remove-contact-tags","responses":{"200":{"description":"Tags removed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"contact_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact record ID in this workspace"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tag_names"],"properties":{"tag_names":{"type":"array","items":{"type":"string"},"description":"contact_tag definition names to remove","minItems":1}}}}},"description":"Request body"},"tags":["Contacts"],"description":"Remove tags from a contact using contact_tag definition names (resolved to IDs server-side).","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contacts/{contact_id}/add-tags":{"post":{"summary":"Add tags to contact","operationId":"add-contact-tags","responses":{"200":{"description":"Tags added successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"contact_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact record ID in this workspace"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tag_names"],"properties":{"tag_names":{"type":"array","items":{"type":"string"},"description":"contact_tag definition names to add","minItems":1}}}}},"description":"Request body"},"tags":["Contacts"],"description":"Add tags to a contact using contact_tag definition names (resolved to IDs server-side).","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/messages/search":{"post":{"summary":"Search messages in a workspace","operationId":"search-messages","responses":{"200":{"description":"Messages retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSearchResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSearchRequest"},"example":{"filters":[{"field":"contact_id","operator":"eq","value":"a3vamjo25kvmu0xyb92laxfncomo3t4z"},{"field":"sent_at","operator":"gte","value":{"amount":7,"unit":"day"}},{"field":"type","operator":"in","value":["phone_call","ai_phone_call"]}],"limit":50,"sort_by":"sent_at","sort_direction":"desc"}}}},"tags":["Conversations > Messages"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/info":{"put":{"summary":"Update Workspace Info","operationId":"update-workspace-info","responses":{"200":{"description":"Workspace info updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"outbound_ai_call_active_schedule":{"type":"string","nullable":true},"enable_call_recording":{"type":"boolean"},"enable_call_transcription":{"type":"boolean"},"primary_contact_contains_any_filter_field":{"type":"string","nullable":true}}}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Workspace display name"},"timezone":{"type":"string","description":"Workspace timezone (e.g. America/New_York)"},"outbound_ai_call_active_schedule":{"type":"string","nullable":true,"description":"Active schedule ID to use for outbound AI calls, or null to clear"},"enable_call_recording":{"type":"boolean","description":"When false, new PSTN calls are not recorded via Twilio"},"enable_call_transcription":{"type":"boolean","description":"When false, Deepgram transcription is skipped (requires call recording)"},"primary_contact_contains_any_filter_field":{"type":"string","nullable":true,"description":"Dot path to a contact filter field for primary-contact contains-any matching"}}}}}},"tags":["Workspace Info"],"description":"Update workspace name and/or timezone.","security":[{"BearerAuth":[]}]},"get":{"summary":"Get workspace info","operationId":"get-workspace-info","responses":{"200":{"description":"Workspace info retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"timezone":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"outbound_ai_call_active_schedule":{"type":"string","nullable":true},"enable_call_recording":{"type":"boolean"},"enable_call_transcription":{"type":"boolean"},"primary_contact_contains_any_filter_field":{"type":"string","nullable":true}}}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Workspace Info"],"description":"Read workspace name, timezone, outbound AI call schedule, and call recording settings.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversation-custom-fields/{custom_field_id}":{"delete":{"summary":"Delete a conversation custom field","operationId":"delete-conversation-custom-field","responses":{"200":{"description":"Custom field deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations > Conversation Custom Fields"],"security":[{"BearerAuth":[]}]},"put":{"summary":"Update a conversation custom field","operationId":"update-conversation-custom-field","responses":{"200":{"description":"Custom field updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"field_name":{"type":"string"},"description":{"type":"string"}}}}}},"tags":["Conversations > Conversation Custom Fields"],"security":[{"BearerAuth":[]}]},"get":{"summary":"Get a conversation custom field","operationId":"get-conversation-custom-field","responses":{"200":{"description":"Custom field retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations > Conversation Custom Fields"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversation-custom-fields":{"post":{"summary":"Create a conversation custom field","operationId":"create-conversation-custom-field","responses":{"200":{"description":"Custom field created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["field_name","field_type"],"properties":{"field_name":{"type":"string"},"field_type":{"type":"string","enum":["text","long_text","number","boolean","timestamp","geo","select","multi_select"]},"select_options":{"type":"array","items":{"type":"object"}},"description":{"type":"string"}}}}}},"tags":["Conversations > Conversation Custom Fields"],"security":[{"BearerAuth":[]}]},"get":{"summary":"List conversation custom fields","operationId":"list-conversation-custom-fields","responses":{"200":{"description":"Custom fields retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations > Conversation Custom Fields"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversations/{conversation_id}":{"delete":{"summary":"Delete a conversation","operationId":"delete-conversation","responses":{"200":{"description":"Conversation deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations"],"security":[{"BearerAuth":[]}]},"get":{"summary":"Get a conversation","operationId":"get-conversation","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/messages/{message_id}":{"delete":{"summary":"Delete a message","operationId":"delete-message","responses":{"200":{"description":"Message deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations > Messages"],"security":[{"BearerAuth":[]}]},"get":{"summary":"Get a message by ID","operationId":"get-message","responses":{"200":{"description":"Message retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"message_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations > Messages"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversations/{conversation_id}/transcript":{"get":{"summary":"Get conversation transcript","operationId":"get-conversation-transcript","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string"}}],"tags":["Conversations"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversations/{conversation_id}/send-message":{"post":{"summary":"Send a message in a conversation","operationId":"send-message-in-conversation","responses":{"200":{"description":"Message sent successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendMessageRequest"}}}},"tags":["Conversations > Messages"],"description":"Send a message in a conversation. Returns the created message in the same shape as GET /messages/{message_id}.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversations/{conversation_id}/messages/search":{"post":{"summary":"List messages in a conversation","operationId":"list-messages","responses":{"200":{"description":"Messages retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageSearchResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMessagesInConversationRequest"}}}},"tags":["Conversations > Messages"],"description":"List messages for a conversation. Supports pagination (limit, offset) and optional type filter.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/conversations/search":{"post":{"summary":"Search conversations","operationId":"search-conversations","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object","properties":{"conversations":{"type":"array","items":{"type":"object"}},"total":{"type":"integer"}}}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationSearchRequest"}}}},"tags":["Conversations"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/opportunities/{opportunity_id}":{"delete":{"summary":"Delete Opportunity","operationId":"delete-opportunity","responses":{"200":{"description":"Opportunity deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Opportunity not found"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"opportunity_id","in":"path","required":true,"schema":{"type":"string"},"description":"Opportunity ID"}],"tags":["Pipelines > Opportunities"],"description":"Delete an existing opportunity. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"put":{"summary":"Update Opportunity","operationId":"update-opportunity","responses":{"200":{"description":"Opportunity updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Opportunity not found"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"opportunity_id","in":"path","required":true,"schema":{"type":"string"},"description":"Opportunity ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":"Appointment title"},"value":{"type":"number","description":"Filter value (omit for `is_empty` / `is_not_empty`)"},"notes":{"type":"string","description":"Internal appointment notes"},"current_stage_id":{"type":"string","description":"Move opportunity to this pipeline stage ID"}}}}}},"tags":["Pipelines > Opportunities"],"description":"Update an existing opportunity. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/opportunities/upsert":{"post":{"summary":"Upsert Opportunity","operationId":"upsert-opportunity","responses":{"200":{"description":"Opportunity upserted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["new_stage_id"],"properties":{"contact_id":{"type":"string","description":"Contact record ID"},"phone_number":{"type":"string","description":"Phone number (E.164 recommended)"},"email":{"type":"string","description":"Email address"},"new_stage_id":{"type":"string","description":"New stage id"},"title":{"type":"string","description":"Appointment title"},"value":{"type":"number","description":"Filter value (omit for `is_empty` / `is_not_empty`)"},"notes":{"type":"string","description":"Internal appointment notes"}}}}}},"tags":["Pipelines > Opportunities"],"description":"Create or update an opportunity. If the contact already has an opportunity in the pipeline, it moves to the new stage. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/opportunities/search":{"post":{"summary":"Search opportunities","operationId":"search-opportunities","responses":{"200":{"description":"Opportunities retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitySearchResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunitySearchRequest"}}}},"tags":["Pipelines > Opportunities"],"description":"Search opportunities in a workspace. Top-level filters are AND-combined. Supports pagination and sorting.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/opportunities":{"post":{"summary":"Create Opportunity","operationId":"create-opportunity","responses":{"200":{"description":"Opportunity created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpportunityResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["pipeline_id","title"],"properties":{"pipeline_id":{"type":"string","description":"Pipeline record ID"},"contact_id":{"type":"string","description":"Contact record ID"},"phone_number":{"type":"string","description":"Phone number (E.164 recommended)"},"email":{"type":"string","description":"Email address"},"title":{"type":"string","description":"Appointment title"},"initial_stage_id":{"type":"string","description":"Initial stage id"},"value":{"type":"number","description":"Filter value (omit for `is_empty` / `is_not_empty`)"},"notes":{"type":"string","description":"Internal appointment notes"}}}}}},"tags":["Pipelines > Opportunities"],"description":"Create a new opportunity in a pipeline. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-custom-field-groups/{group_id}":{"delete":{"summary":"Delete a contact custom field group","operationId":"delete-custom-field-group","responses":{"200":{"description":"Contact custom field group deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"group_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact custom field group record ID"}],"tags":["Contact Custom Fields > Contact Custom Field Groups"],"description":"Deletes the group and ungroups its custom field definitions (fields are not deleted).","security":[{"BearerAuth":[]}]},"put":{"summary":"Update a contact custom field group","operationId":"update-custom-field-group","responses":{"200":{"description":"Contact custom field group updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldGroupResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"409":{"description":"Group name already exists for this workspace"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"group_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact custom field group record ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Display name for the group"},"description":{"type":"string","nullable":true,"description":"Optional description shown in the UI"},"icon":{"type":"string","nullable":true,"description":"Optional icon identifier"}}}}}},"tags":["Contact Custom Fields > Contact Custom Field Groups"],"security":[{"BearerAuth":[]}]},"get":{"summary":"Get a contact custom field group","operationId":"get-custom-field-group","responses":{"200":{"description":"Contact custom field group retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldGroupResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"group_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact custom field group record ID"}],"tags":["Contact Custom Fields > Contact Custom Field Groups"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-custom-field-groups":{"post":{"summary":"Create a contact custom field group","operationId":"create-custom-field-group","responses":{"200":{"description":"Contact custom field group created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldGroupResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"409":{"description":"Group name already exists for this workspace"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Display name for the group"},"description":{"type":"string","description":"Optional description shown in the UI"},"icon":{"type":"string","description":"Optional icon identifier (e.g. tabler:folder)"}}}}}},"tags":["Contact Custom Fields > Contact Custom Field Groups"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-custom-field-groups/list":{"post":{"summary":"List contact custom field groups","operationId":"list-custom-field-groups","responses":{"200":{"description":"Contact custom field groups retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldGroupListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldGroupListRequest"}}}},"tags":["Contact Custom Fields > Contact Custom Field Groups"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/members/{workspace_member_id}":{"patch":{"summary":"Update Workspace Member","operationId":"update-workspace-member","responses":{"200":{"description":"Member updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberSingleResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"403":{"description":"Forbidden (member not in workspace)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"500":{"description":"Internal server error"},"404":{"description":"Workspace member not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"workspace_member_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace member record ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberUpdateRequest"}}}},"tags":["Workspace Members"],"description":"Partial update for a workspace member: ``role``, permission scopes, and assigned CRM phone / email resources in one request. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"delete":{"summary":"Remove Workspace Member","operationId":"remove-workspace-member","responses":{"200":{"description":"Member removed successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"workspace_member_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace member record ID"}],"tags":["Workspace Members"],"description":"Remove a member from a workspace. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"get":{"summary":"Get Workspace Member","operationId":"get-workspace-member","responses":{"200":{"description":"Workspace member retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberSingleResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"500":{"description":"Internal server error"},"404":{"description":"Workspace member not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"workspace_member_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace member record ID"}],"tags":["Workspace Members"],"description":"Fetch one workspace member by id (formatted with nested ``custom`` and flattened user identity: email, first_name, last_name, phone_number, profile_picture_url). Member must belong to workspace_id. Requires workspace authentication.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/members/send-activation-email":{"post":{"summary":"Send Workspace Member Activation Email","operationId":"send-workspace-member-activation-email","responses":{"200":{"description":"Activation email sent successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"404":{"description":"Member not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","description":"Email address"},"frontend_domain":{"$ref":"#/components/schemas/FrontendDomain"}}}}}},"tags":["Workspace Members"],"description":"Send an activation email to a workspace member. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/members":{"post":{"summary":"Add Workspace Member","operationId":"add-workspace-member","responses":{"200":{"description":"Member added successfully (formatted with nested ``custom`` and flattened user identity fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberSingleResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"}}}}}}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberAddRequest"}}}},"tags":["Workspace Members"],"description":"Add a member to a workspace, creating user if needed. Optional workspace-member custom fields use ``custom`` keyed by field_name. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/members/list":{"post":{"summary":"List workspace members","operationId":"list-workspace-members","responses":{"200":{"description":"Members retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceMemberListRequest"}}}},"tags":["Workspace Members"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-tags/{tag_definition_id}":{"delete":{"summary":"Delete a contact tag","operationId":"delete-tag-definition","responses":{"200":{"description":"Contact tag deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"tag_definition_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact tag definition record ID"}],"tags":["Contact Tags"],"security":[{"BearerAuth":[]}]},"put":{"summary":"Update a contact tag","operationId":"update-tag-definition","responses":{"200":{"description":"Contact tag updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"tag_definition_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact tag definition record ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"new_tag_name":{"type":"string","description":"New tag definition name when renaming a tag"},"description":{"type":"string","description":"Human-readable description shown in the UI"}}}}}},"tags":["Contact Tags"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-tags":{"post":{"summary":"Create a contact tag","operationId":"create-tag-definition","responses":{"200":{"description":"Contact tag created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["tag_name"],"properties":{"tag_name":{"type":"string","description":"Contact tag definition name"},"description":{"type":"string","description":"Human-readable description shown in the UI"}}}}}},"tags":["Contact Tags"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-tags/list":{"post":{"summary":"List contact tags","operationId":"list-tag-definitions","responses":{"200":{"description":"Contact tags retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactTagDefinitionListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactTagDefinitionListRequest"}}}},"tags":["Contact Tags"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-custom-fields/list":{"post":{"summary":"List contact custom fields","operationId":"list-custom-fields","responses":{"200":{"description":"Custom fields retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListRequest"}}}},"tags":["Contact Custom Fields"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/pipelines/{pipeline_id}/stages/list":{"post":{"summary":"List Pipeline Stages","operationId":"list-pipeline-stages","responses":{"200":{"description":"Pipeline stages retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineStageListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline not found"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineStageListRequest"}}}},"tags":["Pipelines > Pipeline Stages"],"description":"List all stages for a pipeline. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/pipelines/list":{"post":{"summary":"List Pipelines","operationId":"list-pipelines","responses":{"200":{"description":"Pipelines retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineListResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineListRequest"}}}},"tags":["Pipelines"],"description":"List pipelines for a workspace with optional filtering and pagination. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/pipelines/{pipeline_id}/stages/{stage_id}":{"delete":{"summary":"Delete Pipeline Stage","operationId":"delete-pipeline-stage","responses":{"200":{"description":"Pipeline stage deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"400":{"description":"Bad request - stage cannot be deleted"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline or stage not found"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string"},"description":"Stage ID"}],"tags":["Pipelines > Pipeline Stages"],"description":"Delete a pipeline stage. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"put":{"summary":"Update Pipeline Stage","operationId":"update-pipeline-stage","responses":{"200":{"description":"Pipeline stage updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline or stage not found"},"409":{"description":"Conflict - stage with this name already exists"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"},{"name":"stage_id","in":"path","required":true,"schema":{"type":"string"},"description":"Stage ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Stage name","minLength":1,"maxLength":255},"description":{"type":"string","description":"Stage description"},"stage_order":{"type":"integer","description":"Order/position of the stage"}}}}}},"tags":["Pipelines > Pipeline Stages"],"description":"Update a pipeline stage. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/pipelines/{pipeline_id}/stages":{"post":{"summary":"Create Pipeline Stage","operationId":"create-pipeline-stage","responses":{"200":{"description":"Pipeline stage created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline not found"},"409":{"description":"Conflict - stage with this name already exists"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Stage name","minLength":1,"maxLength":255},"description":{"type":"string","description":"Stage description"},"stage_order":{"type":"integer","description":"Order/position of the stage in the pipeline"}}}}}},"tags":["Pipelines > Pipeline Stages"],"description":"Create a new stage for a pipeline. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/pipelines/{pipeline_id}":{"delete":{"summary":"Delete Pipeline","operationId":"delete-pipeline","responses":{"200":{"description":"Pipeline deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"400":{"description":"Bad request - pipeline cannot be deleted"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline not found"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"}],"tags":["Pipelines"],"description":"Delete a pipeline. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"put":{"summary":"Update Pipeline","operationId":"update-pipeline","responses":{"200":{"description":"Pipeline updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline not found"},"409":{"description":"Conflict - pipeline with this name already exists"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Pipeline name","minLength":1,"maxLength":255},"description":{"type":"string","description":"Pipeline description"}}}}}},"tags":["Pipelines"],"description":"Update a pipeline. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]},"get":{"summary":"Get Pipeline","operationId":"get-pipeline","responses":{"200":{"description":"Pipeline retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"404":{"description":"Pipeline not found"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"pipeline_id","in":"path","required":true,"schema":{"type":"string"},"description":"Pipeline ID"}],"tags":["Pipelines"],"description":"Get a pipeline by ID. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contacts/{contact_id}":{"put":{"summary":"Update a contact","operationId":"update-contact","responses":{"200":{"description":"Contact updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"contact_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact record ID in this workspace"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactUpdateBody"}}},"description":"Request body"},"tags":["Contacts"],"security":[{"BearerAuth":[]}]},"get":{"summary":"Get a contact by ID","operationId":"get-contact","responses":{"200":{"description":"Contact retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"contact_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact record ID in this workspace"}],"tags":["Contacts"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/pipelines":{"post":{"summary":"Create Pipeline","operationId":"create-pipeline","responses":{"200":{"description":"Pipeline created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"},"409":{"description":"Conflict - pipeline with this name already exists"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Pipeline name","minLength":1,"maxLength":255},"description":{"type":"string","description":"Pipeline description"}}}}}},"tags":["Pipelines"],"description":"Create a new pipeline for a workspace. Requires workspace admin permissions.","security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-custom-fields/{custom_field_id}":{"delete":{"summary":"Delete a contact custom field","operationId":"delete-custom-field","responses":{"200":{"description":"Custom field deleted successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact custom field definition record ID"}],"tags":["Contact Custom Fields"],"security":[{"BearerAuth":[]}]},"put":{"summary":"Update a contact custom field","operationId":"update-custom-field","responses":{"200":{"description":"Custom field updated successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact custom field definition record ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"field_name":{"type":"string","description":"Unique custom field name (used as the key on contact `custom` values)"},"description":{"type":"string","description":"Human-readable description shown in the UI"},"group_id":{"type":"string","nullable":true,"description":"contact_custom_field_group id; null clears the group"},"select_options":{"type":"array","items":{"type":"string"},"description":"Option values for select / multi_select fields"}}}}}},"tags":["Contact Custom Fields"],"security":[{"BearerAuth":[]}]},"get":{"summary":"Get a contact custom field","operationId":"get-custom-field","responses":{"200":{"description":"Custom field retrieved successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"},{"name":"custom_field_id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact custom field definition record ID"}],"tags":["Contact Custom Fields"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contacts":{"post":{"summary":"Create a contact","operationId":"create-contact","responses":{"200":{"description":"Contact created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactWriteBody"}}},"description":"Request body"},"tags":["Contacts"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contacts/upsert":{"post":{"summary":"Upsert a contact","operationId":"upsert-contact","responses":{"200":{"description":"Contact upserted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactWriteBody"}}},"description":"Request body"},"tags":["Contacts"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contact-custom-fields":{"post":{"summary":"Create a contact custom field","operationId":"create-custom-field","responses":{"200":{"description":"Custom field created successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string"},"description":"Workspace ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["field_name","field_type"],"properties":{"field_name":{"type":"string","description":"Unique custom field name (used as the key on contact `custom` values)"},"field_type":{"type":"string","enum":["text","long_text","number","boolean","timestamp","geo","select","multi_select","text_list","workspace_member","workspace_member_list"],"description":"Custom field data type (`text`, `number`, `boolean`, `timestamp`, `select`, `multi_select`, etc.)"},"select_options":{"type":"array","items":{"type":"string"},"description":"Option values for select / multi_select fields (plain strings, e.g. [\"pos\", \"vets\"])"},"description":{"type":"string","description":"Human-readable description shown in the UI"},"group_id":{"type":"string","nullable":true,"description":"contact_custom_field_group id to assign this field to on create"}}}}}},"tags":["Contact Custom Fields"],"security":[{"BearerAuth":[]}]}},"/v1/workspaces/{workspace_id}/contacts/search":{"post":{"summary":"Search contacts","operationId":"search-contacts","responses":{"200":{"description":"Contacts retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSearchResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":false},"message":{"type":"string"},"data":{"nullable":true,"type":"object"}}}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"500":{"description":"Internal server error"}},"parameters":[{"name":"workspace_id","in":"path","required":true,"description":"Workspace ID","schema":{"type":"string"}}],"requestBody":{"required":false,"description":"Optional search criteria. Omit the body to list contacts with default pagination.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSearchRequest"}}}},"tags":["Contacts"],"description":"Search contacts in a workspace. Top-level `filters` are AND-combined. Supports pagination and sorting.","security":[{"BearerAuth":[]}]}}},"components":{"schemas":{"WorkspaceApiKey":{"type":"object","description":"Workspace API key metadata. The secret is never included here — use create, rotate, or Get API key secret.","properties":{"id":{"type":"string","description":"API key record ID."},"name":{"type":"string","description":"Friendly label for the key."},"key_prefix":{"type":"string","description":"First characters of the key for identification."},"workspace":{"type":"string","description":"Workspace ID this key belongs to."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"WorkspaceApiKeyWithSecret":{"type":"object","description":"Workspace API key metadata plus the full secret (create and rotate only).","properties":{"id":{"type":"string","description":"API key record ID."},"name":{"type":"string","description":"Friendly label for the key."},"key_prefix":{"type":"string","description":"First characters of the key for identification."},"workspace":{"type":"string","description":"Workspace ID this key belongs to."},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"api_key":{"type":"string","description":"Full secret value — only returned immediately after create or rotate."}}},"WorkspaceApiKeySecret":{"type":"object","description":"Full secret for an existing workspace API key.","required":["id","api_key"],"properties":{"id":{"type":"string","description":"API key record ID."},"api_key":{"type":"string","description":"Full secret value."}}},"WorkspaceApiKeyListResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceApiKey"}}}},"WorkspaceApiKeyResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/WorkspaceApiKey"}}},"WorkspaceApiKeyWithSecretResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/WorkspaceApiKeyWithSecret"}}},"WorkspaceApiKeySecretResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/WorkspaceApiKeySecret"}}},"WorkspaceApiKeyCreateRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Friendly name for the API key."}}},"WorkspaceApiKeyUpdateRequest":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Updated friendly name."}}},"ApiSuccessResponse":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string"}}},"ApiErrorResponse":{"type":"object","description":"Standard API error envelope.","properties":{"success":{"type":"boolean","description":"False when the request failed.","example":false},"message":{"type":"string","description":"Human-readable error message."},"data":{"nullable":true,"description":"Optional error details.","type":"object"}},"required":["success","message"]},"ConversationSearchRequest":{"type":"object","description":"Search conversations. Pass the same `filters` array used when saving a conversation smart list.","properties":{"filters":{"type":"array","description":"AND-combined at the top level. Each element is a plain object: leaf rows use `field`, `operator`, and usually `value`; groups use `operator` (`AND` or `OR`) and nested `filters`. See the **Conversation searching** guide for field names, operators, and value shapes.","items":{"type":"object","description":"Search filter row or nested AND/OR group. Not expanded here so API docs stay usable — see the Conversation searching guide.","additionalProperties":true}},"limit":{"type":"integer","default":50,"minimum":1,"maximum":200,"description":"Maximum conversations to return per page (default 50, max 200)."},"offset":{"type":"integer","default":0,"minimum":0,"description":"Number of conversations to skip for pagination (default 0)."},"sort_by":{"type":"string","description":"Conversation field to sort by (e.g. `created_at`, `updated_at`, `last_message_at`)."},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order: ascending or descending (default `desc`)."}},"additionalProperties":false},"ContactSearchRequest":{"type":"object","description":"Search contacts in a workspace with optional filters, pagination, and sorting.","properties":{"filters":{"type":"array","description":"AND-combined at the top level. Each element is a plain object: leaf rows use `field`, `operator`, and usually `value`; groups use `operator` (`AND` or `OR`) and nested `filters`. See the **Contact searching** guide for field names, operators, and value shapes.","items":{"type":"object","description":"Search filter row or nested AND/OR group. Not expanded here so API docs stay usable — see the Contact searching guide.","additionalProperties":true}},"limit":{"type":"integer","default":100,"minimum":1,"maximum":200,"description":"Maximum contacts to return per page (default 100, max 200)."},"offset":{"type":"integer","default":0,"minimum":0,"description":"Number of contacts to skip for pagination (default 0)."},"sort_by":{"type":"string","description":"Contact field to sort by (e.g. `created_at`, `updated_at`, `email`, `first_name`, `last_name`)."},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order: ascending or descending (default `desc`)."}},"additionalProperties":false},"ContactCustomFieldValue":{"description":"Custom field value — type depends on the field definition (text, number, boolean, select, multi_select, etc.).","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"},"description":"Used for multi_select and text_list fields"}]},"ContactCustomFieldTextValue":{"type":"object","title":"text","description":"Custom field value for type `text`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `text`.","enum":["text"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"string","description":"Text value."}},"additionalProperties":false},"ContactCustomFieldLongTextValue":{"type":"object","title":"long text","description":"Custom field value for type `long_text`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `long_text`.","enum":["long_text"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"string","description":"Long text value."}},"additionalProperties":false},"ContactCustomFieldNumberValue":{"type":"object","title":"number","description":"Custom field value for type `number`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `number`.","enum":["number"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"number","description":"Numeric value."}},"additionalProperties":false},"ContactCustomFieldBooleanValue":{"type":"object","title":"boolean","description":"Custom field value for type `boolean`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `boolean`.","enum":["boolean"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"boolean","description":"Boolean value."}},"additionalProperties":false},"ContactCustomFieldTimestampValue":{"type":"object","title":"timestamp","description":"Custom field value for type `timestamp`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `timestamp`.","enum":["timestamp"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"string","description":"ISO 8601 timestamp string."}},"additionalProperties":false},"ContactCustomFieldSelectValue":{"type":"object","title":"select","description":"Custom field value for type `select`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `select`.","enum":["select"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"string","description":"Selected option value."}},"additionalProperties":false},"ContactCustomFieldMultiSelectValue":{"type":"object","title":"multi select","description":"Custom field value for type `multi_select`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `multi_select`.","enum":["multi_select"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"array","items":{"type":"string"},"description":"Selected option values."}},"additionalProperties":false},"ContactCustomFieldTextListValue":{"type":"object","title":"text list","description":"Custom field value for type `text_list`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `text_list`.","enum":["text_list"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldWorkspaceMemberValue":{"type":"object","title":"workspace member","description":"Custom field value for type `workspace_member`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `workspace_member`.","enum":["workspace_member"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"string","description":"Workspace member record ID."}},"additionalProperties":false},"ContactCustomFieldWorkspaceMemberListValue":{"type":"object","title":"workspace member list","description":"Custom field value for type `workspace_member_list`.","required":["field_type","field_name","value"],"properties":{"field_type":{"type":"string","description":"Custom field type `workspace_member_list`.","enum":["workspace_member_list"]},"field_name":{"type":"string","description":"Custom field name (see List contact custom field definitions)."},"value":{"type":"array","items":{"type":"string"},"description":"Workspace member record IDs."}},"additionalProperties":false},"ContactCustomFieldEntry":{"description":"One workspace custom field value. Select field_type, then field_name, then value.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldTextValue","title":"text"},{"$ref":"#/components/schemas/ContactCustomFieldLongTextValue","title":"long text"},{"$ref":"#/components/schemas/ContactCustomFieldNumberValue","title":"number"},{"$ref":"#/components/schemas/ContactCustomFieldBooleanValue","title":"boolean"},{"$ref":"#/components/schemas/ContactCustomFieldTimestampValue","title":"timestamp"},{"$ref":"#/components/schemas/ContactCustomFieldSelectValue","title":"select"},{"$ref":"#/components/schemas/ContactCustomFieldMultiSelectValue","title":"multi select"},{"$ref":"#/components/schemas/ContactCustomFieldTextListValue","title":"text list"},{"$ref":"#/components/schemas/ContactCustomFieldWorkspaceMemberValue","title":"workspace member"},{"$ref":"#/components/schemas/ContactCustomFieldWorkspaceMemberListValue","title":"workspace member list"}],"discriminator":{"propertyName":"field_type","mapping":{"text":"#/components/schemas/ContactCustomFieldTextValue","long_text":"#/components/schemas/ContactCustomFieldLongTextValue","number":"#/components/schemas/ContactCustomFieldNumberValue","boolean":"#/components/schemas/ContactCustomFieldBooleanValue","timestamp":"#/components/schemas/ContactCustomFieldTimestampValue","select":"#/components/schemas/ContactCustomFieldSelectValue","multi_select":"#/components/schemas/ContactCustomFieldMultiSelectValue","text_list":"#/components/schemas/ContactCustomFieldTextListValue","workspace_member":"#/components/schemas/ContactCustomFieldWorkspaceMemberValue","workspace_member_list":"#/components/schemas/ContactCustomFieldWorkspaceMemberListValue"}}},"ContactCustomFieldValues":{"type":"object","description":"Workspace contact custom field values keyed by field name. Use List contact custom field definitions to see available names and types.","additionalProperties":{"$ref":"#/components/schemas/ContactCustomFieldValue"}},"ContactCustomFieldEntryList":{"type":"array","description":"Custom field values as discriminated entries (`field_type`, `field_name`, `value`).","items":{"$ref":"#/components/schemas/ContactCustomFieldEntry"}},"ContactCustomFieldWriteValue":{"description":"Custom field values keyed by field name, or as discriminated entries.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldValues","title":"Field map"},{"$ref":"#/components/schemas/ContactCustomFieldEntryList","title":"Field entries"}]},"ContactWriteBody":{"type":"object","description":"Contact fields accepted on create, upsert, update, and bulk upsert.","properties":{"first_name":{"type":"string","description":"Contact first name"},"last_name":{"type":"string","description":"Contact last name"},"email":{"type":"string","description":"Contact email address"},"phone_number":{"type":"string","description":"Contact phone number (E.164 recommended)"},"street_address":{"type":"string","description":"Street address"},"city":{"type":"string","description":"City"},"state":{"type":"string","description":"State or province"},"postal_code":{"type":"string","description":"Postal or ZIP code"},"country":{"type":"string","description":"Country"},"company_name":{"type":"string","description":"Company name"},"company_category":{"type":"string","description":"Company category"},"website":{"type":"string","description":"Website URL"},"tags":{"type":"array","items":{"type":"string"},"description":"Contact tag definition names"},"profile_picture_url":{"type":"string","description":"Optional URL to download and set as the contact profile picture"},"custom":{"$ref":"#/components/schemas/ContactCustomFieldWriteValue","description":"Workspace custom field values keyed by field name"},"company_linkedin":{"type":"string","description":"Company LinkedIn URL"},"company_instagram":{"type":"string","description":"Company Instagram URL"},"company_facebook":{"type":"string","description":"Company Facebook URL"},"company_twitter":{"type":"string","description":"Company Twitter/X URL"},"google_maps_url":{"type":"string","description":"Google Maps listing URL"},"google_stars":{"type":"number","description":"Google review star rating"},"google_reviews_count":{"type":"number","description":"Google review count"},"facebook_stars":{"type":"number","description":"Facebook review star rating"},"facebook_reviews_count":{"type":"number","description":"Facebook review count"},"yelp_stars":{"type":"number","description":"Yelp star rating"},"yelp_reviews_count":{"type":"number","description":"Yelp review count"},"assigned_workspace_member_id":{"type":"string","description":"Workspace member record ID assigned to this contact"}},"additionalProperties":false},"ContactUpdateBody":{"$ref":"#/components/schemas/ContactWriteBody"},"Contact":{"type":"object","description":"Contact record. FK columns are returned as `*_id` id strings (lists as `*_ids`). Every allowed field is present on each row; unused fields are `null`. Internal-only columns are never included.","properties":{"assigned_workspace_member_id":{"type":"string","description":"The workspace member this contact is assigned to Returned as id string (`assigned_workspace_member_id`)."},"city":{"type":"string","description":"`contact.city` column."},"company_category":{"type":"string","description":"Business category"},"company_facebook":{"type":"string","description":"Facebook page URL"},"company_instagram":{"type":"string","description":"Instagram profile URL"},"company_linkedin":{"type":"string","description":"LinkedIn company page URL"},"company_name":{"type":"string","description":"Company or business name"},"company_twitter":{"type":"string","description":"Twitter profile URL"},"consents_to_sms_notifications":{"type":"boolean","description":"Whether the contact has consented to receive SMS notifications"},"contact_note_ids":{"type":"array","items":{"type":"string"},"description":"Notes associated with this contact Returned as id strings (`contact_note_ids`)."},"country":{"type":"string","description":"Country code"},"created_at":{"type":"string","format":"date-time","description":"`contact.created_at` column."},"csv_import_ids":{"type":"array","items":{"type":"string"},"description":"`contact.csv_imports` column. Returned as id strings (`csv_import_ids`)."},"current_campaign_ids":{"type":"array","items":{"type":"string"},"description":"Campaigns this contact is currently in (active or paused status) Returned as id strings (`current_campaign_ids`)."},"current_pipeline_ids":{"type":"array","items":{"type":"string"},"description":"`contact.current_pipelines` column. Returned as id strings (`current_pipeline_ids`)."},"current_pipeline_stage_ids":{"type":"array","items":{"type":"string"},"description":"`contact.current_pipeline_stages` column. Returned as id strings (`current_pipeline_stage_ids`)."},"current_workflow_ids":{"type":"array","items":{"type":"string"},"description":"`contact.current_workflows` column. Returned as id strings (`current_workflow_ids`)."},"custom":{"type":"object","additionalProperties":true,"description":"Workspace contact custom fields (`field_name` → value)."},"dnd_channels":{"type":"array","items":{"type":"string"},"description":"Channels this contact has opted out of (e.g. phone after STOP). Outbound sends on listed channels are blocked workspace-wide."},"email":{"type":"string","description":"`contact.email` column."},"external_id":{"type":"string","description":"External ID for contact upserting (unique identifier from external systems)"},"facebook_reviews_count":{"type":"number","description":"Number of Facebook reviews"},"facebook_stars":{"type":"number","description":"Facebook rating (stars)"},"first_name":{"type":"string","description":"`contact.first_name` column."},"first_replied_date":{"type":"string","format":"date-time","description":"Date when this contact was first replied to"},"google_maps_url":{"type":"string","description":"Google Maps page URL"},"google_reviews_count":{"type":"number","description":"Number of Google reviews"},"google_stars":{"type":"number","description":"Google rating (stars)"},"id":{"type":"string","description":"`contact.id` column."},"integrations":{"type":"object","additionalProperties":true,"description":"App integration field values keyed by app name, then field name."},"internal_widget_session_id":{"type":"string","description":"Internal widget session ID for widget conversations (unique identifier)"},"last_appointment_start_time":{"type":"string","format":"date-time","description":"Start time of this contact's most recent booked appointment (scheduled or confirmed)"},"last_inbound_call_date":{"type":"string","format":"date-time","description":"`contact.last_inbound_call_date` column."},"last_inbound_email_date":{"type":"string","format":"date-time","description":"Last inbound email date for email conversations"},"last_inbound_message_date":{"type":"string","format":"date-time","description":"Last inbound message date (any type)"},"last_inbound_sms_date":{"type":"string","format":"date-time","description":"`contact.last_inbound_sms_date` column."},"last_message_date":{"type":"string","format":"date-time","description":"`contact.last_message_date` column."},"last_message_direction":{"type":"string","description":"`contact.last_message_direction` column."},"last_message_type":{"type":"string","description":"Type of the most recent message across conversations (sms, email, phone_call, ai_phone_call, ai_message, ai_tool_call)"},"last_name":{"type":"string","description":"`contact.last_name` column."},"last_outbound_call_date":{"type":"string","format":"date-time","description":"`contact.last_outbound_call_date` column."},"last_outbound_email_date":{"type":"string","format":"date-time","description":"Last outbound email date for email conversations"},"last_outbound_message_date":{"type":"string","format":"date-time","description":"Last outbound message date (any type)"},"last_outbound_sms_date":{"type":"string","format":"date-time","description":"`contact.last_outbound_sms_date` column."},"location":{"type":"object","additionalProperties":true,"description":"`contact.location` column."},"organization_id":{"type":"string","description":"`contact.organization` column. Returned as id string (`organization_id`)."},"past_campaign_ids":{"type":"array","items":{"type":"string"},"description":"Campaigns this contact was previously in (completed status) Returned as id strings (`past_campaign_ids`)."},"past_pipeline_ids":{"type":"array","items":{"type":"string"},"description":"`contact.past_pipelines` column. Returned as id strings (`past_pipeline_ids`)."},"past_pipeline_stage_ids":{"type":"array","items":{"type":"string"},"description":"`contact.past_pipeline_stages` column. Returned as id strings (`past_pipeline_stage_ids`)."},"past_workflow_ids":{"type":"array","items":{"type":"string"},"description":"`contact.past_workflows` column. Returned as id strings (`past_workflow_ids`)."},"phone_line_type":{"type":"string","description":"Line type from Twilio Lookup (via PhoneWef v2), set by check_line_type_for_contact"},"phone_number":{"type":"string","description":"`contact.phone_number` column."},"postal_code":{"type":"string","description":"`contact.postal_code` column."},"profile_picture_url":{"type":"string","description":"URL of the profile picture"},"replied":{"type":"boolean","description":"Whether this contact has been replied to"},"replied_on_channels":{"type":"array","items":{"type":"string"},"description":"List of channels this contact has replied on (widget, phone, email, custom)"},"starred":{"type":"boolean","description":"Whether this contact is starred in the workspace"},"state":{"type":"string","description":"`contact.state` column."},"street_address":{"type":"string","description":"`contact.street_address` column."},"tags":{"type":"array","items":{"type":"string"},"description":"`contact.tags` column."},"timezone":{"type":"string","description":"IANA timezone (timezone picklist); may be derived from phone number or address"},"updated_at":{"type":"string","format":"date-time","description":"`contact.updated_at` column."},"website":{"type":"string","description":"Company website URL"},"workspace_id":{"type":"string","description":"Workspace this belongs to Returned as id string (`workspace_id`)."},"yelp_reviews_count":{"type":"number","description":"Number of Yelp reviews"},"yelp_stars":{"type":"number","description":"Yelp rating (stars)"}},"additionalProperties":true},"ContactSearchData":{"type":"object","description":"Paginated contact search results.","properties":{"contacts":{"type":"array","description":"Matching contacts for this page.","items":{"$ref":"#/components/schemas/Contact"}},"total":{"type":"integer","description":"Total contacts matching the search (all pages)."},"limit":{"type":"integer","description":"Page size used for this response."},"offset":{"type":"integer","description":"Offset used for this response."}},"required":["contacts","total","limit","offset"]},"ContactSearchResponse":{"type":"object","description":"Standard API success envelope.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/ContactSearchData","description":"Paginated contact search results."}},"required":["success","message","data"]},"ContactResponse":{"type":"object","description":"Standard API success envelope.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/Contact","description":"Single contact record."}},"required":["success","message","data"]},"MessageSearchRequest":{"type":"object","description":"Search messages in a workspace. All narrowing (conversation, contact, dates, types, custom fields) goes in filters.","additionalProperties":false,"properties":{"filters":{"type":"array","description":"AND-combined at the top level. Each element is a plain object: leaf rows use `field`, `operator`, and usually `value`; groups use `operator` (`AND` or `OR`) and nested `filters`. See the **Message searching** guide for field names, operators, and value shapes.","items":{"type":"object","description":"Search filter row or nested AND/OR group. Not expanded here so API docs stay usable — see the Message searching guide.","additionalProperties":true}},"limit":{"type":"integer","default":50,"minimum":1,"maximum":200,"description":"Maximum messages per page (default 50, max 200)."},"offset":{"type":"integer","default":0,"minimum":0,"description":"Pagination offset (default 0)."},"sort_by":{"type":"string","default":"sent_at","description":"Message column to sort by (default `sent_at`)."},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order: `asc` or `desc` (default `desc`)."}}},"Message":{"type":"object","description":"Product message record: stable core envelope plus optional flat `details` whose fields depend on `type`.","properties":{"id":{"type":"string","description":"Message id."},"type":{"type":"string","enum":["ai_phone_call","ai_phone_voice_turn","ai_stopped_conversation","ai_tool_call","ai_web_voice_turn","ai_widget_call","call_transfer","custom","email","internal_note","phone_call","sms","voicemail_drop_call","widget"],"description":"Message type (unified field - will replace message_type after migration)"},"status":{"type":"string","description":"Unified message status (replaces channel-specific status fields)"},"direction":{"type":"string","description":"`message.direction` column.","enum":["inbound","outbound"]},"content":{"type":"string","description":"Primary human-readable body."},"subject":{"type":"string","description":"Email subject (when `type` is `email`)."},"conversation_id":{"type":"string","description":"Conversation id."},"contact_id":{"type":"string","description":"Contact id when set."},"channel":{"type":"string","description":"Message channel: phone, email, custom"},"sent_at":{"type":"string","format":"date-time","description":"When the message was sent (falls back to `created_at`)."},"created_at":{"type":"string","format":"date-time","description":"Record created timestamp."},"updated_at":{"type":"string","format":"date-time","description":"Record updated timestamp."},"error_code":{"type":"string","description":"Error code for failed messages (e.g., Twilio error code for SMS)"},"error_message":{"type":"string","description":"Human-readable error message for failed messages"},"sent_by_type":{"type":"string","description":"Type of entity that sent this message: user, workspace_member, organization_admin, ai_agent, api, workflow","enum":["user","ai_agent","api","workflow","workspace_member","organization_admin","system_admin","campaign"]},"user_id":{"type":"string","description":"User id when `sent_by_type` is `user`."},"workspace_member_id":{"type":"string","description":"Workspace member id when `sent_by_type` is `workspace_member`."},"campaign_id":{"type":"string","description":"Campaign id when sent by a campaign."},"workflow_id":{"type":"string","description":"Workflow id when sent by a workflow."},"workflow_action_id":{"type":"string","description":"Workflow action id when sent by a workflow action."},"attachments":{"type":"array","description":"Email attachment URLs or IDs","items":{"type":"object","properties":{"file_url":{"type":"string","description":"Attachment download URL."},"file_name":{"type":"string","description":"Original file name."}}}},"custom":{"type":"object","additionalProperties":true,"description":"Workspace message custom fields (`field_name` → value)."},"details":{"$ref":"#/components/schemas/MessageDetails"}},"required":["conversation_id","created_at","id","sent_at","status","type"],"additionalProperties":false},"MessageSearchData":{"type":"object","description":"Paginated message search / list results.","properties":{"messages":{"type":"array","description":"Messages matching the query for this page.","items":{"$ref":"#/components/schemas/Message"}},"total":{"type":"integer","description":"Total messages matching filters (may be greater than this page size)."},"limit":{"type":"integer","description":"Maximum messages returned in this response."},"offset":{"type":"integer","description":"Number of matching messages skipped before this page."},"sort_by":{"type":"string","description":"Message column results were sorted by."},"sort_direction":{"type":"string","enum":["asc","desc"],"description":"Sort order applied to `sort_by`."},"conversation_id":{"type":"string","description":"Present for in-conversation list/search when scoped by conversation."}},"required":["messages","total","limit","offset"]},"MessageSearchResponse":{"type":"object","description":"Standard API success envelope.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/MessageSearchData"}},"required":["success","message","data"]},"MessageResponse":{"type":"object","description":"Standard API success envelope.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/Message"}},"required":["success","message","data"]},"SmsMessageDetails":{"type":"object","title":"SMS details","description":"Flat details when parent `type` is `sms`.","properties":{"external_id":{"type":"string","description":"External id."},"segments":{"type":"number","description":"SMS segment count."}},"additionalProperties":false},"EmailMessageDetails":{"type":"object","title":"Email details","description":"Flat details when parent `type` is `email`.","properties":{"bcc":{"type":"string","description":"BCC email addresses"},"bounced_at":{"type":"string","format":"date-time","description":"When the email bounced"},"cc":{"type":"string","description":"CC email addresses"},"clicked":{"type":"boolean","description":"Whether a link in the email has been clicked"},"clicked_at":{"type":"string","format":"date-time","description":"When a link in the email was first clicked"},"complained_at":{"type":"string","format":"date-time","description":"When the email was marked as spam/complained"},"delivered_at":{"type":"string","format":"date-time","description":"When the email was delivered"},"email_account_id":{"type":"string","description":"Email account id."},"email_domain_id":{"type":"string","description":"Email domain id."},"external_id":{"type":"string","description":"External id."},"from":{"type":"string","description":"Sender email address."},"html":{"type":"string","description":"HTML email content"},"opened":{"type":"boolean","description":"Whether the email has been opened"},"opened_at":{"type":"string","format":"date-time","description":"When the email was first opened"},"reply_to":{"type":"string","description":"Reply-To email address"},"to":{"type":"string","description":"Primary recipient email address."},"unsubscribed_at":{"type":"string","format":"date-time","description":"When the recipient unsubscribed"}},"additionalProperties":false},"PhoneCallMessageDetails":{"type":"object","title":"Phone call details","description":"Flat details when parent `type` is `phone_call`.","properties":{"call_answer_outcome":{"type":"string","description":"Call answer classification: `answered` (human/live), `voicemail`, or `unknown`.","enum":["answered","voicemail","unknown"]},"call_ended_by":{"type":"string","description":"Who ended the call: `contact` or `agent`.","enum":["contact","agent"]},"call_recording_dual_channel_url":{"type":"string","description":"Dual-channel recording URL (separate inbound/outbound legs)."},"call_recording_url":{"type":"string","description":"Recording URL for the call (mono/mixed)."},"crm_phone_number_id":{"type":"string","description":"Crm phone number id."},"duration_minutes":{"type":"number","description":"Total call length in minutes (may be fractional)."},"duration_seconds":{"type":"number","description":"Total call length in seconds."},"ended_at":{"type":"string","format":"date-time","description":"When the call ended."},"external_id":{"type":"string","description":"External id."},"started_at":{"type":"string","format":"date-time","description":"When the call started."}},"additionalProperties":false},"AiPhoneCallMessageDetails":{"type":"object","title":"AI phone call details","description":"Flat details when parent `type` is `ai_phone_call`.","properties":{"ai_agent_id":{"type":"string","description":"Ai agent id."},"ai_call_summary":{"type":"string","description":"AI-generated call summary (for ai_phone_call message type)"},"ai_phone_first_message_instructions":{"type":"string","description":"Outbound ai_generated opener: optional exact first line for __greeting__ (session pickup_message). Supports contact variables."},"allow_first_message_interruptions":{"type":"boolean","description":"When true, caller speech can barge in during the first message. For ai_phone_call message type."},"call_answer_outcome":{"type":"string","description":"Call answer classification: `answered` (human/live), `voicemail`, or `unknown`.","enum":["answered","voicemail","unknown"]},"call_ended_by":{"type":"string","description":"Who ended the call: `contact` or `agent`.","enum":["contact","agent"]},"call_ended_reason":{"type":"string","description":"Reason the AI call ended (for ai_phone_call message type)"},"call_recording_dual_channel_url":{"type":"string","description":"Dual-channel recording URL (separate inbound/outbound legs)."},"call_recording_url":{"type":"string","description":"Recording URL for the call (mono/mixed)."},"call_summary":{"type":"string","description":"Call summary for phone calls (separate from ai_call_summary)"},"call_transcript":{"type":"string","description":"Call transcript text (for phone_call and ai_phone_call message types)"},"call_transcript_json":{"type":"object","additionalProperties":true,"description":"Structured call transcript (utterances with speaker labels, channel, timestamps) for phone_call messages"},"crm_phone_number_id":{"type":"string","description":"Crm phone number id."},"duration_minutes":{"type":"number","description":"Total call length in minutes (may be fractional)."},"duration_seconds":{"type":"number","description":"Total call length in seconds."},"ended_at":{"type":"string","format":"date-time","description":"When the call ended."},"external_id":{"type":"string","description":"External id."},"first_message_mode":{"type":"string","description":"Outbound ai_phone_call: ai_generated (LLM greeting) or static (TTS first_message_text verbatim)."},"first_message_text":{"type":"string","description":"Outbound static opener — sole source for v7 static TTS when first_message_mode is static."},"leave_ai_voicemail":{"type":"boolean","description":"Whether the AI should leave a voicemail if the call goes to voicemail (for ai_phone_call message type)"},"recovered":{"type":"boolean","description":"True when a retry child ai_phone_call completed (call_completed) after this attempt failed or was cancelled"},"recovered_by_message_id":{"type":"string","description":"Recovered by message id."},"started_at":{"type":"string","format":"date-time","description":"When the call started."},"structured_outputs":{"type":"object","description":"Agent-defined structured output values keyed by output field name (from the AI agent's structured output definitions). Each value is a boolean, string, or number depending on the field type.","additionalProperties":{"description":"Structured output value for one agent-defined field path (boolean, string, or number)."}},"voicemail_instructions":{"type":"string","description":"Instructions for what the AI should say when leaving a voicemail (for ai_phone_call message type)"}},"additionalProperties":false},"AiPhoneVoiceTurnMessageDetails":{"type":"object","title":"AI phone voice turn details","description":"Flat details when parent `type` is `ai_phone_voice_turn`.","properties":{"parent_ai_phone_call_id":{"type":"string","description":"Parent ai phone call id."}},"additionalProperties":false},"AiWebVoiceTurnMessageDetails":{"type":"object","title":"AI web voice turn details","description":"Flat details when parent `type` is `ai_web_voice_turn`.","properties":{"parent_ai_widget_call_id":{"type":"string","description":"Parent ai widget call id."}},"additionalProperties":false},"AiWidgetCallMessageDetails":{"type":"object","title":"AI widget call details","description":"Flat details when parent `type` is `ai_widget_call`.","properties":{"ai_agent_id":{"type":"string","description":"Ai agent id."},"call_summary":{"type":"string","description":"Call summary for phone calls (separate from ai_call_summary)"},"duration_minutes":{"type":"number","description":"Total call length in minutes (may be fractional)."},"duration_seconds":{"type":"number","description":"Total call length in seconds."},"ended_at":{"type":"string","format":"date-time","description":"When the call ended."},"started_at":{"type":"string","format":"date-time","description":"When the call started."},"structured_outputs":{"type":"object","description":"Agent-defined structured output values keyed by output field name (from the AI agent's structured output definitions). Each value is a boolean, string, or number depending on the field type.","additionalProperties":{"description":"Structured output value for one agent-defined field path (boolean, string, or number)."}},"web_widget_id":{"type":"string","description":"Web widget id."}},"additionalProperties":false},"CallTransferMessageDetails":{"type":"object","title":"Call transfer details","description":"Flat details when parent `type` is `call_transfer`.","properties":{"destination":{"type":"string","description":"Transfer destination (phone number or SIP URI)."},"index":{"type":"number","description":"Transfer attempt index within the escalation sequence."},"parent_ai_phone_call_id":{"type":"string","description":"Parent ai phone call id."},"parent_transfer_message_id":{"type":"string","description":"Parent transfer message id."},"ring_seconds":{"type":"number","description":"Seconds the transfer destination rang before answer or timeout."},"rule_name":{"type":"string","description":"Escalation / transfer rule name that selected this destination."},"transfer_call_summary":{"type":"string","description":"AI-generated summary of the call provided at the time of transfer (for call_transfer message type)"},"transfer_reason":{"type":"string","description":"Reason the AI decided to transfer the call (for call_transfer message type)"},"user_id":{"type":"string","description":"User id."},"workspace_member_id":{"type":"string","description":"Workspace member id."}},"additionalProperties":false},"VoicemailDropCallMessageDetails":{"type":"object","title":"Voicemail drop call details","description":"Flat details when parent `type` is `voicemail_drop_call`.","properties":{"duration_minutes":{"type":"number","description":"Total call length in minutes (may be fractional)."},"duration_seconds":{"type":"number","description":"Total call length in seconds."},"ended_at":{"type":"string","format":"date-time","description":"When the call ended."},"external_id":{"type":"string","description":"External id."},"parent_voicemail_drop_message_id":{"type":"string","description":"Parent voicemail drop message id."},"started_at":{"type":"string","format":"date-time","description":"When the call started."},"voicemail_drop_audio_url":{"type":"string","description":"HTTPS URL of the MP3 to play on the drop leg (voicemail_drop_call message type)"}},"additionalProperties":false},"AiToolCallMessageDetails":{"type":"object","title":"AI tool call details","description":"Flat details when parent `type` is `ai_tool_call`.","properties":{"ai_agent_id":{"type":"string","description":"Ai agent id."},"ai_conversation_round_id":{"type":"string","description":"Ai conversation round id."},"description":{"type":"string","description":"Tool description shown in the conversation timeline."},"label":{"type":"string","description":"Human-readable tool label."},"name":{"type":"string","description":"Tool name (for `ai_tool_call`)."},"parent_ai_phone_call_id":{"type":"string","description":"Parent ai phone call id."}},"additionalProperties":false},"InternalNoteMessageDetails":{"type":"object","title":"Internal note details","description":"Flat details when parent `type` is `internal_note`.","properties":{"parent_ai_phone_call_id":{"type":"string","description":"Parent ai phone call id."},"parent_ai_widget_call_id":{"type":"string","description":"Parent ai widget call id."}},"additionalProperties":false},"AiStoppedConversationMessageDetails":{"type":"object","title":"AI stopped conversation details","description":"Flat details when parent `type` is `ai_stopped_conversation`.","properties":{"ai_agent_id":{"type":"string","description":"Ai agent id."},"explanation":{"type":"string","description":"Human-readable stop explanation."},"reason":{"type":"string","description":"Stop reason code."}},"additionalProperties":false},"WidgetMessageDetails":{"type":"object","title":"Widget details","description":"Flat details when parent `type` is `widget`.","properties":{"external_id":{"type":"string","description":"External id."},"web_widget_id":{"type":"string","description":"Web widget id."}},"additionalProperties":false},"CustomMessageDetails":{"type":"object","title":"Custom channel details","description":"Flat details when parent `type` is `custom`.","properties":{"app_id":{"type":"string","description":"App id."},"app_installation_id":{"type":"string","description":"App installation id."},"custom_channel_id":{"type":"string","description":"Custom channel id."},"external_id":{"type":"string","description":"External id."}},"additionalProperties":false},"MessageDetails":{"description":"Type-specific payload (flat fields). Shape matches the parent message's `type` — see the `type` field on Message, the message searching guide field table, or the named schema below (e.g. `type: call_transfer` → CallTransferMessageDetails).","oneOf":[{"$ref":"#/components/schemas/AiPhoneCallMessageDetails","title":"AI phone call"},{"$ref":"#/components/schemas/AiPhoneVoiceTurnMessageDetails","title":"AI phone voice turn"},{"$ref":"#/components/schemas/AiStoppedConversationMessageDetails","title":"AI stopped conversation"},{"$ref":"#/components/schemas/AiToolCallMessageDetails","title":"AI tool call"},{"$ref":"#/components/schemas/AiWebVoiceTurnMessageDetails","title":"AI web voice turn"},{"$ref":"#/components/schemas/AiWidgetCallMessageDetails","title":"AI widget call"},{"$ref":"#/components/schemas/CallTransferMessageDetails","title":"Call transfer"},{"$ref":"#/components/schemas/CustomMessageDetails","title":"Custom channel"},{"$ref":"#/components/schemas/EmailMessageDetails","title":"Email"},{"$ref":"#/components/schemas/InternalNoteMessageDetails","title":"Internal note"},{"$ref":"#/components/schemas/PhoneCallMessageDetails","title":"Phone call"},{"$ref":"#/components/schemas/SmsMessageDetails","title":"SMS"},{"$ref":"#/components/schemas/VoicemailDropCallMessageDetails","title":"Voicemail drop call"},{"$ref":"#/components/schemas/WidgetMessageDetails","title":"Widget"}]},"ListMessagesInConversationRequest":{"type":"object","description":"Search or list messages in a conversation. Conversation is scoped by the URL; optional `filters` narrow results.","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":200,"description":"Maximum messages per page (default 50, max 200)."},"offset":{"type":"integer","default":0,"minimum":0,"description":"Pagination offset (default 0)."},"types":{"type":"array","description":"Message types to include. Omit or pass an empty array to return all types.","items":{"type":"string","enum":["ai_phone_voice_turn","ai_web_voice_turn","ai_agent_stopped_conversation","internal_note","widget","ai_tool_call","email","phone_call","ai_phone_call","custom","sms","call_transfer","ai_stopped_conversation","ai_widget_call","voicemail_drop_call"]}}}},"MessageAttachment":{"type":"object","description":"File attachment to include with the message.","required":["file_url","file_name"],"properties":{"file_url":{"type":"string","description":"Public URL of the attachment file."},"file_name":{"type":"string","description":"Display file name for the attachment."}},"additionalProperties":false},"SendMessageRequest":{"type":"object","required":["message_body"],"properties":{"message_body":{"type":"string","description":"Message text to send."},"attachments":{"type":"array","description":"Optional file attachments.","items":{"$ref":"#/components/schemas/MessageAttachment"}}},"additionalProperties":false},"CallTranscriptChannel":{"type":"object","description":"Per-channel transcript summary from multichannel call recording.","properties":{"channel":{"type":"integer","description":"Zero-based audio channel index."},"speaker":{"type":"string","description":"Speaker label for the channel (e.g. Contact, You, AI)."},"transcript":{"type":"string","description":"Full transcript text for this channel."},"confidence":{"type":"number","nullable":true,"description":"Transcription confidence when available."}}},"CallTranscriptUtterance":{"type":"object","description":"One timed utterance in a structured phone call transcript.","properties":{"channel":{"type":"integer","description":"Zero-based audio channel index."},"transcript":{"type":"string","description":"Speaker label (e.g. Contact, You, AI)."},"start":{"type":"number","nullable":true,"description":"Start time in seconds."},"end":{"type":"number","nullable":true,"description":"End time in seconds."},"text":{"type":"string","description":"Utterance transcript text."}},"required":["text"]},"CallTranscriptJson":{"type":"object","description":"Structured multichannel call transcript stored on phone_call messages.","properties":{"version":{"type":"integer"},"direction":{"type":"string","enum":["inbound","outbound"]},"multichannel":{"type":"boolean"},"source":{"type":"string","description":"Optional source hint (e.g. ai_phone_voice_turns when built from voice turns)."},"channels":{"type":"array","items":{"$ref":"#/components/schemas/CallTranscriptChannel"}},"utterances":{"type":"array","items":{"$ref":"#/components/schemas/CallTranscriptUtterance"}}}},"MessageTranscriptionData":{"type":"object","properties":{"message_id":{"type":"string"},"type":{"type":"string","enum":["phone_call","ai_phone_call"]},"transcript":{"type":"string","nullable":true,"description":"Plain-text call transcript when available."},"transcript_json":{"nullable":true,"allOf":[{"$ref":"#/components/schemas/CallTranscriptJson"}],"description":"Structured multichannel transcript (channels + utterances)."}},"required":["message_id","type"]},"MessageTranscriptionResponse":{"type":"object","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"data":{"$ref":"#/components/schemas/MessageTranscriptionData"}},"required":["success","message","data"]},"OrganizationMember":{"type":"object","description":"Embedded owner summary on a workspace.","properties":{"id":{"type":"string","description":"User record ID."},"email":{"type":"string","description":"Login email address."},"first_name":{"type":"string","nullable":true,"description":"Given name."},"last_name":{"type":"string","nullable":true,"description":"Family name."},"phone_number":{"type":"string","nullable":true,"description":"E.164 phone number when set."},"profile_picture_url":{"type":"string","nullable":true,"description":"Public URL for the profile picture."},"organization_role":{"type":"string","nullable":true,"description":"Role within the organization.","enum":["organization_owner","organization_admin","organization_user"]},"organization_id":{"type":"string","description":"Organization this user belongs to."},"workspaces":{"type":"array","description":"Workspace IDs the member can access.","items":{"type":"string"}},"created_at":{"type":"string","format":"date-time","description":"When the user record was created."},"updated_at":{"type":"string","format":"date-time","description":"When the user record was last updated."}}},"OrganizationMemberListRequest":{"type":"object","description":"Pagination and sort options for listing organization members.","properties":{"limit":{"type":"integer","default":100,"maximum":200,"description":"Maximum rows to return. Default 100, max 200."},"offset":{"type":"integer","default":0,"description":"Number of rows to skip for pagination."},"sort_by":{"type":"string","default":"created_at","description":"Field to sort by (e.g. `created_at`, `updated_at`, `email`)."},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction."},"filters":{"type":"array","description":"Optional filter objects forwarded to the upstream list (advanced).","items":{"type":"object"}}}},"OrganizationMemberAddRequest":{"type":"object","description":"Invite or create an organization user. Use workspace add/remove routes to enroll workspaces.","required":["email"],"properties":{"email":{"type":"string","description":"Email address for the new or existing user."},"first_name":{"type":"string","description":"Given name. Applied when a new user is created."},"last_name":{"type":"string","description":"Family name. Applied when a new user is created."},"phone_number":{"type":"string","description":"E.164 phone number (e.g. `+15551234567`). Set on new or existing users when provided."},"organization_role":{"type":"string","enum":["organization_admin","organization_user"],"default":"organization_user","description":"Organization-level role. Default `organization_user`."},"send_activation_email":{"type":"boolean","default":false,"description":"When true, send an account activation email to the user."}}},"OrganizationMemberUpdateRequest":{"type":"object","description":"Update organization member identity fields. At least one field is required.","properties":{"organization_role":{"type":"string","enum":["organization_admin","organization_user"],"description":"Organization-level role. Must be `organization_admin` or `organization_user`."},"first_name":{"type":"string","description":"Given name."},"last_name":{"type":"string","description":"Family name."},"phone_number":{"type":"string","nullable":true,"description":"E.164 phone number (e.g. `+15551234567`). Pass `null` to clear."},"email":{"type":"string","description":"Login email address."}}},"OrganizationMemberWorkspaceAddRequest":{"type":"object","description":"Enroll an organization member in a workspace.","required":["workspace_id"],"properties":{"workspace_id":{"type":"string","description":"Workspace ID to enroll the member in. Must belong to the same organization."},"role":{"type":"string","enum":["admin","member"],"default":"member","description":"Workspace membership role. Default `member`."}}},"OrganizationMemberWorkspaceRemoveRequest":{"type":"object","description":"Remove an organization member from one workspace.","required":["workspace_id"],"properties":{"workspace_id":{"type":"string","description":"Workspace ID to remove the member from."}}},"OrganizationMemberListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"type":"array","description":"Organization members for this page.","items":{"$ref":"#/components/schemas/OrganizationMember"}},"total":{"type":"integer","description":"Total matching members (all pages)."},"limit":{"type":"integer","description":"Limit applied to this response."},"offset":{"type":"integer","description":"Offset applied to this response."}}},"OrganizationMemberResponse":{"type":"object","description":"Single organization member result.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/OrganizationMember","description":"Member record when present."}}},"OrganizationWorkspace":{"type":"object","description":"Workspace summary within an organization.","properties":{"id":{"type":"string","description":"Workspace ID. Use with workspace-scoped API keys for CRM routes."},"name":{"type":"string","description":"Display name."},"timezone":{"type":"string","nullable":true,"description":"IANA timezone (e.g. `America/New_York`)."},"is_active":{"type":"boolean","description":"False when the workspace is deactivated."},"organization_id":{"type":"string","description":"Parent organization ID."},"owner_id":{"type":"string","nullable":true,"description":"User id of the workspace owner."},"owner":{"$ref":"#/components/schemas/OrganizationMember","description":"Workspace owner user summary when available (not returned on list/get today)."},"created_at":{"type":"string","format":"date-time","description":"When the workspace was created."},"updated_at":{"type":"string","format":"date-time","description":"When the workspace was last updated."}}},"OrganizationWorkspaceListRequest":{"type":"object","description":"Pagination and sort options for listing workspaces.","properties":{"limit":{"type":"integer","default":50,"maximum":200,"description":"Maximum rows to return. Default 50, max 200."},"offset":{"type":"integer","default":0,"description":"Number of rows to skip for pagination."},"sort_by":{"type":"string","enum":["name","created_at","updated_at"],"default":"created_at","description":"Field to sort by."},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction."},"filters":{"type":"array","description":"Optional filter objects forwarded to the upstream list (advanced).","items":{"type":"object"}}}},"OrganizationWorkspaceCreateRequest":{"type":"object","description":"Create a workspace and optionally provision an owner user.","required":["name"],"properties":{"name":{"type":"string","description":"Workspace display name."},"description":{"type":"string","description":"Optional workspace description."},"first_name":{"type":"string","description":"Owner first name when creating a new user."},"last_name":{"type":"string","description":"Owner last name when creating a new user."},"email":{"type":"string","description":"Owner email. Required when provisioning a new owner user."},"phone_number":{"type":"string","description":"Owner phone number (E.164)."},"send_activation_email":{"type":"boolean","default":false,"description":"Send an activation email to the owner."},"auto_activate":{"type":"boolean","description":"Activate the workspace immediately after creation."},"frontend_domain":{"type":"string","description":"Client origin for owner activation links."},"base_snapshot":{"type":"string","description":"Workspace snapshot ID to clone into the new workspace."},"activate_active_workflows":{"type":"boolean","description":"When cloning from a snapshot, activate workflows copied into the workspace."},"activate_active_campaigns":{"type":"boolean","description":"When cloning from a snapshot, activate campaigns copied into the workspace."},"copy_features_from_workspace":{"type":"string","description":"Existing workspace ID in the same org to copy feature flags from."}}},"OrganizationWorkspaceListResponse":{"type":"object","description":"Paginated workspace list result.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"type":"array","description":"Workspaces for this page.","items":{"$ref":"#/components/schemas/OrganizationWorkspace"}},"total":{"type":"integer","description":"Total matching workspaces (all pages)."},"limit":{"type":"integer","description":"Limit applied to this response."},"offset":{"type":"integer","description":"Offset applied to this response."}}},"OrganizationWorkspaceResponse":{"type":"object","description":"Single workspace result.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/OrganizationWorkspace","description":"Workspace record when present."}}},"RollingTimestampValue":{"type":"object","description":"Relative timestamp window for gt/lt/gte/lte on timestamp fields.","required":["amount","unit"],"properties":{"amount":{"type":"integer","minimum":1},"unit":{"type":"string","enum":["minute","hour","day","week","month"]}},"additionalProperties":false},"ListRecordsFilterValue":{"description":"Filter value. Omit for is_empty / is_not_empty operators.","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},{"$ref":"#/components/schemas/RollingTimestampValue"}]},"ListRecordsFilterOperator":{"type":"string","description":"list_records operator. Allowed operators depend on field type (validated server-side).","enum":["eq","ne","gt","lt","gte","lte","contains","not_contains","starts_with","ends_with","in","not_in","is_empty","is_not_empty"]},"ListRecordsTimestampFilterValue":{"description":"Timestamp value. ISO string or unix number; rolling {amount, unit} for gt/gte/lt/lte.","oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"},{"$ref":"#/components/schemas/RollingTimestampValue","title":"Rolling window"}]},"OpportunitySearchRequest":{"type":"object","description":"Search opportunities in a workspace with optional filters, pagination, and sorting.","properties":{"filters":{"type":"array","description":"Filters AND-combined at the top level. Each item is a typed standard-field filter or nested group.","items":{"$ref":"#/components/schemas/OpportunityFilterItem"}},"limit":{"type":"integer","default":100,"minimum":1,"maximum":200,"description":"Maximum opportunities per page (default 100, max 200)."},"offset":{"type":"integer","default":0,"minimum":0,"description":"Pagination offset (default 0)."},"sort_by":{"type":"string","description":"Opportunity field to sort by (e.g. created_at, updated_at, title, value)."},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort direction (default desc)."}}},"Opportunity":{"type":"object","description":"Pipeline opportunity. FK columns are returned as `*_id` id strings. Internal-only columns (workspace, organization, custom) are never included.","properties":{"id":{"type":"string","description":"Opportunity record ID"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"contact_id":{"type":"string","description":"Contact record ID"},"pipeline_id":{"type":"string","description":"Pipeline record ID"},"current_stage_id":{"type":"string","description":"Pipeline stage record ID"},"title":{"type":"string","description":"Opportunity title"},"notes":{"type":"string","nullable":true,"description":"Free-form notes"},"value":{"type":"number","nullable":true,"description":"Monetary value"}},"additionalProperties":true},"OpportunitySearchResponse":{"type":"object","description":"Search results envelope. `data` is the page of matching opportunities.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"type":"array","description":"Matching opportunities for this page.","items":{"$ref":"#/components/schemas/Opportunity"}}},"required":["success","message","data"]},"OpportunityResponse":{"type":"object","description":"Standard API success envelope.","properties":{"success":{"type":"boolean","description":"True when the request succeeded."},"message":{"type":"string","description":"Human-readable status message."},"data":{"$ref":"#/components/schemas/Opportunity","description":"Single opportunity record."}},"required":["success","message","data"]},"OpportunityTextFilter_Eq":{"type":"object","title":"eq","description":"text filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_Ne":{"type":"object","title":"ne","description":"text filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_Gt":{"type":"object","title":"gt","description":"text filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_Lt":{"type":"object","title":"lt","description":"text filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_Gte":{"type":"object","title":"gte","description":"text filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_Lte":{"type":"object","title":"lte","description":"text filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_Contains":{"type":"object","title":"contains","description":"text filter with operator `contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains`.","enum":["contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_ContainsAny":{"type":"object","title":"contains_any","description":"text filter with operator `contains_any`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_any`.","enum":["contains_any"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"OpportunityTextFilter_ContainsAll":{"type":"object","title":"contains_all","description":"text filter with operator `contains_all`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_all`.","enum":["contains_all"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"OpportunityTextFilter_NotContains":{"type":"object","title":"not_contains","description":"text filter with operator `not_contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_contains`.","enum":["not_contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_StartsWith":{"type":"object","title":"starts_with","description":"text filter with operator `starts_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `starts_with`.","enum":["starts_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_EndsWith":{"type":"object","title":"ends_with","description":"text filter with operator `ends_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ends_with`.","enum":["ends_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"OpportunityTextFilter_In":{"type":"object","title":"in","description":"text filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"OpportunityTextFilter_NotIn":{"type":"object","title":"not_in","description":"text filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"OpportunityTextFilter_IsEmpty":{"type":"object","title":"is_empty","description":"text filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"OpportunityTextFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"text filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["id","notes","title"],"description":"text-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"OpportunityTextFieldFilter":{"title":"Text","description":"Filter on a text-type opportunity column.","oneOf":[{"$ref":"#/components/schemas/OpportunityTextFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/OpportunityTextFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/OpportunityTextFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/OpportunityTextFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/OpportunityTextFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/OpportunityTextFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/OpportunityTextFilter_Contains","title":"contains"},{"$ref":"#/components/schemas/OpportunityTextFilter_ContainsAny","title":"contains_any"},{"$ref":"#/components/schemas/OpportunityTextFilter_ContainsAll","title":"contains_all"},{"$ref":"#/components/schemas/OpportunityTextFilter_NotContains","title":"not_contains"},{"$ref":"#/components/schemas/OpportunityTextFilter_StartsWith","title":"starts_with"},{"$ref":"#/components/schemas/OpportunityTextFilter_EndsWith","title":"ends_with"},{"$ref":"#/components/schemas/OpportunityTextFilter_In","title":"in"},{"$ref":"#/components/schemas/OpportunityTextFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/OpportunityTextFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/OpportunityTextFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/OpportunityTextFilter_Eq","ne":"#/components/schemas/OpportunityTextFilter_Ne","gt":"#/components/schemas/OpportunityTextFilter_Gt","lt":"#/components/schemas/OpportunityTextFilter_Lt","gte":"#/components/schemas/OpportunityTextFilter_Gte","lte":"#/components/schemas/OpportunityTextFilter_Lte","contains":"#/components/schemas/OpportunityTextFilter_Contains","contains_any":"#/components/schemas/OpportunityTextFilter_ContainsAny","contains_all":"#/components/schemas/OpportunityTextFilter_ContainsAll","not_contains":"#/components/schemas/OpportunityTextFilter_NotContains","starts_with":"#/components/schemas/OpportunityTextFilter_StartsWith","ends_with":"#/components/schemas/OpportunityTextFilter_EndsWith","in":"#/components/schemas/OpportunityTextFilter_In","not_in":"#/components/schemas/OpportunityTextFilter_NotIn","is_empty":"#/components/schemas/OpportunityTextFilter_IsEmpty","is_not_empty":"#/components/schemas/OpportunityTextFilter_IsNotEmpty"}}},"OpportunityNumberFilter_Eq":{"type":"object","title":"eq","description":"number filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"number"}},"additionalProperties":false},"OpportunityNumberFilter_Ne":{"type":"object","title":"ne","description":"number filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"number"}},"additionalProperties":false},"OpportunityNumberFilter_Gt":{"type":"object","title":"gt","description":"number filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"number"}},"additionalProperties":false},"OpportunityNumberFilter_Lt":{"type":"object","title":"lt","description":"number filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"number"}},"additionalProperties":false},"OpportunityNumberFilter_Gte":{"type":"object","title":"gte","description":"number filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"number"}},"additionalProperties":false},"OpportunityNumberFilter_Lte":{"type":"object","title":"lte","description":"number filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"number"}},"additionalProperties":false},"OpportunityNumberFilter_In":{"type":"object","title":"in","description":"number filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"number"}}},"additionalProperties":false},"OpportunityNumberFilter_NotIn":{"type":"object","title":"not_in","description":"number filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"number"}}},"additionalProperties":false},"OpportunityNumberFilter_IsEmpty":{"type":"object","title":"is_empty","description":"number filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"OpportunityNumberFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"number filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["value"],"description":"number-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"OpportunityNumberFieldFilter":{"title":"Number","description":"Filter on a number-type opportunity column.","oneOf":[{"$ref":"#/components/schemas/OpportunityNumberFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/OpportunityNumberFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/OpportunityNumberFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/OpportunityNumberFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/OpportunityNumberFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/OpportunityNumberFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/OpportunityNumberFilter_In","title":"in"},{"$ref":"#/components/schemas/OpportunityNumberFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/OpportunityNumberFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/OpportunityNumberFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/OpportunityNumberFilter_Eq","ne":"#/components/schemas/OpportunityNumberFilter_Ne","gt":"#/components/schemas/OpportunityNumberFilter_Gt","lt":"#/components/schemas/OpportunityNumberFilter_Lt","gte":"#/components/schemas/OpportunityNumberFilter_Gte","lte":"#/components/schemas/OpportunityNumberFilter_Lte","in":"#/components/schemas/OpportunityNumberFilter_In","not_in":"#/components/schemas/OpportunityNumberFilter_NotIn","is_empty":"#/components/schemas/OpportunityNumberFilter_IsEmpty","is_not_empty":"#/components/schemas/OpportunityNumberFilter_IsNotEmpty"}}},"OpportunityTimestampFilter_Eq":{"type":"object","title":"eq","description":"timestamp filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"OpportunityTimestampFilter_Ne":{"type":"object","title":"ne","description":"timestamp filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"OpportunityTimestampFilter_Gt":{"type":"object","title":"gt","description":"timestamp filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"OpportunityTimestampFilter_Lt":{"type":"object","title":"lt","description":"timestamp filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"OpportunityTimestampFilter_Gte":{"type":"object","title":"gte","description":"timestamp filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"OpportunityTimestampFilter_Lte":{"type":"object","title":"lte","description":"timestamp filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"OpportunityTimestampFilter_In":{"type":"object","title":"in","description":"timestamp filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"OpportunityTimestampFilter_NotIn":{"type":"object","title":"not_in","description":"timestamp filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"OpportunityTimestampFilter_IsEmpty":{"type":"object","title":"is_empty","description":"timestamp filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"OpportunityTimestampFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"timestamp filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"OpportunityTimestampFieldFilter":{"title":"Timestamp","description":"Filter on a timestamp-type opportunity column.","oneOf":[{"$ref":"#/components/schemas/OpportunityTimestampFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_In","title":"in"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/OpportunityTimestampFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/OpportunityTimestampFilter_Eq","ne":"#/components/schemas/OpportunityTimestampFilter_Ne","gt":"#/components/schemas/OpportunityTimestampFilter_Gt","lt":"#/components/schemas/OpportunityTimestampFilter_Lt","gte":"#/components/schemas/OpportunityTimestampFilter_Gte","lte":"#/components/schemas/OpportunityTimestampFilter_Lte","in":"#/components/schemas/OpportunityTimestampFilter_In","not_in":"#/components/schemas/OpportunityTimestampFilter_NotIn","is_empty":"#/components/schemas/OpportunityTimestampFilter_IsEmpty","is_not_empty":"#/components/schemas/OpportunityTimestampFilter_IsNotEmpty"}}},"OpportunityReferenceFilter_Eq":{"type":"object","title":"eq","description":"reference filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["contact"],"description":"reference-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string"}},"additionalProperties":false},"OpportunityReferenceFilter_Ne":{"type":"object","title":"ne","description":"reference filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["contact"],"description":"reference-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string"}},"additionalProperties":false},"OpportunityReferenceFilter_In":{"type":"object","title":"in","description":"reference filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["contact"],"description":"reference-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"OpportunityReferenceFilter_NotIn":{"type":"object","title":"not_in","description":"reference filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["contact"],"description":"reference-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"OpportunityReferenceFilter_IsEmpty":{"type":"object","title":"is_empty","description":"reference filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["contact"],"description":"reference-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"OpportunityReferenceFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"reference filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["contact"],"description":"reference-type columns on opportunity. workspace and organization cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"OpportunityReferenceFieldFilter":{"title":"Reference","description":"Filter on a reference-type opportunity column.","oneOf":[{"$ref":"#/components/schemas/OpportunityReferenceFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/OpportunityReferenceFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/OpportunityReferenceFilter_In","title":"in"},{"$ref":"#/components/schemas/OpportunityReferenceFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/OpportunityReferenceFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/OpportunityReferenceFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/OpportunityReferenceFilter_Eq","ne":"#/components/schemas/OpportunityReferenceFilter_Ne","in":"#/components/schemas/OpportunityReferenceFilter_In","not_in":"#/components/schemas/OpportunityReferenceFilter_NotIn","is_empty":"#/components/schemas/OpportunityReferenceFilter_IsEmpty","is_not_empty":"#/components/schemas/OpportunityReferenceFilter_IsNotEmpty"}}},"OpportunityFilterGroup":{"type":"object","title":"Filter group","description":"Nested AND/OR filter group.","required":["filter_type","operator","filters"],"properties":{"filter_type":{"type":"string","enum":["group"],"description":"Use `group` for nested AND/OR filters."},"operator":{"type":"string","enum":["AND","OR"],"description":"Combine nested filters with AND or OR."},"filters":{"type":"array","minItems":1,"description":"Child filters inside this group.","items":{"$ref":"#/components/schemas/OpportunityFilterItem"}}},"additionalProperties":false},"OpportunityFilterItem":{"description":"Field filter or nested AND/OR group.","oneOf":[{"$ref":"#/components/schemas/OpportunityTextFieldFilter","title":"Text"},{"$ref":"#/components/schemas/OpportunityNumberFieldFilter","title":"Number"},{"$ref":"#/components/schemas/OpportunityTimestampFieldFilter","title":"Timestamp"},{"$ref":"#/components/schemas/OpportunityReferenceFieldFilter","title":"Reference"},{"$ref":"#/components/schemas/OpportunityFilterGroup","title":"Filter group"}],"discriminator":{"propertyName":"filter_type","mapping":{"text":"#/components/schemas/OpportunityTextFieldFilter","number":"#/components/schemas/OpportunityNumberFieldFilter","timestamp":"#/components/schemas/OpportunityTimestampFieldFilter","reference":"#/components/schemas/OpportunityReferenceFieldFilter","group":"#/components/schemas/OpportunityFilterGroup"}}},"ContactCustomFieldDefinition":{"type":"object","properties":{"id":{"type":"string","description":"Record ID"},"created_at":{"type":"string","description":"ISO 8601 created timestamp"},"updated_at":{"type":"string","description":"ISO 8601 updated timestamp"},"app":{"type":"string","nullable":true,"description":"App"},"group":{"type":"string","nullable":true,"description":"contact_custom_field_group id this field belongs to"},"description":{"type":"string","nullable":true,"description":"Human-readable description shown in the UI"},"field_name":{"type":"string","description":"Unique custom field name (used as the key on contact `custom` values)"},"field_type":{"type":"string","description":"Custom field data type (`text`, `number`, `boolean`, `timestamp`, `select`, `multi_select`, etc.)"},"is_unique_field":{"type":"boolean","description":"Is unique field"},"read_only_app_field":{"type":"boolean","description":"Read only app field"},"organization":{"type":"string","nullable":true,"description":"Organization record ID linked to the pipeline"},"select_options":{"type":"array","nullable":true,"items":{"type":"string"},"description":"Option values for `select` / `multi_select` fields (plain strings)"},"workspace":{"type":"string","nullable":true,"description":"Workspace"}}},"ContactCustomFieldDefinitionListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ContactCustomFieldDefinition"},"description":"Response payload"},"total":{"type":"integer","description":"Total matching records (all pages)"}}},"ContactCustomFieldDefinitionListRequest":{"type":"object","properties":{"field_name":{"type":"string","description":"Exact match shorthand for field_name eq filter"},"field_type":{"type":"string","description":"Exact match shorthand for field_type eq filter"},"group_id":{"type":"string","description":"Exact match shorthand for group eq filter (contact_custom_field_group id)"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/ContactCustomFieldDefinitionFilterItem"},"description":"list_records filters AND-combined with workspace scope. JSON array of filter objects in the POST request body."},"limit":{"type":"integer","default":200,"description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","default":0,"description":"Number of records to skip for pagination (default 0)"},"sort_by":{"type":"string","enum":["field_name","created_at","updated_at","field_type"],"description":"Field name to sort results by"},"sort_direction":{"type":"string","enum":["asc","desc"],"description":"Sort order: `asc` or `desc` (default `desc`)"}}},"ContactCustomFieldGroup":{"type":"object","properties":{"id":{"type":"string","description":"Record ID"},"created_at":{"type":"string","description":"ISO 8601 created timestamp"},"updated_at":{"type":"string","description":"ISO 8601 updated timestamp"},"name":{"type":"string","description":"Display name for the group in settings and contact details"},"description":{"type":"string","nullable":true,"description":"Optional description shown in the UI"},"icon":{"type":"string","nullable":true,"description":"Optional icon identifier (e.g. tabler:folder)"},"organization":{"type":"string","nullable":true,"description":"Organization record ID"},"workspace":{"type":"string","nullable":true,"description":"Workspace record ID"}}},"ContactCustomFieldGroupListRequest":{"type":"object","properties":{"name":{"type":"string","description":"Exact match on group name"},"limit":{"type":"integer","default":200,"description":"Maximum number of groups to return"},"offset":{"type":"integer","default":0,"description":"Number of groups to skip for pagination"},"sort_by":{"type":"string","enum":["name","created_at","updated_at"],"description":"Field to sort groups by"},"sort_direction":{"type":"string","enum":["asc","desc"],"description":"Sort direction"}}},"ContactCustomFieldGroupListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ContactCustomFieldGroup"},"description":"Matching contact custom field groups"},"total":{"type":"integer","description":"Total number of matching groups (before pagination)"}}},"ContactCustomFieldGroupResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"$ref":"#/components/schemas/ContactCustomFieldGroup","description":"Response payload"}}},"ContactCustomFieldDefinitionTextFilter_Eq":{"type":"object","title":"eq","description":"text filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_Ne":{"type":"object","title":"ne","description":"text filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_Gt":{"type":"object","title":"gt","description":"text filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_Lt":{"type":"object","title":"lt","description":"text filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_Gte":{"type":"object","title":"gte","description":"text filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_Lte":{"type":"object","title":"lte","description":"text filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_Contains":{"type":"object","title":"contains","description":"text filter with operator `contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains`.","enum":["contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_ContainsAny":{"type":"object","title":"contains_any","description":"text filter with operator `contains_any`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_any`.","enum":["contains_any"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_ContainsAll":{"type":"object","title":"contains_all","description":"text filter with operator `contains_all`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_all`.","enum":["contains_all"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_NotContains":{"type":"object","title":"not_contains","description":"text filter with operator `not_contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_contains`.","enum":["not_contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_StartsWith":{"type":"object","title":"starts_with","description":"text filter with operator `starts_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `starts_with`.","enum":["starts_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_EndsWith":{"type":"object","title":"ends_with","description":"text filter with operator `ends_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ends_with`.","enum":["ends_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_In":{"type":"object","title":"in","description":"text filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_NotIn":{"type":"object","title":"not_in","description":"text filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_IsEmpty":{"type":"object","title":"is_empty","description":"text filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"text filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","field_name","id"],"description":"text-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionTextFieldFilter":{"title":"Text","description":"Filter on a text-type contact_custom_field_definition column.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Contains","title":"contains"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_ContainsAny","title":"contains_any"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_ContainsAll","title":"contains_all"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_NotContains","title":"not_contains"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_StartsWith","title":"starts_with"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_EndsWith","title":"ends_with"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Eq","ne":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Ne","gt":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Gt","lt":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Lt","gte":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Gte","lte":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Lte","contains":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_Contains","contains_any":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_ContainsAny","contains_all":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_ContainsAll","not_contains":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_NotContains","starts_with":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_StartsWith","ends_with":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_EndsWith","in":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_In","not_in":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_NotIn","is_empty":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactCustomFieldDefinitionTextFilter_IsNotEmpty"}}},"ContactCustomFieldDefinitionBooleanFilter_Eq":{"type":"object","title":"eq","description":"boolean filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `boolean`.","enum":["boolean"]},"field":{"type":"string","enum":["is_unique_field","read_only_app_field"],"description":"boolean-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"boolean","description":"Boolean filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionBooleanFilter_Ne":{"type":"object","title":"ne","description":"boolean filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `boolean`.","enum":["boolean"]},"field":{"type":"string","enum":["is_unique_field","read_only_app_field"],"description":"boolean-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"boolean","description":"Boolean filter value."}},"additionalProperties":false},"ContactCustomFieldDefinitionBooleanFilter_In":{"type":"object","title":"in","description":"boolean filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `boolean`.","enum":["boolean"]},"field":{"type":"string","enum":["is_unique_field","read_only_app_field"],"description":"boolean-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"boolean"},"description":"List of boolean values."}},"additionalProperties":false},"ContactCustomFieldDefinitionBooleanFilter_NotIn":{"type":"object","title":"not_in","description":"boolean filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `boolean`.","enum":["boolean"]},"field":{"type":"string","enum":["is_unique_field","read_only_app_field"],"description":"boolean-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"boolean"},"description":"List of boolean values."}},"additionalProperties":false},"ContactCustomFieldDefinitionBooleanFilter_IsEmpty":{"type":"object","title":"is_empty","description":"boolean filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `boolean`.","enum":["boolean"]},"field":{"type":"string","enum":["is_unique_field","read_only_app_field"],"description":"boolean-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionBooleanFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"boolean filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `boolean`.","enum":["boolean"]},"field":{"type":"string","enum":["is_unique_field","read_only_app_field"],"description":"boolean-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionBooleanFieldFilter":{"title":"Boolean","description":"Filter on a boolean-type contact_custom_field_definition column.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_Eq","ne":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_Ne","in":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_In","not_in":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_NotIn","is_empty":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactCustomFieldDefinitionBooleanFilter_IsNotEmpty"}}},"ContactCustomFieldDefinitionTimestampFilter_Eq":{"type":"object","title":"eq","description":"timestamp filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_Ne":{"type":"object","title":"ne","description":"timestamp filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_Gt":{"type":"object","title":"gt","description":"timestamp filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_Lt":{"type":"object","title":"lt","description":"timestamp filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_Gte":{"type":"object","title":"gte","description":"timestamp filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_Lte":{"type":"object","title":"lte","description":"timestamp filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_In":{"type":"object","title":"in","description":"timestamp filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_NotIn":{"type":"object","title":"not_in","description":"timestamp filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_IsEmpty":{"type":"object","title":"is_empty","description":"timestamp filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"timestamp filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionTimestampFieldFilter":{"title":"Timestamp","description":"Filter on a timestamp-type contact_custom_field_definition column.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Eq","ne":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Ne","gt":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Gt","lt":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Lt","gte":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Gte","lte":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_Lte","in":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_In","not_in":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_NotIn","is_empty":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactCustomFieldDefinitionTimestampFilter_IsNotEmpty"}}},"ContactCustomFieldDefinitionReferenceFilter_Eq":{"type":"object","title":"eq","description":"reference filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["app","field_type","group","organization"],"description":"reference-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string"}},"additionalProperties":false},"ContactCustomFieldDefinitionReferenceFilter_Ne":{"type":"object","title":"ne","description":"reference filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["app","field_type","group","organization"],"description":"reference-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string"}},"additionalProperties":false},"ContactCustomFieldDefinitionReferenceFilter_In":{"type":"object","title":"in","description":"reference filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["app","field_type","group","organization"],"description":"reference-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactCustomFieldDefinitionReferenceFilter_NotIn":{"type":"object","title":"not_in","description":"reference filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["app","field_type","group","organization"],"description":"reference-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactCustomFieldDefinitionReferenceFilter_IsEmpty":{"type":"object","title":"is_empty","description":"reference filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["app","field_type","group","organization"],"description":"reference-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionReferenceFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"reference filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["app","field_type","group","organization"],"description":"reference-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionReferenceFieldFilter":{"title":"Reference","description":"Filter on a reference-type contact_custom_field_definition column.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_Eq","ne":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_Ne","in":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_In","not_in":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_NotIn","is_empty":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactCustomFieldDefinitionReferenceFilter_IsNotEmpty"}}},"ContactCustomFieldDefinitionListFilter_Contains":{"type":"object","title":"contains","description":"list filter with operator `contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains`.","enum":["contains"]},"value":{"type":"string","description":"Text to match in list field."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ContainsAny":{"type":"object","title":"contains_any","description":"list filter with operator `contains_any`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_any`.","enum":["contains_any"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ContainsAll":{"type":"object","title":"contains_all","description":"list filter with operator `contains_all`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_all`.","enum":["contains_all"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_NotContains":{"type":"object","title":"not_contains","description":"list filter with operator `not_contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_contains`.","enum":["not_contains"]},"value":{"type":"string","description":"Text to match in list field."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_IsEmpty":{"type":"object","title":"is_empty","description":"list filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"list filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ArrayLength":{"type":"object","title":"array_length","description":"list filter with operator `array_length`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `array_length`.","enum":["array_length"]},"value":{"type":"number","description":"Array length for array_length_* operators."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ArrayLengthNe":{"type":"object","title":"array_length_ne","description":"list filter with operator `array_length_ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `array_length_ne`.","enum":["array_length_ne"]},"value":{"type":"number","description":"Array length for array_length_* operators."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ArrayLengthGt":{"type":"object","title":"array_length_gt","description":"list filter with operator `array_length_gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `array_length_gt`.","enum":["array_length_gt"]},"value":{"type":"number","description":"Array length for array_length_* operators."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ArrayLengthGte":{"type":"object","title":"array_length_gte","description":"list filter with operator `array_length_gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `array_length_gte`.","enum":["array_length_gte"]},"value":{"type":"number","description":"Array length for array_length_* operators."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ArrayLengthLt":{"type":"object","title":"array_length_lt","description":"list filter with operator `array_length_lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `array_length_lt`.","enum":["array_length_lt"]},"value":{"type":"number","description":"Array length for array_length_* operators."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFilter_ArrayLengthLte":{"type":"object","title":"array_length_lte","description":"list filter with operator `array_length_lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `list`.","enum":["list"]},"field":{"type":"string","enum":["select_options"],"description":"list-type columns on contact_custom_field_definition. workspace and folder cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `array_length_lte`.","enum":["array_length_lte"]},"value":{"type":"number","description":"Array length for array_length_* operators."}},"additionalProperties":false},"ContactCustomFieldDefinitionListFieldFilter":{"title":"List","description":"Filter on a list-type contact_custom_field_definition column.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_Contains","title":"contains"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ContainsAny","title":"contains_any"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ContainsAll","title":"contains_all"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_NotContains","title":"not_contains"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_IsNotEmpty","title":"is_not_empty"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLength","title":"array_length"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthNe","title":"array_length_ne"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthGt","title":"array_length_gt"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthGte","title":"array_length_gte"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthLt","title":"array_length_lt"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthLte","title":"array_length_lte"}],"discriminator":{"propertyName":"operator","mapping":{"contains":"#/components/schemas/ContactCustomFieldDefinitionListFilter_Contains","contains_any":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ContainsAny","contains_all":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ContainsAll","not_contains":"#/components/schemas/ContactCustomFieldDefinitionListFilter_NotContains","is_empty":"#/components/schemas/ContactCustomFieldDefinitionListFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactCustomFieldDefinitionListFilter_IsNotEmpty","array_length":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLength","array_length_ne":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthNe","array_length_gt":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthGt","array_length_gte":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthGte","array_length_lt":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthLt","array_length_lte":"#/components/schemas/ContactCustomFieldDefinitionListFilter_ArrayLengthLte"}}},"ContactCustomFieldDefinitionFilterGroup":{"type":"object","title":"Filter group","description":"Nested AND/OR filter group.","required":["filter_type","operator","filters"],"properties":{"filter_type":{"type":"string","enum":["group"],"description":"Use `group` for nested AND/OR filters."},"operator":{"type":"string","enum":["AND","OR"],"description":"Combine nested filters with AND or OR."},"filters":{"type":"array","minItems":1,"description":"Child filters inside this group.","items":{"$ref":"#/components/schemas/ContactCustomFieldDefinitionFilterItem"}}},"additionalProperties":false},"ContactCustomFieldDefinitionFilterItem":{"description":"Field filter or nested AND/OR group.","oneOf":[{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTextFieldFilter","title":"Text"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionBooleanFieldFilter","title":"Boolean"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionTimestampFieldFilter","title":"Timestamp"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionReferenceFieldFilter","title":"Reference"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionListFieldFilter","title":"List"},{"$ref":"#/components/schemas/ContactCustomFieldDefinitionFilterGroup","title":"Filter group"}],"discriminator":{"propertyName":"filter_type","mapping":{"text":"#/components/schemas/ContactCustomFieldDefinitionTextFieldFilter","boolean":"#/components/schemas/ContactCustomFieldDefinitionBooleanFieldFilter","timestamp":"#/components/schemas/ContactCustomFieldDefinitionTimestampFieldFilter","reference":"#/components/schemas/ContactCustomFieldDefinitionReferenceFieldFilter","list":"#/components/schemas/ContactCustomFieldDefinitionListFieldFilter","group":"#/components/schemas/ContactCustomFieldDefinitionFilterGroup"}}},"WorkspacePermissionScope":{"type":"string","description":"workspace_permission_scope picklist id","enum":["active_schedules.readonly","active_schedules.write","ai_agents.readonly","ai_agents.write","ai_call_settings.readonly","ai_call_settings.write","ai_phone_calls.readonly","ai_phone_calls.write","api_keys.readonly","api_keys.write","billing.readonly","billing.write","calendar_events.readonly","calendar_events.write","calendars.readonly","calendars.write","campaigns.readonly","campaigns.write","communities.readonly","communities.write","contact_csv_exports.readonly","contact_csv_exports.write","contact_csv_imports.readonly","contact_csv_imports.write","contact_custom_field_definitions.readonly","contact_custom_field_definitions.write","contact_smartlists.readonly","contact_smartlists.write","contact_tag_definitions.readonly","contact_tag_definitions.write","contacts.readonly","contacts.write","conversation_smart_lists.readonly","conversation_smart_lists.write","conversations.readonly","conversations.write","custom_domains.readonly","custom_domains.write","custom_elements.readonly","custom_elements.write","custom_voice_clones.readonly","custom_voice_clones.write","dashboards.readonly","dashboards.write","eleven_labs_voices.readonly","eleven_labs_voices.write","email_domains.readonly","email_domains.write","fish_audio_voices.readonly","fish_audio_voices.write","forms.readonly","forms.write","integrations.readonly","integrations.write","log_smartlists.readonly","log_smartlists.write","logs.readonly","logs.write","openai_voices.readonly","openai_voices.write","phone_system.readonly","phone_system.write","pipelines.readonly","pipelines.write","prospecting.readonly","prospecting.write","system_ai_agent.readonly","system_ai_agent.write","websites.readonly","websites.write","whiteboards.readonly","whiteboards.write","widgets.readonly","widgets.write","workspace.general_info.readonly","workspace.general_info.write","workspace_docs.readonly","workspace_docs.write","workspace_member_custom_field_definitions.readonly","workspace_member_custom_field_definitions.write","workspace_members.readonly","workspace_members.write","workspace_tasks.readonly","workspace_tasks.write","workspace_values.readonly","workspace_values.write","workflows.readonly","workflows.write"]},"AllowedCrmPhoneNumberIdList":{"type":"array","nullable":true,"description":"Additional crm_phone_number record ids this member may use for local presence (beyond assigned). Pass null to clear.","items":{"type":"string","description":"crm_phone_number record id in this workspace"}},"FrontendDomain":{"type":"string","description":"Optional host or full URL origin from the client used for activation or magic-login links (e.g. app.example.com or https://tenant.rohocrm.com). Invalid values are ignored server-side."},"WorkspaceMemberCustomFieldValue":{"description":"Typed value for a workspace-member custom field. Shape depends on the field definition (text, number, boolean, select, multi_select, timestamp, etc.).","oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"},"description":"multi_select or text_list values"},{"nullable":true,"type":"object"}]},"WorkspaceMemberCustomValues":{"type":"object","description":"Workspace-member custom field values keyed by field_name (snake_case). List definitions via workspace-member custom field definitions API.","additionalProperties":{"$ref":"#/components/schemas/WorkspaceMemberCustomFieldValue"}},"WorkspaceMemberAssignedCrmPhone":{"type":"object","description":"Assigned CRM phone summary (display name, line, active flag).","properties":{"id":{"type":"string","description":"Record ID"},"display_name":{"type":"string","nullable":true,"description":"Display name"},"phone_number":{"type":"string","nullable":true,"description":"Phone number (E.164 recommended)"},"is_active":{"type":"boolean","nullable":true,"description":"Whether this definition is active"}},"required":["id"],"additionalProperties":false},"WorkspaceMemberAssignedEmailAccount":{"type":"object","description":"Assigned email account summary only (``email_domain`` expanded server-side for ``domain``; no full domain row returned).","properties":{"id":{"type":"string","description":"Record ID"},"email":{"type":"string","nullable":true,"description":"Email address"},"name":{"type":"string","nullable":true,"description":"Display name for the tag or pipeline"},"is_active":{"type":"boolean","nullable":true,"description":"Whether this definition is active"},"domain":{"type":"string","nullable":true,"description":"Domain"}},"required":["id"],"additionalProperties":false},"WorkspaceMemberApi":{"type":"object","description":"Workspace member as returned by this HTTP API after formatting: nested ``custom`` by field name; linked user identity flattened as ``email``, ``first_name``, ``last_name``, ``phone_number``, ``profile_picture_url``. Raw ``custom_field_cache`` (definition-id keyed) and ``workspace_member_custom_field_values`` id lists are not exposed to clients.","properties":{"id":{"type":"string","description":"Record ID"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 created timestamp"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 updated timestamp"},"organization":{"type":"string","description":"Organization record ID linked to the pipeline"},"workspace":{"type":"string","description":"Workspace"},"user":{"type":"string","description":"Linked user record id (identity fields below are flattened from this user)."},"email":{"type":"string","nullable":true,"description":"Linked user's email (flattened)."},"first_name":{"type":"string","nullable":true,"description":"Linked user's first name (flattened)."},"last_name":{"type":"string","nullable":true,"description":"Linked user's last name (flattened)."},"phone_number":{"type":"string","nullable":true,"description":"Linked user's phone number (flattened)."},"profile_picture_url":{"type":"string","nullable":true,"description":"Direct URL for the linked user's profile picture file when available."},"role":{"type":"string","enum":["owner","admin","member"],"description":"Workspace member role (`owner`, `admin`, or `member`)"},"permission_scopes":{"type":"array","items":{"type":"string"},"nullable":true,"description":"Granted permission scopes for this member"},"show_assigned_data_only":{"type":"boolean","nullable":true,"description":"When true, restrict data visibility to assigned records only"},"assigned_crm_phone_number":{"nullable":true,"description":"Assigned CRM phone summary; null if none.","allOf":[{"$ref":"#/components/schemas/WorkspaceMemberAssignedCrmPhone"}]},"allowed_crm_phone_numbers":{"$ref":"#/components/schemas/AllowedCrmPhoneNumberIdList","description":"Additional allowed CRM phone ids (assigned is always included in local presence pool at runtime)."},"assigned_email_account":{"nullable":true,"description":"Assigned email account summary; null if none.","allOf":[{"$ref":"#/components/schemas/WorkspaceMemberAssignedEmailAccount"}]},"is_magic_login_user":{"type":"boolean","nullable":true,"description":"Is magic login user"},"custom":{"$ref":"#/components/schemas/WorkspaceMemberCustomValues","description":"Workspace custom field values keyed by field name"}},"additionalProperties":true},"WorkspaceMemberAddRequest":{"type":"object","required":["email"],"description":"Create workspace_member + optional user. Optional workspace-member custom fields go in ``custom`` keyed by field_name.","properties":{"email":{"type":"string","format":"email","description":"Email of the user to add (user is created in the workspace org if needed)"},"first_name":{"type":"string","description":"Optional; applied only when a new user is created for this email/org"},"last_name":{"type":"string","description":"Optional; applied only when a new user is created for this email/org"},"phone_number":{"type":"string","description":"Optional phone number for the linked user (new or existing by email). Stored on the user record; member list responses expose it as flattened phone_number."},"role":{"type":"string","enum":["owner","admin","member"],"default":"member","description":"Workspace member role (`owner`, `admin`, or `member`)"},"send_activation_email":{"type":"boolean","default":false,"description":"Send activation email"},"frontend_domain":{"$ref":"#/components/schemas/FrontendDomain"},"custom":{"$ref":"#/components/schemas/WorkspaceMemberCustomValues","description":"Workspace custom field values keyed by field name"}},"additionalProperties":false},"WorkspaceMemberUpdateRequest":{"type":"object","minProperties":1,"description":"PATCH member: any combination of ``role`` and permission / assignment fields. At least one property required.","properties":{"role":{"type":"string","enum":["owner","admin","member"],"description":"Workspace member role"},"permission_scopes":{"type":"array","description":"Granted permission scopes for this member","items":{"$ref":"#/components/schemas/WorkspacePermissionScope"}},"show_assigned_data_only":{"type":"boolean","description":"Restrict data visibility to assigned records"},"assigned_crm_phone_number":{"type":"string","nullable":true,"description":"crm_phone_number record id assigned to this member; pass null to clear"},"allowed_crm_phone_numbers":{"$ref":"#/components/schemas/AllowedCrmPhoneNumberIdList","description":"Additional CRM phone number record IDs this member may use"},"assigned_email_account":{"type":"string","nullable":true,"description":"Email account id assigned to this member; pass null to clear"}},"additionalProperties":false},"WorkspaceMemberSingleResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"$ref":"#/components/schemas/WorkspaceMemberApi","description":"Response payload"}}},"WorkspaceMemberListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceMemberApi"},"description":"Response payload"},"total":{"type":"integer","description":"Total matching records (all pages)"},"limit":{"type":"integer","description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","description":"Number of records to skip for pagination (default 0)"}}},"WorkspaceMemberFieldFilter":{"type":"object","description":"Single field filter for workspace member list. User identity fields (first_name, last_name, email, phone) query the linked user record.","required":["field","operator"],"properties":{"field":{"type":"string","enum":["id","created_at","updated_at","role","first_name","last_name","email","phone","phone_number"],"description":"Member role and timestamps filter workspace_member; identity fields filter the linked user."},"operator":{"$ref":"#/components/schemas/ListRecordsFilterOperator","description":"Filter operator (e.g. `eq`, `contains`, `AND`)"},"value":{"$ref":"#/components/schemas/ListRecordsFilterValue","description":"Filter value (omit for `is_empty` / `is_not_empty`)"}},"additionalProperties":false},"WorkspaceMemberFilterGroup":{"type":"object","description":"Nested AND/OR filter group (must not mix user identity fields with member fields in the same group).","required":["operator","filters"],"properties":{"operator":{"type":"string","enum":["AND","OR"],"description":"Filter operator (e.g. `eq`, `contains`, `AND`)"},"filters":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/WorkspaceMemberFilterItem"},"description":"Search filters AND-combined at the top level"}},"additionalProperties":false},"WorkspaceMemberFilterItem":{"description":"Field filter or nested AND/OR group.","oneOf":[{"$ref":"#/components/schemas/WorkspaceMemberFieldFilter"},{"$ref":"#/components/schemas/WorkspaceMemberFilterGroup"}]},"WorkspaceMemberListRequest":{"type":"object","description":"List workspace members. Use ``filters`` for role, identity, and nested AND/OR criteria (see Workspace Member searching guide).","properties":{"filters":{"type":"array","description":"list_records filters AND-combined with workspace scope","items":{"$ref":"#/components/schemas/WorkspaceMemberFilterItem"}},"limit":{"type":"integer","default":100,"minimum":1,"maximum":200,"description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","default":0,"minimum":0,"description":"Number of records to skip for pagination (default 0)"},"sort_by":{"type":"string","enum":["created_at","updated_at","role"],"default":"created_at","description":"Field name to sort results by"},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order: `asc` or `desc` (default `desc`)"}}},"ContactTagDefinition":{"type":"object","properties":{"id":{"type":"string","description":"Record ID"},"created_at":{"type":"string","description":"ISO 8601 created timestamp"},"updated_at":{"type":"string","description":"ISO 8601 updated timestamp"},"name":{"type":"string","description":"Display name for the tag or pipeline"},"description":{"type":"string","description":"Human-readable description shown in the UI"},"organization":{"type":"string","description":"Organization record ID linked to the pipeline"},"workspace":{"type":"string","description":"Workspace"}}},"ContactTagDefinitionListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ContactTagDefinition"},"description":"Response payload"},"total":{"type":"integer","description":"Total matching records (all pages)"}}},"ContactTagDefinitionListRequest":{"type":"object","properties":{"name":{"type":"string","description":"Exact match shorthand for name eq filter"},"filters":{"type":"array","items":{"$ref":"#/components/schemas/ContactTagDefinitionFilterItem"},"description":"list_records filters AND-combined with workspace scope. JSON array of filter objects in the POST request body."},"limit":{"type":"integer","default":200,"description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","default":0,"description":"Number of records to skip for pagination (default 0)"},"sort_by":{"type":"string","enum":["name","created_at","updated_at"],"description":"Field name to sort results by"},"sort_direction":{"type":"string","enum":["asc","desc"],"description":"Sort order: `asc` or `desc` (default `desc`)"}}},"ContactTagDefinitionTextFilter_Eq":{"type":"object","title":"eq","description":"text filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_Ne":{"type":"object","title":"ne","description":"text filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_Gt":{"type":"object","title":"gt","description":"text filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_Lt":{"type":"object","title":"lt","description":"text filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_Gte":{"type":"object","title":"gte","description":"text filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_Lte":{"type":"object","title":"lte","description":"text filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_Contains":{"type":"object","title":"contains","description":"text filter with operator `contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains`.","enum":["contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_ContainsAny":{"type":"object","title":"contains_any","description":"text filter with operator `contains_any`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_any`.","enum":["contains_any"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_ContainsAll":{"type":"object","title":"contains_all","description":"text filter with operator `contains_all`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_all`.","enum":["contains_all"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_NotContains":{"type":"object","title":"not_contains","description":"text filter with operator `not_contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_contains`.","enum":["not_contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_StartsWith":{"type":"object","title":"starts_with","description":"text filter with operator `starts_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `starts_with`.","enum":["starts_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_EndsWith":{"type":"object","title":"ends_with","description":"text filter with operator `ends_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ends_with`.","enum":["ends_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_In":{"type":"object","title":"in","description":"text filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_NotIn":{"type":"object","title":"not_in","description":"text filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"ContactTagDefinitionTextFilter_IsEmpty":{"type":"object","title":"is_empty","description":"text filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactTagDefinitionTextFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"text filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactTagDefinitionTextFieldFilter":{"title":"Text","description":"Filter on a text-type contact_tag column.","oneOf":[{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_Contains","title":"contains"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_ContainsAny","title":"contains_any"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_ContainsAll","title":"contains_all"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_NotContains","title":"not_contains"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_StartsWith","title":"starts_with"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_EndsWith","title":"ends_with"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactTagDefinitionTextFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactTagDefinitionTextFilter_Eq","ne":"#/components/schemas/ContactTagDefinitionTextFilter_Ne","gt":"#/components/schemas/ContactTagDefinitionTextFilter_Gt","lt":"#/components/schemas/ContactTagDefinitionTextFilter_Lt","gte":"#/components/schemas/ContactTagDefinitionTextFilter_Gte","lte":"#/components/schemas/ContactTagDefinitionTextFilter_Lte","contains":"#/components/schemas/ContactTagDefinitionTextFilter_Contains","contains_any":"#/components/schemas/ContactTagDefinitionTextFilter_ContainsAny","contains_all":"#/components/schemas/ContactTagDefinitionTextFilter_ContainsAll","not_contains":"#/components/schemas/ContactTagDefinitionTextFilter_NotContains","starts_with":"#/components/schemas/ContactTagDefinitionTextFilter_StartsWith","ends_with":"#/components/schemas/ContactTagDefinitionTextFilter_EndsWith","in":"#/components/schemas/ContactTagDefinitionTextFilter_In","not_in":"#/components/schemas/ContactTagDefinitionTextFilter_NotIn","is_empty":"#/components/schemas/ContactTagDefinitionTextFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactTagDefinitionTextFilter_IsNotEmpty"}}},"ContactTagDefinitionTimestampFilter_Eq":{"type":"object","title":"eq","description":"timestamp filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_Ne":{"type":"object","title":"ne","description":"timestamp filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_Gt":{"type":"object","title":"gt","description":"timestamp filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_Lt":{"type":"object","title":"lt","description":"timestamp filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_Gte":{"type":"object","title":"gte","description":"timestamp filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_Lte":{"type":"object","title":"lte","description":"timestamp filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_In":{"type":"object","title":"in","description":"timestamp filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_NotIn":{"type":"object","title":"not_in","description":"timestamp filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_IsEmpty":{"type":"object","title":"is_empty","description":"timestamp filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactTagDefinitionTimestampFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"timestamp filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactTagDefinitionTimestampFieldFilter":{"title":"Timestamp","description":"Filter on a timestamp-type contact_tag column.","oneOf":[{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactTagDefinitionTimestampFilter_Eq","ne":"#/components/schemas/ContactTagDefinitionTimestampFilter_Ne","gt":"#/components/schemas/ContactTagDefinitionTimestampFilter_Gt","lt":"#/components/schemas/ContactTagDefinitionTimestampFilter_Lt","gte":"#/components/schemas/ContactTagDefinitionTimestampFilter_Gte","lte":"#/components/schemas/ContactTagDefinitionTimestampFilter_Lte","in":"#/components/schemas/ContactTagDefinitionTimestampFilter_In","not_in":"#/components/schemas/ContactTagDefinitionTimestampFilter_NotIn","is_empty":"#/components/schemas/ContactTagDefinitionTimestampFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactTagDefinitionTimestampFilter_IsNotEmpty"}}},"ContactTagDefinitionReferenceFilter_Eq":{"type":"object","title":"eq","description":"reference filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string"}},"additionalProperties":false},"ContactTagDefinitionReferenceFilter_Ne":{"type":"object","title":"ne","description":"reference filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string"}},"additionalProperties":false},"ContactTagDefinitionReferenceFilter_In":{"type":"object","title":"in","description":"reference filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactTagDefinitionReferenceFilter_NotIn":{"type":"object","title":"not_in","description":"reference filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"ContactTagDefinitionReferenceFilter_IsEmpty":{"type":"object","title":"is_empty","description":"reference filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"ContactTagDefinitionReferenceFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"reference filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on contact_tag. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"ContactTagDefinitionReferenceFieldFilter":{"title":"Reference","description":"Filter on a reference-type contact_tag column.","oneOf":[{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFilter_In","title":"in"},{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/ContactTagDefinitionReferenceFilter_Eq","ne":"#/components/schemas/ContactTagDefinitionReferenceFilter_Ne","in":"#/components/schemas/ContactTagDefinitionReferenceFilter_In","not_in":"#/components/schemas/ContactTagDefinitionReferenceFilter_NotIn","is_empty":"#/components/schemas/ContactTagDefinitionReferenceFilter_IsEmpty","is_not_empty":"#/components/schemas/ContactTagDefinitionReferenceFilter_IsNotEmpty"}}},"ContactTagDefinitionFilterGroup":{"type":"object","title":"Filter group","description":"Nested AND/OR filter group.","required":["filter_type","operator","filters"],"properties":{"filter_type":{"type":"string","enum":["group"],"description":"Use `group` for nested AND/OR filters."},"operator":{"type":"string","enum":["AND","OR"],"description":"Combine nested filters with AND or OR."},"filters":{"type":"array","minItems":1,"description":"Child filters inside this group.","items":{"$ref":"#/components/schemas/ContactTagDefinitionFilterItem"}}},"additionalProperties":false},"ContactTagDefinitionFilterItem":{"description":"Field filter or nested AND/OR group.","oneOf":[{"$ref":"#/components/schemas/ContactTagDefinitionTextFieldFilter","title":"Text"},{"$ref":"#/components/schemas/ContactTagDefinitionTimestampFieldFilter","title":"Timestamp"},{"$ref":"#/components/schemas/ContactTagDefinitionReferenceFieldFilter","title":"Reference"},{"$ref":"#/components/schemas/ContactTagDefinitionFilterGroup","title":"Filter group"}],"discriminator":{"propertyName":"filter_type","mapping":{"text":"#/components/schemas/ContactTagDefinitionTextFieldFilter","timestamp":"#/components/schemas/ContactTagDefinitionTimestampFieldFilter","reference":"#/components/schemas/ContactTagDefinitionReferenceFieldFilter","group":"#/components/schemas/ContactTagDefinitionFilterGroup"}}},"Pipeline":{"type":"object","description":"Sales pipeline. FK columns are returned as `*_id` id strings.","properties":{"id":{"type":"string","description":"Pipeline record ID"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"name":{"type":"string","description":"Pipeline display name"},"description":{"type":"string","nullable":true,"description":"Human-readable description"},"organization_id":{"type":"string","nullable":true,"description":"Organization record ID"},"workspace_id":{"type":"string","description":"Workspace record ID"}},"additionalProperties":true},"PipelineListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Pipeline"},"description":"Response payload"},"total":{"type":"integer","description":"Total matching records (all pages)"},"limit":{"type":"integer","description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","description":"Number of records to skip for pagination (default 0)"}}},"PipelineStage":{"type":"object","description":"Stage within a pipeline. FK columns are returned as `*_id` id strings.","properties":{"id":{"type":"string","description":"Pipeline stage record ID"},"created_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"updated_at":{"type":"string","format":"date-time","description":"ISO 8601 timestamp"},"name":{"type":"string","description":"Stage display name"},"description":{"type":"string","nullable":true,"description":"Human-readable description"},"organization_id":{"type":"string","nullable":true,"description":"Organization record ID"},"workspace_id":{"type":"string","description":"Workspace record ID"},"pipeline_id":{"type":"string","description":"Parent pipeline record ID"},"stage_order":{"type":"integer","description":"Numeric order of this stage within the pipeline"}},"additionalProperties":true},"PipelineStageListResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the request succeeded"},"message":{"type":"string","description":"Human-readable status message"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PipelineStage"},"description":"Response payload"},"total":{"type":"integer","description":"Total matching records (all pages)"},"limit":{"type":"integer","description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","description":"Number of records to skip for pagination (default 0)"}}},"PipelineListRequest":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":100,"description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","default":0,"minimum":0,"description":"Number of records to skip for pagination (default 0)"},"sort_by":{"type":"string","enum":["name","created_at","updated_at"],"default":"created_at","description":"Field name to sort results by"},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"desc","description":"Sort order: `asc` or `desc` (default `desc`)"},"name":{"type":"string","description":"Exact match shorthand for name eq filter"},"filters":{"type":"array","description":"list_records filters AND-combined with workspace scope.","items":{"$ref":"#/components/schemas/PipelineFilterItem"}}}},"PipelineStageListRequest":{"type":"object","properties":{"limit":{"type":"integer","default":50,"minimum":1,"maximum":100,"description":"Maximum records to return per page (default 100)"},"offset":{"type":"integer","default":0,"minimum":0,"description":"Number of records to skip for pagination (default 0)"},"sort_by":{"type":"string","enum":["name","created_at","updated_at","stage_order"],"default":"stage_order","description":"Field name to sort results by"},"sort_direction":{"type":"string","enum":["asc","desc"],"default":"asc","description":"Sort order: `asc` or `desc` (default `desc`)"},"name":{"type":"string","description":"Exact match shorthand for name eq filter"},"stage_order":{"type":"integer","description":"Exact match shorthand for stage_order eq filter"},"filters":{"type":"array","description":"list_records filters AND-combined with workspace and pipeline scope.","items":{"$ref":"#/components/schemas/PipelineStageFilterItem"}}}},"PipelineTextFilter_Eq":{"type":"object","title":"eq","description":"text filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_Ne":{"type":"object","title":"ne","description":"text filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_Gt":{"type":"object","title":"gt","description":"text filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_Lt":{"type":"object","title":"lt","description":"text filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_Gte":{"type":"object","title":"gte","description":"text filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_Lte":{"type":"object","title":"lte","description":"text filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_Contains":{"type":"object","title":"contains","description":"text filter with operator `contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains`.","enum":["contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_ContainsAny":{"type":"object","title":"contains_any","description":"text filter with operator `contains_any`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_any`.","enum":["contains_any"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineTextFilter_ContainsAll":{"type":"object","title":"contains_all","description":"text filter with operator `contains_all`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_all`.","enum":["contains_all"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineTextFilter_NotContains":{"type":"object","title":"not_contains","description":"text filter with operator `not_contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_contains`.","enum":["not_contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_StartsWith":{"type":"object","title":"starts_with","description":"text filter with operator `starts_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `starts_with`.","enum":["starts_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_EndsWith":{"type":"object","title":"ends_with","description":"text filter with operator `ends_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ends_with`.","enum":["ends_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineTextFilter_In":{"type":"object","title":"in","description":"text filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineTextFilter_NotIn":{"type":"object","title":"not_in","description":"text filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineTextFilter_IsEmpty":{"type":"object","title":"is_empty","description":"text filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineTextFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"text filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineTextFieldFilter":{"title":"Text","description":"Filter on a text-type pipeline column.","oneOf":[{"$ref":"#/components/schemas/PipelineTextFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineTextFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineTextFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/PipelineTextFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/PipelineTextFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/PipelineTextFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/PipelineTextFilter_Contains","title":"contains"},{"$ref":"#/components/schemas/PipelineTextFilter_ContainsAny","title":"contains_any"},{"$ref":"#/components/schemas/PipelineTextFilter_ContainsAll","title":"contains_all"},{"$ref":"#/components/schemas/PipelineTextFilter_NotContains","title":"not_contains"},{"$ref":"#/components/schemas/PipelineTextFilter_StartsWith","title":"starts_with"},{"$ref":"#/components/schemas/PipelineTextFilter_EndsWith","title":"ends_with"},{"$ref":"#/components/schemas/PipelineTextFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineTextFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineTextFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineTextFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineTextFilter_Eq","ne":"#/components/schemas/PipelineTextFilter_Ne","gt":"#/components/schemas/PipelineTextFilter_Gt","lt":"#/components/schemas/PipelineTextFilter_Lt","gte":"#/components/schemas/PipelineTextFilter_Gte","lte":"#/components/schemas/PipelineTextFilter_Lte","contains":"#/components/schemas/PipelineTextFilter_Contains","contains_any":"#/components/schemas/PipelineTextFilter_ContainsAny","contains_all":"#/components/schemas/PipelineTextFilter_ContainsAll","not_contains":"#/components/schemas/PipelineTextFilter_NotContains","starts_with":"#/components/schemas/PipelineTextFilter_StartsWith","ends_with":"#/components/schemas/PipelineTextFilter_EndsWith","in":"#/components/schemas/PipelineTextFilter_In","not_in":"#/components/schemas/PipelineTextFilter_NotIn","is_empty":"#/components/schemas/PipelineTextFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineTextFilter_IsNotEmpty"}}},"PipelineTimestampFilter_Eq":{"type":"object","title":"eq","description":"timestamp filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"PipelineTimestampFilter_Ne":{"type":"object","title":"ne","description":"timestamp filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"PipelineTimestampFilter_Gt":{"type":"object","title":"gt","description":"timestamp filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineTimestampFilter_Lt":{"type":"object","title":"lt","description":"timestamp filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineTimestampFilter_Gte":{"type":"object","title":"gte","description":"timestamp filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineTimestampFilter_Lte":{"type":"object","title":"lte","description":"timestamp filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineTimestampFilter_In":{"type":"object","title":"in","description":"timestamp filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineTimestampFilter_NotIn":{"type":"object","title":"not_in","description":"timestamp filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineTimestampFilter_IsEmpty":{"type":"object","title":"is_empty","description":"timestamp filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineTimestampFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"timestamp filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineTimestampFieldFilter":{"title":"Timestamp","description":"Filter on a timestamp-type pipeline column.","oneOf":[{"$ref":"#/components/schemas/PipelineTimestampFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineTimestampFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineTimestampFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/PipelineTimestampFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/PipelineTimestampFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/PipelineTimestampFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/PipelineTimestampFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineTimestampFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineTimestampFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineTimestampFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineTimestampFilter_Eq","ne":"#/components/schemas/PipelineTimestampFilter_Ne","gt":"#/components/schemas/PipelineTimestampFilter_Gt","lt":"#/components/schemas/PipelineTimestampFilter_Lt","gte":"#/components/schemas/PipelineTimestampFilter_Gte","lte":"#/components/schemas/PipelineTimestampFilter_Lte","in":"#/components/schemas/PipelineTimestampFilter_In","not_in":"#/components/schemas/PipelineTimestampFilter_NotIn","is_empty":"#/components/schemas/PipelineTimestampFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineTimestampFilter_IsNotEmpty"}}},"PipelineReferenceFilter_Eq":{"type":"object","title":"eq","description":"reference filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string"}},"additionalProperties":false},"PipelineReferenceFilter_Ne":{"type":"object","title":"ne","description":"reference filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string"}},"additionalProperties":false},"PipelineReferenceFilter_In":{"type":"object","title":"in","description":"reference filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineReferenceFilter_NotIn":{"type":"object","title":"not_in","description":"reference filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineReferenceFilter_IsEmpty":{"type":"object","title":"is_empty","description":"reference filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineReferenceFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"reference filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline. workspace cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineReferenceFieldFilter":{"title":"Reference","description":"Filter on a reference-type pipeline column.","oneOf":[{"$ref":"#/components/schemas/PipelineReferenceFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineReferenceFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineReferenceFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineReferenceFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineReferenceFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineReferenceFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineReferenceFilter_Eq","ne":"#/components/schemas/PipelineReferenceFilter_Ne","in":"#/components/schemas/PipelineReferenceFilter_In","not_in":"#/components/schemas/PipelineReferenceFilter_NotIn","is_empty":"#/components/schemas/PipelineReferenceFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineReferenceFilter_IsNotEmpty"}}},"PipelineFilterGroup":{"type":"object","title":"Filter group","description":"Nested AND/OR filter group.","required":["filter_type","operator","filters"],"properties":{"filter_type":{"type":"string","enum":["group"],"description":"Use `group` for nested AND/OR filters."},"operator":{"type":"string","enum":["AND","OR"],"description":"Combine nested filters with AND or OR."},"filters":{"type":"array","minItems":1,"description":"Child filters inside this group.","items":{"$ref":"#/components/schemas/PipelineFilterItem"}}},"additionalProperties":false},"PipelineFilterItem":{"description":"Field filter or nested AND/OR group.","oneOf":[{"$ref":"#/components/schemas/PipelineTextFieldFilter","title":"Text"},{"$ref":"#/components/schemas/PipelineTimestampFieldFilter","title":"Timestamp"},{"$ref":"#/components/schemas/PipelineReferenceFieldFilter","title":"Reference"},{"$ref":"#/components/schemas/PipelineFilterGroup","title":"Filter group"}],"discriminator":{"propertyName":"filter_type","mapping":{"text":"#/components/schemas/PipelineTextFieldFilter","timestamp":"#/components/schemas/PipelineTimestampFieldFilter","reference":"#/components/schemas/PipelineReferenceFieldFilter","group":"#/components/schemas/PipelineFilterGroup"}}},"PipelineStageTextFilter_Eq":{"type":"object","title":"eq","description":"text filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_Ne":{"type":"object","title":"ne","description":"text filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_Gt":{"type":"object","title":"gt","description":"text filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_Lt":{"type":"object","title":"lt","description":"text filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_Gte":{"type":"object","title":"gte","description":"text filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_Lte":{"type":"object","title":"lte","description":"text filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_Contains":{"type":"object","title":"contains","description":"text filter with operator `contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains`.","enum":["contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_ContainsAny":{"type":"object","title":"contains_any","description":"text filter with operator `contains_any`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_any`.","enum":["contains_any"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineStageTextFilter_ContainsAll":{"type":"object","title":"contains_all","description":"text filter with operator `contains_all`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `contains_all`.","enum":["contains_all"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineStageTextFilter_NotContains":{"type":"object","title":"not_contains","description":"text filter with operator `not_contains`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_contains`.","enum":["not_contains"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_StartsWith":{"type":"object","title":"starts_with","description":"text filter with operator `starts_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `starts_with`.","enum":["starts_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_EndsWith":{"type":"object","title":"ends_with","description":"text filter with operator `ends_with`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ends_with`.","enum":["ends_with"]},"value":{"type":"string","description":"Text filter value."}},"additionalProperties":false},"PipelineStageTextFilter_In":{"type":"object","title":"in","description":"text filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineStageTextFilter_NotIn":{"type":"object","title":"not_in","description":"text filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"},"description":"List of text values."}},"additionalProperties":false},"PipelineStageTextFilter_IsEmpty":{"type":"object","title":"is_empty","description":"text filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineStageTextFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"text filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `text`.","enum":["text"]},"field":{"type":"string","enum":["description","id","name"],"description":"text-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineStageTextFieldFilter":{"title":"Text","description":"Filter on a text-type pipeline_stage column.","oneOf":[{"$ref":"#/components/schemas/PipelineStageTextFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineStageTextFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineStageTextFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/PipelineStageTextFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/PipelineStageTextFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/PipelineStageTextFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/PipelineStageTextFilter_Contains","title":"contains"},{"$ref":"#/components/schemas/PipelineStageTextFilter_ContainsAny","title":"contains_any"},{"$ref":"#/components/schemas/PipelineStageTextFilter_ContainsAll","title":"contains_all"},{"$ref":"#/components/schemas/PipelineStageTextFilter_NotContains","title":"not_contains"},{"$ref":"#/components/schemas/PipelineStageTextFilter_StartsWith","title":"starts_with"},{"$ref":"#/components/schemas/PipelineStageTextFilter_EndsWith","title":"ends_with"},{"$ref":"#/components/schemas/PipelineStageTextFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineStageTextFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineStageTextFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineStageTextFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineStageTextFilter_Eq","ne":"#/components/schemas/PipelineStageTextFilter_Ne","gt":"#/components/schemas/PipelineStageTextFilter_Gt","lt":"#/components/schemas/PipelineStageTextFilter_Lt","gte":"#/components/schemas/PipelineStageTextFilter_Gte","lte":"#/components/schemas/PipelineStageTextFilter_Lte","contains":"#/components/schemas/PipelineStageTextFilter_Contains","contains_any":"#/components/schemas/PipelineStageTextFilter_ContainsAny","contains_all":"#/components/schemas/PipelineStageTextFilter_ContainsAll","not_contains":"#/components/schemas/PipelineStageTextFilter_NotContains","starts_with":"#/components/schemas/PipelineStageTextFilter_StartsWith","ends_with":"#/components/schemas/PipelineStageTextFilter_EndsWith","in":"#/components/schemas/PipelineStageTextFilter_In","not_in":"#/components/schemas/PipelineStageTextFilter_NotIn","is_empty":"#/components/schemas/PipelineStageTextFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineStageTextFilter_IsNotEmpty"}}},"PipelineStageNumberFilter_Eq":{"type":"object","title":"eq","description":"number filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"number"}},"additionalProperties":false},"PipelineStageNumberFilter_Ne":{"type":"object","title":"ne","description":"number filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"number"}},"additionalProperties":false},"PipelineStageNumberFilter_Gt":{"type":"object","title":"gt","description":"number filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"type":"number"}},"additionalProperties":false},"PipelineStageNumberFilter_Lt":{"type":"object","title":"lt","description":"number filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"type":"number"}},"additionalProperties":false},"PipelineStageNumberFilter_Gte":{"type":"object","title":"gte","description":"number filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"type":"number"}},"additionalProperties":false},"PipelineStageNumberFilter_Lte":{"type":"object","title":"lte","description":"number filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"type":"number"}},"additionalProperties":false},"PipelineStageNumberFilter_In":{"type":"object","title":"in","description":"number filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"number"}}},"additionalProperties":false},"PipelineStageNumberFilter_NotIn":{"type":"object","title":"not_in","description":"number filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"number"}}},"additionalProperties":false},"PipelineStageNumberFilter_IsEmpty":{"type":"object","title":"is_empty","description":"number filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineStageNumberFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"number filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `number`.","enum":["number"]},"field":{"type":"string","enum":["stage_order"],"description":"number-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineStageNumberFieldFilter":{"title":"Number","description":"Filter on a number-type pipeline_stage column.","oneOf":[{"$ref":"#/components/schemas/PipelineStageNumberFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineStageNumberFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineStageNumberFilter_Eq","ne":"#/components/schemas/PipelineStageNumberFilter_Ne","gt":"#/components/schemas/PipelineStageNumberFilter_Gt","lt":"#/components/schemas/PipelineStageNumberFilter_Lt","gte":"#/components/schemas/PipelineStageNumberFilter_Gte","lte":"#/components/schemas/PipelineStageNumberFilter_Lte","in":"#/components/schemas/PipelineStageNumberFilter_In","not_in":"#/components/schemas/PipelineStageNumberFilter_NotIn","is_empty":"#/components/schemas/PipelineStageNumberFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineStageNumberFilter_IsNotEmpty"}}},"PipelineStageTimestampFilter_Eq":{"type":"object","title":"eq","description":"timestamp filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"PipelineStageTimestampFilter_Ne":{"type":"object","title":"ne","description":"timestamp filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"oneOf":[{"type":"string","title":"ISO timestamp"},{"type":"number","title":"Unix timestamp"}]}},"additionalProperties":false},"PipelineStageTimestampFilter_Gt":{"type":"object","title":"gt","description":"timestamp filter with operator `gt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gt`.","enum":["gt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineStageTimestampFilter_Lt":{"type":"object","title":"lt","description":"timestamp filter with operator `lt`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lt`.","enum":["lt"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineStageTimestampFilter_Gte":{"type":"object","title":"gte","description":"timestamp filter with operator `gte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `gte`.","enum":["gte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineStageTimestampFilter_Lte":{"type":"object","title":"lte","description":"timestamp filter with operator `lte`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `lte`.","enum":["lte"]},"value":{"$ref":"#/components/schemas/ListRecordsTimestampFilterValue"}},"additionalProperties":false},"PipelineStageTimestampFilter_In":{"type":"object","title":"in","description":"timestamp filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineStageTimestampFilter_NotIn":{"type":"object","title":"not_in","description":"timestamp filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineStageTimestampFilter_IsEmpty":{"type":"object","title":"is_empty","description":"timestamp filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineStageTimestampFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"timestamp filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `timestamp`.","enum":["timestamp"]},"field":{"type":"string","enum":["created_at","updated_at"],"description":"timestamp-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineStageTimestampFieldFilter":{"title":"Timestamp","description":"Filter on a timestamp-type pipeline_stage column.","oneOf":[{"$ref":"#/components/schemas/PipelineStageTimestampFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_Gt","title":"gt"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_Lt","title":"lt"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_Gte","title":"gte"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_Lte","title":"lte"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineStageTimestampFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineStageTimestampFilter_Eq","ne":"#/components/schemas/PipelineStageTimestampFilter_Ne","gt":"#/components/schemas/PipelineStageTimestampFilter_Gt","lt":"#/components/schemas/PipelineStageTimestampFilter_Lt","gte":"#/components/schemas/PipelineStageTimestampFilter_Gte","lte":"#/components/schemas/PipelineStageTimestampFilter_Lte","in":"#/components/schemas/PipelineStageTimestampFilter_In","not_in":"#/components/schemas/PipelineStageTimestampFilter_NotIn","is_empty":"#/components/schemas/PipelineStageTimestampFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineStageTimestampFilter_IsNotEmpty"}}},"PipelineStageReferenceFilter_Eq":{"type":"object","title":"eq","description":"reference filter with operator `eq`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `eq`.","enum":["eq"]},"value":{"type":"string"}},"additionalProperties":false},"PipelineStageReferenceFilter_Ne":{"type":"object","title":"ne","description":"reference filter with operator `ne`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `ne`.","enum":["ne"]},"value":{"type":"string"}},"additionalProperties":false},"PipelineStageReferenceFilter_In":{"type":"object","title":"in","description":"reference filter with operator `in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `in`.","enum":["in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineStageReferenceFilter_NotIn":{"type":"object","title":"not_in","description":"reference filter with operator `not_in`.","required":["filter_type","field","operator","value"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `not_in`.","enum":["not_in"]},"value":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"PipelineStageReferenceFilter_IsEmpty":{"type":"object","title":"is_empty","description":"reference filter with operator `is_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_empty`.","enum":["is_empty"]}},"additionalProperties":false},"PipelineStageReferenceFilter_IsNotEmpty":{"type":"object","title":"is_not_empty","description":"reference filter with operator `is_not_empty`.","required":["filter_type","field","operator"],"properties":{"filter_type":{"type":"string","description":"Filter type `reference`.","enum":["reference"]},"field":{"type":"string","enum":["organization"],"description":"reference-type columns on pipeline_stage. workspace and pipeline cannot be filtered client-side."},"operator":{"type":"string","description":"Operator `is_not_empty`.","enum":["is_not_empty"]}},"additionalProperties":false},"PipelineStageReferenceFieldFilter":{"title":"Reference","description":"Filter on a reference-type pipeline_stage column.","oneOf":[{"$ref":"#/components/schemas/PipelineStageReferenceFilter_Eq","title":"eq"},{"$ref":"#/components/schemas/PipelineStageReferenceFilter_Ne","title":"ne"},{"$ref":"#/components/schemas/PipelineStageReferenceFilter_In","title":"in"},{"$ref":"#/components/schemas/PipelineStageReferenceFilter_NotIn","title":"not_in"},{"$ref":"#/components/schemas/PipelineStageReferenceFilter_IsEmpty","title":"is_empty"},{"$ref":"#/components/schemas/PipelineStageReferenceFilter_IsNotEmpty","title":"is_not_empty"}],"discriminator":{"propertyName":"operator","mapping":{"eq":"#/components/schemas/PipelineStageReferenceFilter_Eq","ne":"#/components/schemas/PipelineStageReferenceFilter_Ne","in":"#/components/schemas/PipelineStageReferenceFilter_In","not_in":"#/components/schemas/PipelineStageReferenceFilter_NotIn","is_empty":"#/components/schemas/PipelineStageReferenceFilter_IsEmpty","is_not_empty":"#/components/schemas/PipelineStageReferenceFilter_IsNotEmpty"}}},"PipelineStageFilterGroup":{"type":"object","title":"Filter group","description":"Nested AND/OR filter group.","required":["filter_type","operator","filters"],"properties":{"filter_type":{"type":"string","enum":["group"],"description":"Use `group` for nested AND/OR filters."},"operator":{"type":"string","enum":["AND","OR"],"description":"Combine nested filters with AND or OR."},"filters":{"type":"array","minItems":1,"description":"Child filters inside this group.","items":{"$ref":"#/components/schemas/PipelineStageFilterItem"}}},"additionalProperties":false},"PipelineStageFilterItem":{"description":"Field filter or nested AND/OR group.","oneOf":[{"$ref":"#/components/schemas/PipelineStageTextFieldFilter","title":"Text"},{"$ref":"#/components/schemas/PipelineStageNumberFieldFilter","title":"Number"},{"$ref":"#/components/schemas/PipelineStageTimestampFieldFilter","title":"Timestamp"},{"$ref":"#/components/schemas/PipelineStageReferenceFieldFilter","title":"Reference"},{"$ref":"#/components/schemas/PipelineStageFilterGroup","title":"Filter group"}],"discriminator":{"propertyName":"filter_type","mapping":{"text":"#/components/schemas/PipelineStageTextFieldFilter","number":"#/components/schemas/PipelineStageNumberFieldFilter","timestamp":"#/components/schemas/PipelineStageTimestampFieldFilter","reference":"#/components/schemas/PipelineStageReferenceFieldFilter","group":"#/components/schemas/PipelineStageFilterGroup"}}}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"JWT token or workspace API key authentication"}}}}