TSGGLOBAL Support sign in
Skip to page content
Browse TNID API docs

TNID API documentation Definitions Types

Types

On this page

Address

Schema: user, company

type Address {
  "City of the address"
  city: String
  "Country of the address"
  country: String
  "The unique identifier of the address"
  id: Id!
  "State of the address"
  state: String
  "Street of the address"
  street: String
  "Types of the address"
  types: [AddressType]
  visibility: [VisibilityType]
  "Zip code of the address"
  zip_code: String
}

AiTask

Schema: user, company

A prompt run against the documents a task watches, producing a structured result for each

type AiTask {
  "How many documents this task covers"
  document_count: Integer!
  "The folders the task watches, each covering everything beneath it. Empty alongside a false `run_on_root` is a task that runs only against the documents a run names"
  folders: [Folder!]!
  id: Id!
  "Runs of this task that haven't finished — queued or being answered now"
  in_flight_count: Integer!
  inserted_at: Datetime!
  "What the owner calls this task"
  name: String!
  "The answer's shape, written as an example: names to types, where a value may be an object or a one-element list describing a repeated entry"
  output_shape: Json!
  "The owner's instructions"
  prompt: String!
  "Whether the task watches the whole repository, whatever folders it holds now or later"
  run_on_root: Boolean!
  updated_at: Datetime!
}

AiTaskRun

Schema: user, company

One run of a task against a document, with the document's name alongside

type AiTaskRun {
  document_id: Id!
  "Why the run ended without an answer"
  error: String
  "The document this answer is about"
  file_name: String
  id: Id!
  inserted_at: Datetime!
  "The shape as it was when this ran"
  output_shape: Json!
  "The instructions as they were when this ran"
  prompt: String!
  "When the model answered. Null while a run is still going, and on one that ended without reaching the model at all"
  ran_at: Datetime
  "The extracted values, keyed by field name. Null until the run completes"
  result: Json
  status: AiTaskRunStatus!
  task_id: Id!
}

B2bConnection

Schema: company

type B2bConnection {
  "The company that initiated the connection"
  company: Company
  "The company that is connected"
  connected_company: Company
  "The date and time the connection was created"
  created_at: NaiveDatetime
  "The unique identifier of the B2B connection"
  id: Id
  "The date and time the connection was started"
  started_at: NaiveDatetime
  "The type of the connection"
  type: B2bConnectionType
  "The date and time the connection was last updated"
  updated_at: NaiveDatetime
}

B2bConnectionRequest

Schema: company

type B2bConnectionRequest {
  "The company that initiated the request"
  company: Company
  "The unique identifier of the request"
  id: Id
  "The time the request was created"
  inserted_at: NaiveDatetime
  "The company that was invited"
  invited_company: Company
  "The time the request was responded to"
  responded_at: NaiveDatetime
  "The status of the request"
  status: ConnectionStatus
  "The type of the connection"
  type: B2bConnectionType
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who initiated the request (if any)"
  user: User
}

B2bFormSubmissionRequest

Schema: company

A B2B form submission request — company requests another company to fill a form

type B2bFormSubmissionRequest {
  form: FormRequestInfo
  form_instance: FormInstance
  id: Id!
  inserted_at: NaiveDatetime!
  requester: Company
  submitter: Company
  updated_at: NaiveDatetime!
}

B2cConnection

Schema: user, company

A connection between a company (business) and a user (individual)

type B2cConnection {
  "The company that initiated the connection"
  company: Company
  "The user that accepted the connected"
  connected_user: User
  "The unique identifier of the connection"
  id: Id
  "The time the connection was created"
  inserted_at: NaiveDatetime
  "The time the connection was started at"
  started_at: NaiveDatetime
  "The type of the connection"
  type: B2cConnectionType
  "The time the connection was last updated"
  updated_at: NaiveDatetime
}

B2cConnectionNotificationSettings

Schema: user

Notification settings for a user's connection to a specific company (B2C connection)

type B2cConnectionNotificationSettings {
  "Email when a B2B connection request is received on behalf of the company"
  b2b_conn_request_received_email: Boolean!
  "Email when a B2B connection request response is received on behalf of the company"
  b2b_conn_request_response_email: Boolean!
  "Email when a B2B form submission request is received on behalf of the company"
  b2b_form_instance_submission_request_received_email: Boolean!
  "Email when a B2C connection request response is received on behalf of the company"
  b2c_conn_request_response_email: Boolean!
  "Email when a B2C subscription request response is received on behalf of the company"
  b2c_sub_request_response_email: Boolean!
  "Email when a C2B connection request is received on behalf of the company"
  c2b_conn_request_received_email: Boolean!
  "Email when a company website or social network status changes"
  company_social_network_status_change_email: Boolean!
  "The ID of the B2C connection"
  id: Id!
}

B2cConnectionRequest

Schema: user, company

type B2cConnectionRequest {
  "The company that initiated the request"
  company: Company
  "The unique identifier of the request"
  id: Id
  "The time the request was created"
  inserted_at: NaiveDatetime
  "The user that was invited"
  invited_user: User
  "The time the request was responded to"
  responded_at: NaiveDatetime
  "The status of the request"
  status: ConnectionStatus
  "The type of the connection"
  type: B2cConnectionType
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who initiated the request (if any)"
  user: User
}

B2cEmailSubscription

Schema: user, company

A user's subscription to company notifications.

type B2cEmailSubscription {
  "The company that the subscription belongs to"
  company: Company
  "The registered email, where to send notifications to."
  email: String!
  "Expiration date of subscription"
  expiration_date: Date
  "The unique identifier of the subscription"
  id: Id!
  "The time the request was created"
  inserted_at: NaiveDatetime
  "End time for notificaiton sending"
  notification_end_time: Time
  "Start time for notification sending"
  notification_start_time: Time
  "The topics the user is subscribed to"
  subscription_topics: [String!]!
  "The timezone used for sending notifications"
  timezone: String
  "The type of the subscription - always EMAIL in this case"
  type: B2cSubscriptionType!
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who subscribed to the company"
  user: User
}

B2cFormSubmissionRequest

Schema: user, company

A B2C form submission request — company requests a user to fill a form

type B2cFormSubmissionRequest {
  form: FormRequestInfo
  form_instance: FormInstance
  id: Id!
  inserted_at: NaiveDatetime!
  requester: Company
  submitter: User
  updated_at: NaiveDatetime!
}

B2cSmsSubscription

Schema: user, company

A user's subscription to company notifications.

type B2cSmsSubscription {
  "The company that the subscription belongs to"
  company: Company
  "Expiration date of subscription"
  expiration_date: Date
  "The unique identifier of the subscription"
  id: Id!
  "The time the request was created"
  inserted_at: NaiveDatetime
  "End time for notificaiton sending"
  notification_end_time: Time
  "Start time for notification sending"
  notification_start_time: Time
  "The topics the user is subscribed to"
  subscription_topics: [String!]!
  "The registered telephone_number, where to send notifications to."
  telephone_number: String!
  "The timezone used for sending notifications"
  timezone: String
  "The type of the subscription - always SMS in this case"
  type: B2cSubscriptionType!
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who subscribed to the company"
  user: User
}

B2cSubscriptionRequest

Schema: user, company

type B2cSubscriptionRequest {
  "The company that initiated the request"
  company: Company
  "The unique identifier of the request"
  id: Id
  "The time the request was created"
  inserted_at: NaiveDatetime
  "The user that was invited"
  invited_user: User
  "The time the request was responded to"
  responded_at: NaiveDatetime
  "The status of the request"
  status: SubscriptionRequestStatus
  "Type of the subscription: Email, SMS, or Voice"
  type: B2cSubscriptionType
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who initiated the request (if any)"
  user: User
}

B2cSubscriptionTopic

Schema: user, company

The company topic that users can subscribe to

type B2cSubscriptionTopic {
  "The description of the B2C subscription topic"
  description: String
  "Whether email is enabled for the topic or not"
  enable_email: Boolean!
  "Whether sms is enabled for the topic or not"
  enable_sms: Boolean!
  "Whether voice is enabled for the topic or not"
  enable_voice: Boolean!
  "The unique identifier of the B2C subscription topic"
  id: Id!
  "The name of the B2C subscription topic"
  name: String!
  "The type of the B2C subscription topic"
  type: B2cSubscriptionTopicType!
}

B2cVoiceSubscription

Schema: user, company

A user's subscription to company notifications.

type B2cVoiceSubscription {
  "The company that the subscription belongs to"
  company: Company
  "Expiration date of subscription"
  expiration_date: Date
  "The unique identifier of the subscription"
  id: Id!
  "The time the request was created"
  inserted_at: NaiveDatetime
  "End time for notificaiton sending"
  notification_end_time: Time
  "Start time for notification sending"
  notification_start_time: Time
  "The topics the user is subscribed to"
  subscription_topics: [String!]!
  "The registered telephone_number, where to send notifications to."
  telephone_number: String!
  "The timezone used for sending notifications"
  timezone: String
  "The type of the subscription - always VOICE in this case"
  type: B2cSubscriptionType!
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who subscribed to the company"
  user: User
}

BulkStatusResponse

Schema: user, company

Response for a bulk action — the status plus how many records it actually affected. Bulk actions are best-effort: ids that don't exist, aren't the caller's, or aren't in a state the action applies to are skipped rather than failing the batch

type BulkStatusResponse {
  "How many records the action actually affected"
  count: Integer
  "Status of the request"
  status: ResponseStatus
}

C2bConnectionRequest

Schema: user, company

type C2bConnectionRequest {
  "The unique identifier of the request"
  id: Id
  "The time the request was created"
  inserted_at: NaiveDatetime
  "The company that received the request"
  invited_company: Company
  "The time the request was responded to"
  responded_at: NaiveDatetime
  "The user that responded to the request"
  responded_by_user: User
  "The status of the request"
  status: ConnectionStatus
  "The type of the connection"
  type: B2cConnectionType
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who initiated the request (if any)"
  user: User
}

C2cConnection

Schema: user

A connection between a user (individual) and another user (individual)

type C2cConnection {
  "The user that accepted the connection"
  connected_user: User
  "The unique identifier of the connection"
  id: Id
  "The time the connection was created"
  inserted_at: NaiveDatetime
  "The time the connection was started at"
  started_at: NaiveDatetime
  "The type of the connection"
  type: C2cConnectionType
  "The time the connection was last updated"
  updated_at: NaiveDatetime
  "The user that initiated the connection"
  user: User
}

C2cConnectionRequest

Schema: user

type C2cConnectionRequest {
  "The unique identifier of the request"
  id: Id
  "The time the request was created"
  inserted_at: NaiveDatetime
  "The user that was invited"
  invited_user: User
  "The time the request was responded to"
  responded_at: NaiveDatetime
  "The status of the request"
  status: ConnectionStatus
  "The type of the connection"
  type: C2cConnectionType
  "The time the request was last updated"
  updated_at: NaiveDatetime
  "The user who initiated the request (if any)"
  user: User
}

ClientSecret

Schema: user, company

type ClientSecret {
  "Client secret id"
  client_id: String
  "Client secret value, only returned upon creation"
  client_secret: String
  "Client secret description"
  description: String
  "Unique identifier of the client secret record"
  id: Id!
  "When the client secret was created"
  inserted_at: NaiveDatetime
}

Company

Schema: user, company

type Company {
  "The about us of the company"
  about_us: String
  "About us visibility of the company"
  about_us_visibility: [VisibilityType]
  "The addresses of the company"
  addresses: [Address]
  "B2C relation visibility of the company"
  b2c_visibility: [VisibilityType]
  "The brand name of the company"
  brand_name: String
  "Brand name visibility of the company"
  brand_name_visibility: [VisibilityType]
  "Client secret of the company, only returned on creation"
  client_secret: ClientSecret
  "The viewer's connection state to this company (drives the company-view actions area)"
  connection: ViewerConnection
  "The maximum total bytes the company's document repository may occupy; only the company itself can read it (string — see above)"
  document_repository_byte_limit: String
  "The dedicated email address that files can be sent to for this company's document repository"
  document_repository_email_address: String
  "The phone number that files can be texted (SMS/MMS) to for the document repository (digits only, no leading +)"
  document_repository_phone_number: String
  "Total bytes the company's documents currently occupy, trash included; only the company itself can read it (string — a byte count can exceed a 32-bit integer)"
  document_repository_used_bytes: String
  "The emails of the company"
  emails: [Email]
  "The forms published by the company, filtered to those the viewer may see"
  forms: [Form]
  "The unique identifier of the company"
  id: String!
  "The legal name of the company"
  legal_name: String
  "Legal name visibility of the company"
  legal_name_visibility: [VisibilityType]
  "The logo of the company"
  logo_url: String
  "Logo url visibility of the company"
  logo_url_visibility: [VisibilityType]
  "Additional metadata"
  metadata: Json
  "Metadata visibility of the company"
  metadata_visibility: [VisibilityType]
  "The organization type of the company"
  organization_type: OrganizationType
  "Organization type visibility of the company"
  organization_type_visibility: [VisibilityType]
  "The TnID profile name of the company"
  profile_name: String!
  "A key/value storage for private data"
  secret_storage: Json
  "The social networks of the company"
  social_networks: [Webpage]
  "The specialties of the company"
  specialties: [Specialty]
  "Specialties visibility of the company"
  specialties_visibility: [VisibilityType]
  "Subscription settings of the company, enabled and disabled channels"
  subscription_settings: CompanySubscriptionSettings
  "Subscription topics that company offers"
  subscription_topics: [B2cSubscriptionTopic]
  "The tax IDs of the company"
  tax_ids: [CompanyTaxId]
  "The telephone numbers of the company"
  telephone_numbers: [TelephoneNumber]
  "Trusted domains of the company"
  trusted_domains: [TrustedDomain]
  "QR code (inline SVG data-URI) encoding the company's public vCard URL, for preview"
  vcard_qr_code: String
  "Download-ready PNG data-URI of the vCard QR code (carries the company-name header)"
  vcard_qr_code_download: String
  "The verification status of the company"
  verified: Boolean
  "The vertical type of the company"
  vertical_type: VerticalType
  "Vertical type visibility of the company"
  vertical_type_visibility: [VisibilityType]
  "The webpages of the company"
  webpages: [Webpage]
  "The foundation year of the company"
  year_founded: Integer
  "Year of foundation visibility of the company"
  year_founded_visibility: [VisibilityType]
}

CompanyDashboardStats

Schema: company

Aggregated dashboard statistics for a company

type CompanyDashboardStats {
  "Total number of established B2B connections"
  b2b_connections_count: Integer!
  "Total number of established B2C connections"
  b2c_connections_count: Integer!
  "Number of people subscribed to the company. Counts people, so someone subscribed on more than one channel counts once"
  b2c_subscribers_count: Integer!
  "Number of pending received B2B connection requests"
  pending_b2b_connection_requests_count: Integer!
  "Number of pending received C2B (user-to-company) connection requests"
  pending_c2b_connection_requests_count: Integer!
}

CompanyPendingActionCounts

Schema: company

Counts of items awaiting the current company's response

type CompanyPendingActionCounts {
  "Company connection requests received and not yet answered"
  company_connection_requests: Integer!
  "Form submission requests waiting on this company: those not yet started,
and those returned with changes requested. Requests already submitted,
settled or in progress are excluded."
  form_requests: Integer!
  "Documents received over a message channel and awaiting confirmation"
  pending_documents: Integer!
  "People connection requests received and not yet answered"
  people_connection_requests: Integer!
}

CompanyProfileSuggestionAddress

Schema: company

An address suggestion for a company profile

type CompanyProfileSuggestionAddress {
  "City part of the address"
  city: String
  "Country part of the address"
  country: String
  "Street part of the address"
  street: String
  "Zip / postal code part of the address"
  zip_code: String
}

CompanyProfileSuggestionEmail

Schema: company

An email suggestion for a company profile

type CompanyProfileSuggestionEmail {
  "Email address"
  email: String
}

CompanyProfileSuggestionSocialNetwork

Schema: company

A social network URL suggestion for a company profile

type CompanyProfileSuggestionSocialNetwork {
  "Social network type (e.g. facebook, instagram, linkedin, x)"
  type: String
  "Full URL to the social network page"
  url: String
}

CompanyProfileSuggestionTelephoneNumber

Schema: company

A telephone number suggestion for a company profile

type CompanyProfileSuggestionTelephoneNumber {
  "Country code of the telephone number (digits only, no leading +)"
  country_code: String
  "Telephone number without the country code (digits only)"
  number: String
}

CompanyProfileSuggestionWebpage

Schema: company

A webpage URL suggestion for a company profile

type CompanyProfileSuggestionWebpage {
  "Webpage type (e.g. webpage, privacy_policy, terms_and_conditions, other)"
  type: String
  "Full URL to the webpage"
  url: String
}

CompanyProfileSuggestions

Schema: company

Company profile suggestions extracted from a website by the AI

type CompanyProfileSuggestions {
  "Suggested short description about the company"
  about_us: String
  "Suggested addresses found on the website"
  addresses: [CompanyProfileSuggestionAddress]
  "Suggested emails found on the website"
  emails: [CompanyProfileSuggestionEmail]
  "Suggested legal name"
  legal_name: String
  "Organization type name suggested by the AI (display name, not an ID)"
  organization_type: String
  "Resolved organization type ID for the suggested organization type (nil if no match)"
  organization_type_id: Id
  "Suggested social network URLs found on the website"
  social_networks: [CompanyProfileSuggestionSocialNetwork]
  "Suggested telephone numbers found on the website"
  telephone_numbers: [CompanyProfileSuggestionTelephoneNumber]
  "Vertical type name suggested by the AI (display name, not an ID)"
  vertical_type: String
  "Resolved vertical type ID for the suggested vertical type (nil if no match)"
  vertical_type_id: Id
  "Suggested webpage URLs found on the website (home, about, privacy policy, etc.)"
  webpages: [CompanyProfileSuggestionWebpage]
  "Suggested year the company was founded"
  year_founded: Integer
}

CompanyRcsInformation

Schema: company

Persisted RCS agent information for a company

type CompanyRcsInformation {
  "Description of the capabilities the agent advertises"
  agent_capabilities: String
  "Primary theme color in HEX format (e.g. #FF0000)"
  agent_color_schema_primary: String
  "Secondary theme color in HEX format (e.g. #00FF00)"
  agent_color_schema_secondary: String
  "Short description of the RCS agent (max 256 characters)"
  agent_description: String
  "URL of the agent logo (uploaded separately via prepareFileUpload)"
  agent_logo_url: String
  "Display name of the RCS agent (max 40 characters)"
  agent_name: String
  "Region the agent operates in"
  agent_region: String
  "Person responsible for authorizing RCS messaging on behalf of the company"
  authorization_contact: RcsAuthorizationContact
  "ISO country code where the company was incorporated"
  country_of_incorporation: String
  "The unique identifier"
  id: Id!
  "When this record was created"
  inserted_at: NaiveDatetime
  "Whether the agent supports rich media like images and video"
  rich_media_support: Boolean
  "Actions a user can trigger during a conversation"
  suggested_actions: [RcsSuggestedAction]
  "Quick replies a user can tap during a conversation"
  suggested_replies: [RcsSuggestedReply]
  "When this record was last updated"
  updated_at: NaiveDatetime
  "Welcome message shown when a user first opens a conversation (max 120 characters)"
  welcome_message: String
}

CompanySettings

Schema: company

type CompanySettings {
  "About us visibility of the company"
  about_us_visibility: [VisibilityType]
  "B2C relation visibility of the company"
  b2c_visibility: [VisibilityType]
  "Brand name visibility of the company"
  brand_name_visibility: [VisibilityType]
  "How the owner arranged their dashboard: which widgets are shown and in what order. An object holding an integer `version` and `widgets`, the widget ids in display order"
  dashboard_layout: Json
  "The unique identifier of the company"
  id: String!
  "Legal name visibility of the company"
  legal_name_visibility: [VisibilityType]
  "Logo url visibility of the company"
  logo_url_visibility: [VisibilityType]
  "Metadata visibility of the company"
  metadata_visibility: [VisibilityType]
  "Organization type visibility of the company"
  organization_type_visibility: [VisibilityType]
  "A key/value storage for private data"
  secret_storage: Json
  "Specialties visibility of the company"
  specialties_visibility: [VisibilityType]
  "Subscription settings of the company, enabled and disabled channels"
  subscription_settings: CompanySubscriptionSettings
  "Trusted domains of the company"
  trusted_domains: [TrustedDomain]
  "Vertical type visibility of the company"
  vertical_type_visibility: [VisibilityType]
  "Year of foundation visibility of the company"
  year_founded_visibility: [VisibilityType]
}

CompanySubscriptionSettings

Schema: user, company

The company subscription settings

type CompanySubscriptionSettings {
  "Whether the email channel is enabled for subscriptions or not"
  enable_email: Boolean!
  "Whether the sms channel is enabled for subscriptions or not"
  enable_sms: Boolean!
  "Whether the voice channel is enabled for subscriptions or not"
  enable_voice: Boolean!
}

CompanyTaxId

Schema: user, company

A company can have multiple tax IDs, e.g. EIN, Sales Tax, etc.

type CompanyTaxId {
  "The unique ID for tax ID"
  id: String!
  "The type of the tax identifier, e.g. EIN, Sales Tax, etc."
  type: CompanyTaxIdType
  "The US state to which the tax ID applies (if relevant), e.g. for Sales Tax IDs"
  us_state: String
  "The Tax Identifier, e.g. the EIN number"
  value: String!
  "The visibility of the tax ID"
  visibility: [CompanyVisibilityType!]
}

CompanyWebhook

Schema: company

type CompanyWebhook {
  "Whether webhook should be used for B2B connection request received event"
  b2b_connection_request_received_webhook: Boolean!
  "Whether webhook should be used for B2B connection response received event"
  b2b_connection_request_response_webhook: Boolean!
  "Whether webhook should be used for B2B form instance subsmission request received event"
  b2b_form_instance_submission_request_received_webhook: Boolean!
  "Whether webhook should be used for B2C connection request response event"
  b2c_connection_request_response_webhook: Boolean!
  "Whether webhook should be used for B2C subscription request response event"
  b2c_subscription_request_response_webhook: Boolean!
  "Bearer token to be used with the webhook"
  bearer_token: String
  "Whether webhook should be used for C2B connection request received event"
  c2b_connection_request_received_webhook: Boolean!
  "Whether webhook should be used for Company social network status change event"
  company_social_network_status_change_webhook: Boolean!
  "Custom headers to be used with the webhook"
  custom_headers: Json
  "The unique identifier of the company webhook"
  id: Id!
  "Name of the webhook"
  name: String
  "Whether webhook should be used for opt-out event"
  receive_opt_out_events: Boolean!
  "Whether webhook should be used for subscription event"
  receive_subscription_events: Boolean!
  "URL of the webhook"
  url: String!
}

DocsAnswer

Schema: user, company

An AI answer to a question about using TNID

type DocsAnswer {
  "How to do it through the API, drawn from the documentation. Empty when the question was only about where to go, which `destination` answers on its own."
  answer: String
  "The documentation pages the answer draws on"
  citations: [DocsAnswerCitation]
  "Where to do it in the app: the navigation entry that opens it. Null when the question wasn't about where to go, or nothing supplied fits it."
  destination: DocsAnswerDestination
}

DocsAnswerCitation

Schema: user, company

A documentation page cited as a source for an answer

type DocsAnswerCitation {
  "Path addressing the page in the published documentation"
  path: String
  "The sections leading to the page, space-joined"
  sections: String
  "The page's title"
  title: String
}

DocsAnswerDestination

Schema: user, company

A destination named from the navigation sent with the question

type DocsAnswerDestination {
  "The label that navigation entry carries"
  label: String
  "The path it opens, exactly as it was supplied"
  path: String
}

Document

Schema: user, company

A file stored in a user's or company's document repository

type Document {
  "The file size in bytes"
  byte_size: String
  "The MIME content type of the file"
  content_type: String
  "When the document was moved to the trash"
  deleted_at: NaiveDatetime
  "A short-lived URL to download the file"
  download_url: String
  "The original file name"
  file_name: String
  "The folder holding the document; null means the repository root"
  folder_id: Id
  "The unique identifier of the document"
  id: Id!
  "When the document was added"
  inserted_at: NaiveDatetime
  "How the document entered the repository"
  source: DocumentSource
  "Channel provenance for inbound documents (message id, sender and recipient addresses, archived raw payload location); null for uploads"
  source_ref: Json
  "Where the document stands in the repository"
  status: DocumentStatus
  "A short summary of the document, generated when the document is processed and editable by the owner"
  summary: String
  "Suggested tags awaiting acceptance on the document, ordered by name"
  tag_suggestions: [Tag]
  "Why the last attempt to read the document's contents failed. Null when that attempt succeeded, or when the document has not been processed yet"
  tagging_error: DocumentTaggingError
  "Tags assigned to the document, ordered by name"
  tags: [Tag]
  "When the document was last updated"
  updated_at: NaiveDatetime
  "A short-lived URL to view the file"
  url: String
}

DocumentAnswer

Schema: user, company

An AI answer to a question asked over the caller's documents

type DocumentAnswer {
  "The answer, grounded in the caller's documents"
  answer: String
  "The documents the answer draws on"
  citations: [DocumentAnswerCitation]
}

DocumentAnswerCitation

Schema: user, company

A document cited as a source for a document answer

type DocumentAnswerCitation {
  "The cited document's file name"
  file_name: String
  "The cited document's id"
  id: Id
}

DocumentUpload

Schema: user, company

Where to send a document upload, and the record it will become

type DocumentUpload {
  "Id of the reserved document — pass it to confirmDocumentUpload once the file is uploaded"
  document_id: Id!
  "Form fields that must be sent with the upload, before the file itself. Send every one of them unchanged; they carry the signature and the constraints the upload is accepted under"
  fields: Json!
  "The S3 endpoint to post the file to"
  url: String!
}

Email

Schema: user, company

type Email {
  email: String
  "The unique identifier of the email"
  id: Id!
  status: VerificationStatus
  types: [EmailType]
  visibility: [VisibilityType]
}

ExternalCommunication

Schema: company

An external communication message (SMS, MMS, etc.)

type ExternalCommunication {
  "Direction of the communication (inbound/outbound)"
  direction: ExternalCommunicationDirection
  "Address of the party on our side of the conversation (usually a company-owned number)"
  host_address: String
  "The unique identifier"
  id: Id!
  "Message body as received/sent"
  message_body: String
  "Address of the party on the external side (user's number or contact)"
  remote_address: String
  "When the communication occurred"
  timestamp: NaiveDatetime
  "Channel type (SMS, MMS, etc.)"
  type: ExternalCommunicationType
}

FileUpload

Schema: user, company

The result of preparing a file upload

type FileUpload {
  "The S3 file key — save this value to the record after uploading"
  file_key: String!
  "The presigned S3 URL to PUT the file to directly from the client"
  upload_url: String!
}

Folder

Schema: user, company

A folder in a user's or company's document repository

type Folder {
  "The unique identifier of the folder"
  id: Id!
  "The folder name; sibling names may repeat"
  name: String
  "The parent folder id; null for a folder at the repository root"
  parent_id: Id
}

FoldersPage

Schema: user, company

The owner's folder structure

type FoldersPage {
  records: [Folder!]!
}

Form

Schema: user, company

A form with versions

type Form {
  company_id: Id!
  description: String
  form_versions: [FormVersion]
  id: Id!
  inserted_at: NaiveDatetime!
  intended_for: [FormBuilderFormIntendedFor]
  title: String
  updated_at: NaiveDatetime!
  visibility: [FormBuilderFormVisibility]
}

FormFieldOptionSuggestion

Schema: company

A suggested option value for select/radio/checkbox fields

type FormFieldOptionSuggestion {
  "Option value shown and submitted"
  value: String
}

FormInstance

Schema: user, company

A form instance — tracks submission status and data

type FormInstance {
  data: Json
  form_version: FormVersion
  id: Id!
  identifiers: [String]
  inserted_at: NaiveDatetime!
  status: FormBuilderFormInstanceStatus!
  updated_at: NaiveDatetime!
}

FormRequestInfo

Schema: user, company

Form info as seen by a submission request receiver — restricted view

type FormRequestInfo {
  description: String
  id: Id!
  title: String
}

FormSuggestions

Schema: company

Form builder suggestions generated from an uploaded file or URL screenshot

type FormSuggestions {
  "Suggested form description"
  description: String
  "Suggested form fields, in order"
  form_version_fields: [FormVersionFieldSuggestion]
  "Suggested form title"
  title: String
}

FormVersion

Schema: user, company

A version of a form

type FormVersion {
  "Count of form instances (submissions/drafts) tied to this version. Can be used to determine editability — a version can only be edited if it's the latest, unpublished, and has no instances."
  form_instances_count: Integer!
  form_version_fields: [FormVersionField]
  id: Id!
  inserted_at: NaiveDatetime!
  published: Boolean!
  updated_at: NaiveDatetime!
  version: Integer!
}

FormVersionField

Schema: user, company

A field in a form version

type FormVersionField {
  autofill_key: String
  content: String
  id: Id!
  image_file_key: String
  image_url: String
  key: String!
  label: String
  options: [String]
  order: Integer!
  required: Boolean!
  style: Json
  type: FormBuilderFieldType!
  use_as_identifier: Boolean
}

FormVersionFieldSuggestion

Schema: company

A suggested form field

type FormVersionFieldSuggestion {
  "Autofill key (maps to a known user/company profile value); null for select/radio/checkbox"
  autofill_key: String
  "Options for select/radio/checkbox fields; null for other types"
  field_options: [FormFieldOptionSuggestion]
  "Field label shown to the user"
  label: String
  "Whether the field is required"
  required: Boolean
  "Field input type"
  type: FormBuilderFieldType
}

Group

Schema: user

type Group {
  "The unique identifier of the group"
  id: String!
  "The logo of the group"
  logo_url: String
  "Additional metadata"
  metadata: Json
  "Name of the group"
  name: String!
  "A key/value storage for private data"
  secret_storage: Json
  "The visibility settings of the group"
  visibility: [VisibilityType]
}

GroupNotificationSettings

Schema: user

Notification settings for a user's membership in a specific group

type GroupNotificationSettings {
  "Email when a group join request is received"
  group_user_member_join_request_received_email: Boolean!
  "In-app notification when a group join request is received"
  group_user_member_join_request_received_notification: Boolean!
  "The ID of the group user member record"
  id: Id!
}

GroupUserMember

Schema: user

type GroupUserMember {
  "The group that the user is a member of"
  group: Group!
  "The unique identifier of the membership"
  id: Id!
  "The role of the user in the group"
  role: GroupRoleType!
}

GroupUserMemberInvite

Schema: user

type GroupUserMemberInvite {
  "The group that the user received the invite to"
  group: Group
  "The unique identifier of the invite"
  id: String!
  "The time the invite was created"
  inserted_at: NaiveDatetime
  "The user that received the invite"
  invited_user: User
  "The time the invite was responded to"
  responded_at: NaiveDatetime
  "The role of the user in the group"
  role: GroupRoleType!
  "The status of the invite"
  status: GroupInviteStatus!
  "The time the invite was last updated"
  updated_at: NaiveDatetime
  "The user that sent the invite"
  user: User
}

GroupUserMemberJoinRequest

Schema: user

type GroupUserMemberJoinRequest {
  "The group that the user sent the join request to"
  group: Group
  "The unique identifier of the join request"
  id: String!
  "The time the join request was created"
  inserted_at: NaiveDatetime
  "The time the join request was responded to"
  responded_at: NaiveDatetime
  "The role of the user in the group"
  role: GroupRoleType!
  "The status of the join request"
  status: GroupInviteStatus!
  "The time the join request was last updated"
  updated_at: NaiveDatetime
  "The user that sent the join request"
  user: User
}

GroupUserMemberList

Schema: user

type GroupUserMemberList {
  "The pagination info - containing info on how to paginate further"
  pagination_info: PaginationInfo!
  "A paginated result of members of a group"
  records: [GroupUserMemberListItem!]!
}

GroupUserMemberListItem

Schema: user

type GroupUserMemberListItem {
  "The role of the user in the group"
  role: GroupRoleType!
  "The user member"
  user: User!
}

Interest

Schema: user, company

type Interest {
  "Description of the interest"
  description: String
  "ID of the interest"
  id: String
  "Title of the interest"
  title: String
}

Schema: company

A company-owned invitation link. Share it via invitation_url or the QR code fields.

type InvitationLink {
  "Whether anonymous (non-registered) users may subscribe via this link"
  allow_anonymous_subscription: Boolean!
  "Whether joining users may form a connection with the company"
  allow_user_connection: Boolean!
  "B2C connection type to create when a user joins via this link"
  b2c_connection_type: B2cConnectionType
  "C2C connection type to create when a user joins via this link"
  c2c_connection_type: C2cConnectionType
  "The unique identifier"
  id: Id!
  "When the link was created"
  inserted_at: NaiveDatetime!
  "Server-generated token the client uses when building the shareable URL"
  invitation_token: String!
  "The shareable URL (the frontend join page for this link)"
  invitation_url: String!
  "User who created the link (optional — company-only links have no inviter)"
  invited_by_user: User
  "Human-readable name for this link (shown internally to the company admins)"
  name: String
  "The shareable URL as an inline SVG QR code data-URI, branded with the company logo"
  qr_code: String
  "The QR code as a download-ready PNG data-URI (carries the company name header and the URL as footer)"
  qr_code_download: String
  "Whether the join flow should prompt for email subscription"
  request_email_subscription: Boolean!
  "Whether the join flow should prompt for SMS subscription"
  request_sms_subscription: Boolean!
  "Whether the join flow should prompt for voice subscription"
  request_voice_subscription: Boolean!
  "When the link was last updated"
  updated_at: NaiveDatetime!
}

InvitationSetupResult

Schema: user

The requests materialized for an authenticated invitation recipient

type InvitationSetupResult {
  "The company connection request, when one applies and the user isn't already connected"
  b2c_connection_request: B2cConnectionRequest
  "One subscription request per channel the link asks for"
  b2c_subscription_requests: [B2cSubscriptionRequest]
  "The user-to-user connection request, when the link carries a connection type"
  c2c_connection_request: C2cConnectionRequest
}

Notification

Schema: user, company

An in-app notification

type Notification {
  "Ids a destination needs beyond the subject — a group, a form. Empty for
kinds that need nothing else."
  context: Json
  "The unique identifier of the notification"
  id: Id!
  "The date and time the notification was created"
  inserted_at: NaiveDatetime!
  "What the notification is about. Together with `subjectStatus` and
`context` this is what a client routes from — the API states what
happened and each client decides where that leads."
  kind: NotificationKind
  "The read/unread status of the notification"
  status: NotificationStatus!
  "The record the notification is about"
  subject_id: Id
  "The subject's status when the notification was written. What separates
being asked from being answered: the same record produces both, and they
belong in different places."
  subject_status: String
  "The text content of the notification"
  text: String!
  "The date and time the notification was last updated"
  updated_at: NaiveDatetime!
}

OnboardingStatus

Schema: user

Per-step onboarding status for a user, plus a computed fully_onboarded flag

type OnboardingStatus {
  "Status of the company-registration onboarding step"
  company_registered_step: OnboardingStatusValue!
  "Status of the contact-information onboarding step"
  contact_information_step: OnboardingStatusValue!
  "True when every required step is either completed or skipped"
  fully_onboarded: Boolean!
  "Status of the initial-login onboarding step"
  initial_login_step: OnboardingStatusValue!
  "Status of the interests-information onboarding step"
  interests_information_step: OnboardingStatusValue!
  "Status of the invited-contacts onboarding step"
  invited_contacts_step: OnboardingStatusValue!
  "Status of the personal-information onboarding step"
  personal_information_step: OnboardingStatusValue!
  "Status of the social-network-information onboarding step"
  social_network_information_step: OnboardingStatusValue!
}

OptOutRequest

Schema: company

type OptOutRequest {
  "The company the opt-out request belongs to"
  company: Company
  "The date and time the opt out request was created"
  created_at: NaiveDatetime
  "Request destination - email, phone number, username or any other identifier where request was sent to"
  destination: String
  "External resource id (if applicable) where opt-out request was received (eg. message id)"
  external_id: String
  "The unique identifier of the opt-out request"
  id: Id
  "Textual part of the entire message in which opt-out is requested"
  message_body: String
  "Additional metadata"
  metadata: Json
  "Request origin - email, phone number, username or any other identifier from where request was sent"
  source: String
  "Status of the request"
  status: OptOutRequestStatus
  "Date and time when the opt-out request was initially received"
  timestamp: NaiveDatetime
  "Type of the request"
  type: OptOutRequestType
  "The date and time the opt out request was last updated"
  updated_at: NaiveDatetime
  "The user the opt-out request belongs to"
  user: User
}

OrganizationType

Schema: user, company

type OrganizationType {
  "Display name of the organization type"
  display_name: String
  "The unique identifier of the organization type"
  id: String
}

OtpData

Schema: user, company

type OtpData {
  "When will the otp expire"
  expires_at: NaiveDatetime
  "When can the next otp be requested"
  next_otp_at: NaiveDatetime
  "Status of the otp"
  otp_status: String
  "Remaining otp attempts"
  remaining_otp_attempts: Integer
}

PaginatedAiTaskRuns

Schema: user, company

A page of a task's runs

type PaginatedAiTaskRuns {
  pagination_info: PaginationInfo
  records: [AiTaskRun!]!
}

PaginatedAiTasks

Schema: user, company

A page of AI tasks

type PaginatedAiTasks {
  pagination_info: PaginationInfo
  records: [AiTask!]!
}

PaginatedB2bConnectionRequests

Schema: company

A cursor-paginated page of B2B connection requests

type PaginatedB2bConnectionRequests {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of B2B connection request records"
  records: [B2bConnectionRequest!]!
}

PaginatedB2bConnections

Schema: company

Cursor-paginated B2B connections, returned by paginatedB2bConnections

type PaginatedB2bConnections {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of B2B connection records"
  records: [B2bConnection!]!
}

PaginatedB2bFormSubmissionRequests

Schema: company

Paginated B2B form submission requests (page-based)

type PaginatedB2bFormSubmissionRequests {
  page: Integer!
  records: [B2bFormSubmissionRequest!]!
  total_records: Integer!
}

PaginatedB2cConnectionRequests

Schema: user, company

A cursor-paginated page of B2C connection requests

type PaginatedB2cConnectionRequests {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of B2C connection request records"
  records: [B2cConnectionRequest!]!
}

PaginatedB2cConnections

Schema: user, company

Cursor-paginated B2C connections, returned by paginatedB2cConnections

type PaginatedB2cConnections {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of B2C connection records"
  records: [B2cConnection!]!
}

PaginatedB2cFormSubmissionRequests

Schema: user

Paginated B2C form submission requests (page-based)

type PaginatedB2cFormSubmissionRequests {
  page: Integer!
  records: [B2cFormSubmissionRequest!]!
  total_records: Integer!
}

PaginatedB2cSubscriptionRequests

Schema: user, company

A cursor-paginated page of B2C subscription requests

type PaginatedB2cSubscriptionRequests {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of B2C subscription request records"
  records: [B2cSubscriptionRequest!]!
}

PaginatedB2cSubscriptions

Schema: user, company

type PaginatedB2cSubscriptions {
  "The pagination info - containing info on how to paginate further"
  pagination_info: PaginationInfo!
  "A paginated result of B2C subscription records"
  records: [B2cSubscription!]!
}

PaginatedC2bConnectionRequests

Schema: user, company

A cursor-paginated page of C2B connection requests

type PaginatedC2bConnectionRequests {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of C2B connection request records"
  records: [C2bConnectionRequest!]!
}

PaginatedC2cConnectionRequests

Schema: user

A cursor-paginated page of C2C connection requests

type PaginatedC2cConnectionRequests {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of C2C connection request records"
  records: [C2cConnectionRequest!]!
}

PaginatedC2cConnections

Schema: user

Cursor-paginated C2C connections, returned by paginatedC2cConnections

type PaginatedC2cConnections {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of C2C connection records"
  records: [C2cConnection!]!
}

PaginatedClientSecrets

Schema: company

A cursor-paginated page of client secrets

type PaginatedClientSecrets {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of client secret records"
  records: [ClientSecret!]!
}

PaginatedCompanyFormVersions

Schema: company

A cursor-paginated page of form versions

type PaginatedCompanyFormVersions {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of form version records"
  records: [FormVersion!]!
}

PaginatedDocuments

Schema: user, company

A cursor-paginated page of documents

type PaginatedDocuments {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of document records"
  records: [Document!]!
}

PaginatedFormSubmissions

Schema: company

Paginated form submissions (cursor-based)

type PaginatedFormSubmissions {
  pagination_info: PaginationInfo!
  records: [FormInstance!]!
}

PaginatedForms

Schema: company

type PaginatedForms {
  "The pagination info"
  pagination_info: PaginationInfo!
  "A paginated list of forms"
  records: [Form!]!
}

PaginatedGroupUserMemberInvites

Schema: user

A cursor-paginated page of group user member invites

type PaginatedGroupUserMemberInvites {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of group user member invite records"
  records: [GroupUserMemberInvite!]!
}

PaginatedGroupUserMemberJoinRequests

Schema: user

A cursor-paginated page of group user member join requests

type PaginatedGroupUserMemberJoinRequests {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of group user member join request records"
  records: [GroupUserMemberJoinRequest!]!
}

PaginatedGroupUserMembers

Schema: user

A cursor-paginated page of group memberships

type PaginatedGroupUserMembers {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of group membership records"
  records: [GroupUserMember!]!
}

Schema: company

A cursor-paginated page of invitation links

type PaginatedInvitationLinks {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of invitation link records"
  records: [InvitationLink!]!
}

PaginatedNotifications

Schema: user, company

type PaginatedNotifications {
  "The pagination info - containing info on how to paginate further"
  pagination_info: PaginationInfo!
  "A paginated list of notification records"
  records: [Notification!]!
}

PaginatedReceivedB2bFormSubmissionRequests

Schema: company

Paginated received B2B form submission requests (cursor-based)

type PaginatedReceivedB2bFormSubmissionRequests {
  pagination_info: PaginationInfo!
  records: [B2bFormSubmissionRequest!]!
}

PaginatedReceivedB2cFormSubmissionRequests

Schema: user

Paginated received B2C form submission requests (cursor-based)

type PaginatedReceivedB2cFormSubmissionRequests {
  pagination_info: PaginationInfo!
  records: [B2cFormSubmissionRequest!]!
}

PaginatedSentB2bFormSubmissionRequests

Schema: company

Paginated sent B2B form submission requests (cursor-based)

type PaginatedSentB2bFormSubmissionRequests {
  pagination_info: PaginationInfo!
  records: [B2bFormSubmissionRequest!]!
}

PaginatedSentB2cFormSubmissionRequests

Schema: company

Paginated sent B2C form submission requests (cursor-based)

type PaginatedSentB2cFormSubmissionRequests {
  pagination_info: PaginationInfo!
  records: [B2cFormSubmissionRequest!]!
}

PaginatedSentimentAnalysisReports

Schema: company

Paginated sentiment analysis results (page-based)

type PaginatedSentimentAnalysisReports {
  "Current page number (1-based)"
  page: Integer!
  "Report records for the current page"
  records: [SentimentAnalysisReport!]!
  "Total records across all pages"
  total_records: Integer!
}

PaginatedSentimentAnalysisResults

Schema: company

Paginated sentiment analysis results (cursor-based)

type PaginatedSentimentAnalysisResults {
  pagination_info: PaginationInfo!
  records: [SentimentAnalysisReport!]!
}

PaginatedSpamReports

Schema: user

A cursor-paginated page of spam reports

type PaginatedSpamReports {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of spam report records"
  records: [SpamReport!]!
}

PaginatedTenDlcBrands

Schema: company

type PaginatedTenDlcBrands {
  "The current page number, starts with 1"
  page: Integer!
  "A paginated result of 10DLC brand records"
  records: [TenDlcBrand!]!
  "The total number of records available"
  total_records: Integer!
}

PaginatedTenDlcCampaigns

Schema: company

type PaginatedTenDlcCampaigns {
  "The current page number, starts with 1"
  page: Integer!
  "A paginated result of 10DLC campaign records"
  records: [TenDlcCampaign!]!
  "The total number of records available"
  total_records: Integer!
}

PaginatedUserEvents

Schema: user

type PaginatedUserEvents {
  "The pagination info — pass `next_cursor` back as `cursor` to fetch the following page"
  pagination_info: PaginationInfo!
  "A page of user events"
  records: [UserEvent!]!
}

PaginatedUserImports

Schema: company

type PaginatedUserImports {
  "The pagination info - containing info on how to paginate further"
  pagination_info: PaginationInfo!
  "A paginated list of user import records"
  records: [UserImport!]!
}

PaginationInfo

Schema: user, company

Pagination info

type PaginationInfo {
  "Limit on the number of results per query"
  limit: Integer
  "Cursor for the next batch of results, pass to the next query"
  next_cursor: String
}

RcsAuthorizationContact

Schema: company

Contact person authorized for RCS messaging

type RcsAuthorizationContact {
  "Email addresses associated with the contact"
  emails: [String]
  first_name: String
  last_name: String
  "Telephone numbers associated with the contact"
  telephone_numbers: [String]
  "Title or role (e.g. CEO)"
  title: String
}

RcsInformationSuggestions

Schema: company

RCS agent information suggestions generated from the company's existing data

type RcsInformationSuggestions {
  "Suggested agent capabilities"
  agent_capabilities: String
  "Suggested primary color in HEX format (e.g. #FF0000)"
  agent_color_schema_primary: String
  "Suggested secondary color in HEX format (e.g. #00FF00)"
  agent_color_schema_secondary: String
  "Suggested RCS agent description (max 256 characters)"
  agent_description: String
  "Suggested RCS agent name (max 40 characters)"
  agent_name: String
  "Suggested region the agent will operate in"
  agent_region: String
  "ISO country code where the company was incorporated"
  country_of_incorporation: String
  "Whether the agent should advertise rich-media support"
  rich_media_support: Boolean
  "Suggested actions a user can trigger during a conversation"
  suggested_actions: [RcsSuggestionItem]
  "Suggested quick replies a user can tap during a conversation"
  suggested_replies: [RcsSuggestionItem]
  "Suggested welcome message shown when a user opens a conversation"
  welcome_message: String
}

RcsSuggestedAction

Schema: company

A persisted suggested action for RCS messaging

type RcsSuggestedAction {
  "The unique identifier"
  id: Id!
  "Display text for the action"
  name: String!
}

RcsSuggestedReply

Schema: company

A persisted suggested reply for RCS messaging

type RcsSuggestedReply {
  "The unique identifier"
  id: Id!
  "Display text for the reply"
  name: String!
}

RcsSuggestionItem

Schema: company

A suggested RCS reply or action (name-only, no ID since it is not persisted yet)

type RcsSuggestionItem {
  "Display text for the reply/action"
  name: String
}

SearchResult

Schema: user, company

A single global-search row. The same shape is used for users, companies, and groups; fields that do not apply to a given kind are returned empty.

type SearchResult {
  "Addresses visible to the viewer; only returned when the caller requests sensitive data"
  addresses: [SearchResultAddress!]
  "Contact emails visible to the viewer; only returned when the caller requests sensitive data"
  emails: [SearchResultEmail!]
  "The unique identifier of the entity"
  id: Id!
  "Avatar or logo URL; may be nil when visibility hides the image from the viewer"
  image: String
  "Display name of the entity"
  label: String!
  "The viewer's relationship to this entity (connection types, group role, etc.); empty when the viewer has no relationship"
  relation: [String!]
  "Contact phone numbers visible to the viewer; only returned when the caller requests sensitive data"
  telephone_numbers: [SearchResultTelephoneNumber!]
  "Which kind of entity this row represents"
  type: SearchResultType!
  "Username; populated only for entities of type user"
  username: String
}

SearchResultAddress

Schema: user, company

type SearchResultAddress {
  city: String
  country: String
  id: Id!
  state: String
  street: String
  visibility: [String!]
  zip_code: String
}

SearchResultEmail

Schema: user, company

type SearchResultEmail {
  email: String
  id: Id!
  visibility: [String!]
}

SearchResultTelephoneNumber

Schema: user, company

type SearchResultTelephoneNumber {
  id: Id!
  number: String
  visibility: [String!]
}

SentimentAnalysisReport

Schema: company

A sentiment analysis report for an external communication

type SentimentAnalysisReport {
  "Recommended action based on the message's sentiment"
  action: SentimentAnalysisAction!
  "Confidence score the AI assigns to its recommended action (0.0–1.0)"
  certainty_factor: Float!
  "The external communication this report analyzes"
  external_communication: ExternalCommunication
  "The unique identifier"
  id: Id!
  "When the report was created"
  inserted_at: NaiveDatetime!
  "Related communications exchanged with the same address pair near the analyzed message, ordered most-recent first"
  thread: [ExternalCommunication!]!
  "Detected topics or intent tags"
  topics: [String]
  "When the report was last updated"
  updated_at: NaiveDatetime!
}

ShallowCompany

Schema: user, company

Shallow Company object

type ShallowCompany {
  "The brand name of the company"
  brand_name: String
  "The unique identifier of the company"
  id: String!
  "The legal name of the company"
  legal_name: String
  "The TnID profile name of the company"
  profile_name: String
}

SmsOptInQrCode

Schema: company

type SmsOptInQrCode {
  message: String
  "Inline SVG data-URI for on-screen preview"
  qr_code: String
  "Download-ready PNG data-URI (carries the company name header + rates disclaimer)"
  qr_code_download: String
  telephone_number: TelephoneNumber
}

SpamReport

Schema: user

type SpamReport {
  "The channel type of the spam report"
  channel_type: SpamReportChannelType
  "The date and time the spam report was created"
  created_at: NaiveDatetime
  "Free-form description of the incident provided when the report was filed"
  description: String
  "The destination that the content of the report arrived to"
  destination: String
  from_number: String
  "The unique identifier of the Spam Report"
  id: Id
  "The issue type of the spam report"
  issue_type: SpamReportIssueType
  "If the report is about an SMS the content of the SMS"
  message_content: String
  "Additional metadata"
  metadata: Json
  "The date and time the the spam report happened"
  reported_at: NaiveDatetime
  "The source that the content of the report arrived from"
  source: String
  "Current status of the spam report"
  status: SpamReportStatus
  timestamp: NaiveDatetime
  to_number: String
  "The date and time the spam report was last updated"
  updated_at: NaiveDatetime
  "User reporting the incident."
  user: User
  "Additional note from the user"
  user_note: String
}

Specialty

Schema: user, company

type Specialty {
  "Description of the specialty"
  description: String
  "ID of the specialty"
  id: String
  "Title of the specialty"
  title: String
}

StatusResponse

Schema: user, company

Generic response containing just a success/failure status — used by mutations that don't need to return a domain object

type StatusResponse {
  "Status of the request"
  status: ResponseStatus
}

Tag

Schema: user, company

A tag in a user's or company's document repository

type Tag {
  "The unique identifier of the tag"
  id: Id!
  "When the tag was created"
  inserted_at: NaiveDatetime
  "The tag name"
  name: String!
  "When the tag was last updated"
  updated_at: NaiveDatetime
}

TelephoneNumber

Schema: user, company

type TelephoneNumber {
  "The unique identifier of the telephone number"
  id: Id!
  number: String
  status: VerificationStatus
  types: [TelephoneNumberType]
  visibility: [VisibilityType]
}

TenDlcApiKey

Schema: company

type TenDlcApiKey {
  "Unique 10DLC API Key identifier"
  api_key_id: String!
  "Unique 10DLC API Key secret"
  api_key_secret: String!
  "Type of the API key (owned or authorized)"
  api_key_type: TenDlcApiKeyType!
  "The company that owns the API key"
  company: ShallowCompany
  "Which company the API key belongs to"
  company_id: String!
  "Unique internal API Key identifier"
  id: Id!
  "Record insertion timestamp"
  inserted_at: NaiveDatetime
  "API Key name / label"
  name: String
  "Record update timestamp"
  updated_at: NaiveDatetime
}

TenDlcApiKeyAuthorization

Schema: company

type TenDlcApiKeyAuthorization {
  "10DLC API Key"
  api_key: TenDlcApiKey!
  "When the API key was shared with the current company"
  authorized_at: NaiveDatetime
  "The authorized company (shallow means only the basic fields are included)"
  company: ShallowCompany!
  "Authorization record identifier"
  id: Id!
}

TenDlcBrand

Schema: company

type TenDlcBrand {
  "Alternative business ID"
  alt_business_id: String
  "Alternative business ID type"
  alt_business_id_type: String
  "TCR Brand ID (e.g., B123456, null for drafts)"
  brand_id: String
  "Relationship to brand"
  brand_relationship: String
  "Business contact email"
  business_contact_email: String
  "City"
  city: String
  "Link to local company"
  company_id: String!
  "Company legal name"
  company_name: String
  "Country code"
  country: String
  "Creation date"
  create_date: String
  "CSP identifier"
  csp_id: String
  "Brand display name"
  display_name: String
  "Employer identification number"
  ein: String
  "EIN issuing country"
  ein_issuing_country: String
  "Contact email"
  email: String
  "Business entity type"
  entity_type: TenDlcEntityType
  "Contact first name (for sole proprietors)"
  first_name: String
  "Internal identifier (UUID)"
  id: String!
  "Brand identity verification status"
  identity_status: String
  "Record insertion timestamp"
  inserted_at: NaiveDatetime
  "Contact last name (for sole proprietors)"
  last_name: String
  "Mobile phone number"
  mobile_phone: String
  "Test/mock brand flag"
  mock: Boolean
  "Additional custom attributes"
  optional_attributes: Json
  "Ownership type to brand, "DIRECT" or "PARTNER""
  ownership_type: TenDlcOwnershipType
  "Contact phone number"
  phone: String
  "Postal code"
  postal_code: String
  "External reference ID"
  reference_id: String
  "State"
  state: String
  "Brand status"
  status: TenDlcBrandStatus
  "Stock exchange"
  stock_exchange: String
  "Stock ticker symbol"
  stock_symbol: String
  "Street address"
  street: String
  "Last sync timestamp"
  synced_at: NaiveDatetime
  "10DLC API key used to register this brand"
  ten_dlc_api_key_id: String
  "Record update timestamp"
  updated_at: NaiveDatetime
  "Industry vertical"
  vertical: String
  "Brand website"
  website: String
  "Workflow status"
  workflow_status: TenDlcBrandWorkflowStatus
}

TenDlcCampaign

Schema: company

type TenDlcCampaign {
  "Age-gated content"
  age_gated: Boolean
  "Auto-renewal enabled"
  auto_renewal: Boolean
  "Billing date"
  billed_date: NaiveDatetime
  "TCR Brand ID (e.g., B123456, null for draft brands)"
  brand_id: String
  "TCR Campaign ID (e.g., C123456, null for drafts)"
  campaign_id: String
  "Link to local company"
  company_id: String!
  "Creation date"
  create_date: NaiveDatetime
  "CSP identifier"
  csp_id: String
  "Campaign description"
  description: String
  "Direct lending content"
  direct_lending: Boolean
  "Contains embedded links"
  embedded_link: Boolean
  "Sample embedded link"
  embedded_link_sample: String
  "Contains embedded phone numbers"
  embedded_phone: Boolean
  "Expiration date"
  expiration_date: NaiveDatetime
  "Keywords for help"
  help_keywords: String
  "Help response message"
  help_message: String
  "Internal identifier (UUID)"
  id: String!
  "Record insertion timestamp"
  inserted_at: NaiveDatetime
  "Internal brand identifier (UUID)"
  internal_brand_id: String!
  "Message flow description"
  message_flow: String
  "MNO-specific metadata"
  mno_metadata: Json
  "Test/mock campaign flag"
  mock: Boolean
  "Next renewal/expiration date"
  next_renewal_or_expiration_date: Date
  "Uses number pooling"
  number_pool: Boolean
  "Keywords for opt-in"
  optin_keywords: String
  "Opt-in confirmation message"
  optin_message: String
  "Keywords for opt-out"
  optout_keywords: String
  "Opt-out confirmation message"
  optout_message: String
  "Ownership type to campaign, "DIRECT" or "PARTNER""
  ownership_type: TenDlcOwnershipType
  "Privacy policy URL"
  privacy_policy_link: String
  "External reference ID"
  reference_id: String
  "Reseller identifier"
  reseller_id: String
  "Message sample 1"
  sample1: String
  "Message sample 2"
  sample2: String
  "Message sample 3"
  sample3: String
  "Message sample 4"
  sample4: String
  "Message sample 5"
  sample5: String
  "Campaign status"
  status: TenDlcCampaignStatus
  "Sub-use cases"
  sub_usecases: [String]
  "Has help mechanism"
  subscriber_help: Boolean
  "Requires opt-in"
  subscriber_optin: Boolean
  "Has opt-out mechanism"
  subscriber_optout: Boolean
  "Last sync timestamp"
  synced_at: NaiveDatetime
  "Requires T&C acceptance"
  terms_and_conditions: Boolean
  "Terms and conditions URL"
  terms_and_conditions_link: String
  "Record update timestamp"
  updated_at: NaiveDatetime
  "Primary use case"
  usecase: String
  "Industry vertical"
  vertical: String
  "Workflow status"
  workflow_status: TenDlcCampaignWorkflowStatus
}

TenDlcCampaignWithTelephoneNumbers

Schema: company

type TenDlcCampaignWithTelephoneNumbers {
  "The campaign"
  campaign: TenDlcCampaign
  "Associated telephone numbers"
  telephone_numbers: [TenDlcComplianceTelephoneNumber]
}

TenDlcComplianceTelephoneNumber

Schema: company

type TenDlcComplianceTelephoneNumber {
  "TCR Campaign ID (e.g., C123456)"
  campaign_id: String
  "Current OSR campaign ID"
  current_osr_campaign_id: String
  "Current OSR NNID"
  current_osr_nnid: String
  "Current T-Mobile campaign ID"
  current_tmobile_campaign_id: String
  "Current T-Mobile NNID"
  current_tmobile_nnid: String
  "Telephone number record ID"
  id: String!
  "Record insertion timestamp"
  inserted_at: NaiveDatetime
  "Internal campaign identifier (UUID)"
  internal_campaign_id: String
  "Full telephone number"
  number: String!
  "OSR submission error details"
  osr_error: Json
  "OSR workflow status"
  osr_workflow_status: TenDlcComplianceTelephoneNumberStatus
  "Requested NNID"
  requested_nnid: String
  "Requested OSR campaign ID"
  requested_osr_campaign_id: String
  "Requested T-Mobile campaign ID"
  requested_tmobile_campaign_id: String
  "T-Mobile submission error details"
  tmobile_error: Json
  "T-Mobile workflow status"
  tmobile_workflow_status: TenDlcComplianceTelephoneNumberStatus
  "Record update timestamp"
  updated_at: NaiveDatetime
}

TrustedDomain

Schema: user, company

Trusted domain

type TrustedDomain {
  domain: String!
  "The unique identifier of the trusted domain"
  id: Id!
}

User

Schema: user, company

type User {
  "The about me of the user"
  about_me: String
  "About me visibility of the user"
  about_me_visibility: [VisibilityType]
  "The addresses of the user"
  addresses: [Address]
  "The birthdate of the user"
  birthdate: Date
  "Birthdate visibility of the user"
  birthdate_visibility: [VisibilityType]
  "The viewer's connection state to this user (drives the profile-view actions area)"
  connection: ViewerConnection
  "How the owner arranged their dashboard: which widgets are shown and in what order. An object holding an integer `version` and `widgets`, the widget ids in display order"
  dashboard_layout: Json
  "The maximum total bytes the user's document repository may occupy; only the user themselves can read it (string — see above)"
  document_repository_byte_limit: String
  "The dedicated email address that files can be sent to for this user's document repository"
  document_repository_email_address: String
  "The phone number that files can be texted (SMS/MMS) to for the document repository (digits only, no leading +)"
  document_repository_phone_number: String
  "Total bytes the user's documents currently occupy, trash included; only the user themselves can read it (string — a byte count can exceed a 32-bit integer)"
  document_repository_used_bytes: String
  "The emails of the user"
  emails: [UserEmail]
  "The first name of the user"
  first_name: String
  "The unique identifier of the user"
  id: String
  "The interests of the user"
  interests: [Interest]
  "Interests visibility of the user"
  interests_visibility: [VisibilityType]
  "The last name of the user"
  last_name: String
  "Additional metadata"
  metadata: Json
  "Metadata visibility of the user"
  metadata_visibility: [VisibilityType]
  "The middle name of the user"
  middle_name: String
  "Name visibility of the user"
  name_visibility: [VisibilityType]
  "The profile image of the company"
  profile_image_url: String
  "Profile image url visibility of the user"
  profile_image_url_visibility: [VisibilityType]
  "A key/value storage for private data"
  secret_storage: Json
  "The social networks of the user"
  social_networks: [Webpage]
  "The telephone numbers of the user"
  telephone_numbers: [UserTelephoneNumber]
  "The timezone of the user"
  timezone: String
  "Timezone visibility of the user"
  timezone_visibility: [VisibilityType]
  "The username of the user"
  username: String!
  "The webpages of the user"
  webpages: [Webpage]
}

UserDashboardStats

Schema: user

Aggregated dashboard statistics for a user

type UserDashboardStats {
  "Total number of established company connections"
  b2c_connections_count: Integer!
  "Total number of established people connections"
  c2c_connections_count: Integer!
  "Number of companies the user has a privileged role in"
  companies_count: Integer!
  "Number of pending received company connection requests"
  pending_b2c_connection_requests_count: Integer!
  "Number of pending received people connection requests"
  pending_c2c_connection_requests_count: Integer!
}

UserEmail

Schema: user, company

type UserEmail {
  email: String
  "The unique identifier of the email"
  id: Id!
  primary: Boolean
  status: VerificationStatus
  types: [EmailType]
  visibility: [VisibilityType]
}

UserEvent

Schema: user

An event recorded in a user's event ledger by a partner application

type UserEvent {
  "The user who recorded the event"
  actor_user_id: Id
  "The poster's unique reference for the event; posting it again returns this event"
  external_ref: String!
  "The unique identifier of the event"
  id: Id!
  "When the event happened, as reported by the poster"
  occurred_at: Datetime!
  "The JSON object posted with the event, returned as posted; its shape is defined by the event type"
  payload: Json!
  "When TNID recorded the event (UTC)"
  recorded_at: NaiveDatetime!
  "The user the event is about"
  subject_user_id: Id!
  "Dot-separated event type, starting with the recording application's prefix (e.g. hoozit.order.completed)"
  type: String!
}

UserImport

Schema: company

A company user import record

type UserImport {
  "Signed URL to download the error report CSV, present only when status is error"
  error_file_url: String
  "The S3 file key of the uploaded CSV"
  file_name: String!
  "The unique identifier of the import"
  id: Id!
  "The date and time the import was created"
  inserted_at: NaiveDatetime!
  "Internal note about the import"
  note: String
  "The current status of the import"
  status: UserImportStatus!
  "The date and time the import was last updated"
  updated_at: NaiveDatetime!
}

UserNotificationSettings

Schema: user

Personal notification settings for a user

type UserNotificationSettings {
  "Email when a company connection request is received"
  b2c_conn_request_received_email: Boolean!
  "In-app notification when a company connection request is received"
  b2c_conn_request_received_notification: Boolean!
  "Email when a company form submission request is received"
  b2c_form_instance_request_received_email: Boolean!
  "In-app notification when a company form submission request is received"
  b2c_form_instance_request_received_notification: Boolean!
  "Email when a company subscription request is received"
  b2c_sub_request_received_email: Boolean!
  "In-app notification when a company subscription request is received"
  b2c_sub_request_received_notification: Boolean!
  "Email when a company connection request response is received"
  c2b_conn_request_response_email: Boolean!
  "In-app notification when a company connection request response is received"
  c2b_conn_request_response_notification: Boolean!
  "Email when a people connection request is received"
  c2c_conn_request_received_email: Boolean!
  "In-app notification when a people connection request is received"
  c2c_conn_request_received_notification: Boolean!
  "Email when a people connection request response is received"
  c2c_conn_request_response_email: Boolean!
  "In-app notification when a people connection request response is received"
  c2c_conn_request_response_notification: Boolean!
}

UserPendingActionCounts

Schema: user

Counts of items awaiting the current user's response

type UserPendingActionCounts {
  "Company connection requests received and not yet answered"
  company_connection_requests: Integer!
  "Form submission requests waiting on this user: those not yet started, and
those returned with changes requested. Requests already submitted, settled
or in progress are excluded."
  form_requests: Integer!
  "Group invites received and not yet answered"
  group_invites: Integer!
  "Documents received over a message channel and awaiting confirmation"
  pending_documents: Integer!
  "People connection requests received and not yet answered"
  people_connection_requests: Integer!
  "Subscription requests received and not yet answered"
  subscription_requests: Integer!
}

UserSettings

Schema: user

type UserSettings {
  "About me visibility of the user"
  about_me_visibility: [VisibilityType]
  "Birthdate visibility of the user"
  birthdate_visibility: [VisibilityType]
  "How the owner arranged their dashboard: which widgets are shown and in what order. An object holding an integer `version` and `widgets`, the widget ids in display order"
  dashboard_layout: Json
  "The unique identifier of the user"
  id: String
  "Interests visibility of the user"
  interests_visibility: [VisibilityType]
  "Metadata visibility of the user"
  metadata_visibility: [VisibilityType]
  "Name visibility of the user"
  name_visibility: [VisibilityType]
  "Profile image url visibility of the user"
  profile_image_url_visibility: [VisibilityType]
  "A key/value storage for private data"
  secret_storage: Json
  "Timezone visibility of the user"
  timezone_visibility: [VisibilityType]
}

UserTelephoneNumber

Schema: user, company

type UserTelephoneNumber {
  "The unique identifier of the telephone number"
  id: Id!
  number: String
  primary: Boolean
  status: VerificationStatus
  types: [TelephoneNumberType]
  visibility: [VisibilityType]
}

VerticalType

Schema: user, company

type VerticalType {
  "The description of the vertical type"
  description: String
  "The name of the vertical type"
  display_name: String!
  "The unique identifier of the vertical type"
  id: String
}

ViewerConnection

Schema: user, company

Connection state between the viewer and the viewed user/company

type ViewerConnection {
  "Id of the established connection — present when status is CONNECTED (used to remove it)"
  connection_id: Id
  "Connection / request type (e.g. FRIEND, CUSTOMER, PARTNER); null when NONE/SELF"
  connection_type: ViewerConnectionType
  "Id of the pending request — present when status is PENDING_* (used to respond/revoke)"
  request_id: Id
  "Relationship state from the viewer's perspective"
  status: ViewerConnectionStatus!
}

Webpage

Schema: user, company

type Webpage {
  "The unique identifier of the webpage"
  id: Id!
  "Type of the webpage"
  type: WebpageType
  "URL of the webpage"
  url: String
  "Current verification status of the URL based on automated reachability checks"
  url_verification_status: UrlVerificationStatus
  visibility: [VisibilityType]
}