# TNID API documentation

Canonical documentation: https://support.tsgglobal.com/docs/tnid

This export contains all 450 published pages in this collection. Source URLs identify each page; API hosts and code examples are preserved.

## Contents

- [Welcome](https://support.tsgglobal.com/docs/tnid)
- [API Quick Reference](https://support.tsgglobal.com/docs/tnid/api-quick-reference)
- [AI Assistants & MCP](https://support.tsgglobal.com/docs/tnid/ai-assistants-and-mcp)
- [Pagination](https://support.tsgglobal.com/docs/tnid/pagination)
- [Getting Started Guide](https://support.tsgglobal.com/docs/tnid/getting-started-guide)
- [Company Authentication](https://support.tsgglobal.com/docs/tnid/authentication/company-authentication)
- [User Authentication](https://support.tsgglobal.com/docs/tnid/authentication/user-authentication)
- [Refresh Token](https://support.tsgglobal.com/docs/tnid/authentication/refresh-token)
- [Accessing via Postman / GraphQL Schema examples](https://support.tsgglobal.com/docs/tnid/authentication/accessing-via-postman-graphql-schema-examples)
- [Search Companies](https://support.tsgglobal.com/docs/tnid/company/search-companies)
- [Invite Company](https://support.tsgglobal.com/docs/tnid/company/invite-company)
- [List Organization Types](https://support.tsgglobal.com/docs/tnid/company/list-organization-types)
- [List Vertical Types](https://support.tsgglobal.com/docs/tnid/company/list-vertical-types)
- [Update Company Profile](https://support.tsgglobal.com/docs/tnid/company/update-company-profile)
- [B2B Features](https://support.tsgglobal.com/docs/tnid/company/b2b-features)
- [Send B2B Connection Request](https://support.tsgglobal.com/docs/tnid/company/b2b-features/send-b2b-connection-request)
- [List B2B Connections](https://support.tsgglobal.com/docs/tnid/company/b2b-features/list-b2b-connections)
- [List Pending B2B Connection Requests](https://support.tsgglobal.com/docs/tnid/company/b2b-features/list-pending-b2b-connection-requests)
- [Remove B2B Connection](https://support.tsgglobal.com/docs/tnid/company/b2b-features/remove-b2b-connection)
- [Cancel B2B Connection Request](https://support.tsgglobal.com/docs/tnid/company/b2b-features/cancel-b2b-connection-request)
- [Get Received B2B Connection Requests](https://support.tsgglobal.com/docs/tnid/company/b2b-features/get-received-b2b-connection-requests)
- [Respond to B2B Connection Requests](https://support.tsgglobal.com/docs/tnid/company/b2b-features/respond-to-b2b-connection-requests)
- [B2C Features](https://support.tsgglobal.com/docs/tnid/company/b2c-features)
- [List B2C (People) Connections](https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-b2c-people-connections)
- [List Pending People Connection Requests](https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-pending-people-connection-requests)
- [List Active Subscribers](https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-active-subscribers)
- [List Pending Subscription Requests](https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-pending-subscription-requests)
- [Send Person (B2C) Connection Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/send-person-b2c-connection-request)
- [Invite People (as Company)](https://support.tsgglobal.com/docs/tnid/company/b2c-features/invite-people-as-company)
- [Send Person (B2C) Subscription Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/send-person-b2c-subscription-request)
- [Remove B2C Connection](https://support.tsgglobal.com/docs/tnid/company/b2c-features/remove-b2c-connection)
- [Cancel Pending B2C Connection Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/cancel-pending-b2c-connection-request)
- [Cancel Pending B2C Subscription Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/cancel-pending-b2c-subscription-request)
- [Get Pending Connection Requests (People)](https://support.tsgglobal.com/docs/tnid/company/b2c-features/get-pending-connection-requests-people)
- [Respond to C2B Connection Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/respond-to-c2b-connection-request)
- [Get Connected People](https://support.tsgglobal.com/docs/tnid/company/b2c-features/get-connected-people)
- [Generate SMS Opt-In QR Code](https://support.tsgglobal.com/docs/tnid/company/b2c-features/generate-sms-opt-in-qr-code)
- [Search People](https://support.tsgglobal.com/docs/tnid/company/b2c-features/search-people)
- [List Opt-Out Requests](https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-opt-out-requests)
- [Create Opt-out Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/create-opt-out-request)
- [Upsert B2C Subscription](https://support.tsgglobal.com/docs/tnid/company/b2c-features/upsert-b2c-subscription)
- [Delete B2C Subscription](https://support.tsgglobal.com/docs/tnid/company/b2c-features/delete-b2c-subscription)
- [Webhooks](https://support.tsgglobal.com/docs/tnid/company/webhooks)
- [Update User profile](https://support.tsgglobal.com/docs/tnid/user/update-user-profile)
- [Search User (People)](https://support.tsgglobal.com/docs/tnid/user/search-user-people)
- [Invite User (People)](https://support.tsgglobal.com/docs/tnid/user/invite-user-people)
- [Connections](https://support.tsgglobal.com/docs/tnid/user/connections)
- [Send C2B Connection Request](https://support.tsgglobal.com/docs/tnid/user/connections/send-c2b-connection-request)
- [List B2C connections](https://support.tsgglobal.com/docs/tnid/user/connections/list-b2c-connections)
- [List received pending B2C Connection Requests](https://support.tsgglobal.com/docs/tnid/user/connections/list-received-pending-b2c-connection-requests)
- [Respond to received B2C Connection Request](https://support.tsgglobal.com/docs/tnid/user/connections/respond-to-received-b2c-connection-request)
- [Revoke sent C2B Connection Request](https://support.tsgglobal.com/docs/tnid/user/connections/revoke-sent-c2b-connection-request)
- [List sent pending C2B Connection Requests](https://support.tsgglobal.com/docs/tnid/user/connections/list-sent-pending-c2b-connection-requests)
- [Spam Reporting Features](https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features)
- [Create Spam Report](https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features/create-spam-report)
- [List Spam Reports](https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features/list-spam-reports)
- [Company Features](https://support.tsgglobal.com/docs/tnid/user/company-features)
- [Search Companies](https://support.tsgglobal.com/docs/tnid/user/company-features/search-companies)
- [Create company profile](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-profile)
- [Create Company Client Secret](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-client-secret)
- [List Pending C2C Connection Requests](https://support.tsgglobal.com/docs/tnid/user/company-features/list-pending-c2c-connection-requests)
- [Remove C2C Connection](https://support.tsgglobal.com/docs/tnid/user/company-features/remove-c2c-connection)
- [Revoke sent C2C Connection Request](https://support.tsgglobal.com/docs/tnid/user/company-features/revoke-sent-c2c-connection-request)
- [List Received C2C Connection Requests](https://support.tsgglobal.com/docs/tnid/user/company-features/list-received-c2c-connection-requests)
- [Send C2C Connection Request](https://support.tsgglobal.com/docs/tnid/user/company-features/send-c2c-connection-request)
- [Respond C2C Connection Request](https://support.tsgglobal.com/docs/tnid/user/company-features/respond-c2c-connection-request)
- [List C2C Connections](https://support.tsgglobal.com/docs/tnid/user/company-features/list-c2c-connections)
- [Remove B2C Subscription](https://support.tsgglobal.com/docs/tnid/user/company-features/remove-b2c-subscription)
- [Respond to B2C Subscription Request](https://support.tsgglobal.com/docs/tnid/user/company-features/respond-to-b2c-subscription-request)
- [Group Features](https://support.tsgglobal.com/docs/tnid/group-features)
- [Search Groups](https://support.tsgglobal.com/docs/tnid/group-features/search-groups)
- [List User's Groups](https://support.tsgglobal.com/docs/tnid/group-features/list-users-groups)
- [Create Group](https://support.tsgglobal.com/docs/tnid/group-features/create-group)
- [Update group](https://support.tsgglobal.com/docs/tnid/group-features/update-group)
- [Invite User to Group](https://support.tsgglobal.com/docs/tnid/group-features/invite-user-to-group)
- [Respond to Group invite](https://support.tsgglobal.com/docs/tnid/group-features/respond-to-group-invite)
- [List pending Group invites (Sent)](https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-invites-sent)
- [List pending Group invites (Received)](https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-invites-received)
- [Revoke Pending Group User Member Invite](https://support.tsgglobal.com/docs/tnid/group-features/revoke-pending-group-user-member-invite)
- [Send Group user member join request](https://support.tsgglobal.com/docs/tnid/group-features/send-group-user-member-join-request)
- [List Received Pending Group user member join request](https://support.tsgglobal.com/docs/tnid/group-features/list-received-pending-group-user-member-join-request)
- [List Pending Group user member join request](https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-user-member-join-request)
- [Revoke Group user member join request](https://support.tsgglobal.com/docs/tnid/group-features/revoke-group-user-member-join-request)
- [Respond to Group user member join request](https://support.tsgglobal.com/docs/tnid/group-features/respond-to-group-user-member-join-request)
- [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands)
- [10DLC Campaigns](https://support.tsgglobal.com/docs/tnid/10dlc/campaigns)
- [Changelog](https://support.tsgglobal.com/docs/tnid/changelog)
- [001\_user](https://support.tsgglobal.com/docs/tnid/api-reference/001_user)
- [Get authentication OTP via email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001__get_authentication_otp_via_email)
- [Authenticate As User Via Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002__authenticate_via_email)
- [Get authentication OTP via telephone number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003__get_authentication_otp_via_telephone_number)
- [Authenticate As User Via Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004__authenticate_via_telephone_number)
- [Refresh Authentication (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005__refresh_authentication_as_user)
- [001\_profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile)
- [Get User Profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/001__get_user_profile)
- [Update user profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/002__update_user_profile)
- [002\_email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email)
- [Create User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/001__create_user_email)
- [Create user email verification code](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/002__create_user_email_verification_code)
- [Verify User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/003__verify_user_email)
- [Set Primary User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/004__set_primary_user_email)
- [Update User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/005__update_user_email)
- [Remove User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/006__remove_user_email)
- [003\_address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address)
- [Create User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/001__create_user_address)
- [Update User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/002__update_user_address)
- [Remove User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/003__remove_user_address)
- [004\_telephone\_number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number)
- [Create User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/001__create_user_telephone_number)
- [Create user telephone number verification code](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/002__create_user_telephone_number_verification_code)
- [Verify User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/003__verify_user_telephone_number)
- [Set Primary User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/004__set_primary_user_telephone_number)
- [Update User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/005__update_user_telephone_number)
- [Remove User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/006__remove_user_telephone_number)
- [005\_c2c\_(user\_to\_user)\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections)
- [Create C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/001__create_c2c_connection_request)
- [List pending C2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/002__list_pending_c2c_connection_requests)
- [List Pending C2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/003__list_paginated_pending_c2c_connection_requests)
- [List received C2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/004__list_received_c2c_connection_requests)
- [List Received C2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/005__list_paginated_received_c2c_connection_requests)
- [Respond to a C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/006__respond_c2c_connection_request)
- [List C2C connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/007__list_c2c_connections)
- [List C2C connections (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/008__list_paginated_c2c_connections)
- [Revoke a C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/009__revoke_c2c_connection_request)
- [Remove a C2C connection](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/010__remove_c2c_connection)
- [Create C2C invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/011__create_c2c_invite)
- [006\_spam\_reporting](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting)
- [List spam reports](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/001__list_spam_reports)
- [List Spam Reports (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/002__list_paginated_spam_reports)
- [Create spam report](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/003__create_spam_report)
- [007\_groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups)
- [Search Groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/001__search_groups)
- [Get Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/002__get_group)
- [List User's Groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/003__list_users_groups)
- [List User Groups (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/004__list_paginated_user_groups)
- [List Group Members (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/005__list_user_group_members)
- [Create Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/006__create_group)
- [Update Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/007__update_group)
- [Leave Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/008__leave_group)
- [Update group member role](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/009__update_group_user_member_role)
- [Remove group member](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/010__remove_group_user_member)
- [Invite a user to join a group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/011__create_group_user_member_invite)
- [Respond to a group member invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/012__respond_group_user_member_invite)
- [List pending group member invites](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/013__list_pending_group_user_member_invites)
- [List Pending Group User Member Invites (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/014__list_paginated_pending_group_user_member_invites)
- [List received group member invites](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/015__list_received_group_user_member_invites)
- [List Received Group User Member Invites (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/016__list_paginated_received_group_user_member_invites)
- [Revoke a group member invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/017__revoke_group_user_member_invite)
- [Create a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/018__create_group_user_member_join_request)
- [List received group join requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/019__list_received_group_user_member_join_requests)
- [List Received Group User Member Join Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/020__list_paginated_received_group_user_member_join_requests)
- [List pending group join requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/021__list_pending_group_user_member_join_requests)
- [List Pending Group User Member Join Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/022__list_paginated_pending_group_user_member_join_requests)
- [Revoke a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/023__revoke_group_user_member_join_request)
- [Respond to a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/024__respond_group_user_member_join_request)
- [008\_c2b\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections)
- [Create C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/001__create_c2b_connection_request)
- [List pending C2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/002__list_pending_c2b_connection_requests)
- [List Pending C2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/003__list_paginated_pending_c2b_connection_requests)
- [List received B2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/004__list_received_b2c_connection_requests)
- [List Received B2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/005__list_paginated_received_b2c_connection_requests)
- [Respond to B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/006__respond_b2c_connection_request)
- [Revoke C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/007__revoke_c2b_connection_request)
- [Remove C2B connection](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/008__remove_c2b_connection)
- [List B2C connections (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/009__list_b2c_connections_as_user)
- [List B2C Connections (User, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/010__list_paginated_b2c_connections)
- [009\_subscriptions](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions)
- [Respond to B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/001__respond_b2c_subscription_request)
- [Remove B2C subscription (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/002__remove_b2c_subscription_as_user)
- [List B2C subscriptions (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/003__list_b2c_subscriptions_as_user)
- [List pending B2C subscription requests (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/004__list_pending_b2c_subscription_requests_as_user)
- [List Pending B2C Subscription Requests (User, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/005__list_paginated_pending_b2c_subscription_requests)
- [Upsert B2C subscription](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/006__upsert_b2c_subscription)
- [010\_company\_management](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management)
- [Create company](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/001__create_company)
- [Create company client secret](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/002__create_company_client_secret)
- [Delete Company](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/003__delete_company)
- [Set Up Invitation From Token](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/004__setup_invitation_from_token)
- [List Switchable Companies](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/005__list_switchable_companies)
- [011\_users\_and\_search](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search)
- [Get User](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/001__get_user)
- [Get User By Username](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/002__get_user_by_username)
- [Search For Users (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/003__search_for_users_as_user)
- [Global Search (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/004__global_search_as_user)
- [012\_documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents)
- [Prepare File Upload (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/001__prepare_file_upload_as_user)
- [Prepare document upload (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/002__prepare_document_upload_as_user)
- [Confirm Document Upload (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/003__confirm_document_upload_as_user)
- [Accept User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/004__accept_user_documents)
- [Get User Document](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/005__get_user_document)
- [List user documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/006__list_paginated_user_documents)
- [Update User Document](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/007__update_user_document)
- [Move User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/008__move_user_documents)
- [Delete User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/009__delete_user_documents)
- [Restore User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/010__restore_user_documents)
- [Permanently Delete User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/011__permanently_delete_user_documents)
- [Empty User Trash](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/012__empty_user_trash)
- [Ask A Question Of Your Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/013__ask_user_document_question)
- [Create User Folder](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/014__create_user_folder)
- [Update User Folder](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/015__update_user_folder)
- [Move User Folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/016__move_user_folders)
- [Delete User Folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/017__delete_user_folders)
- [List user folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/018__list_user_folders)
- [Create User Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/019__create_user_tag)
- [Delete User Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/020__delete_user_tag)
- [List User Tags](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/021__list_user_tags)
- [Add User Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/022__add_user_document_tag)
- [Remove User Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/023__remove_user_document_tag)
- [List User AI Tasks](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/024__list_paginated_user_ai_tasks)
- [Get One User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/025__get_user_ai_task)
- [List A User AI Task's Answers](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/026__list_paginated_user_ai_task_runs)
- [Create A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/027__create_user_ai_task)
- [Update A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/028__update_user_ai_task)
- [Run A User AI Task Again](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/029__run_user_ai_task)
- [Delete A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/030__delete_user_ai_task)
- [013\_notifications](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications)
- [List notifications (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/001__list_notifications_as_user)
- [Get Recent Notifications](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/002__get_recent_notifications)
- [Get Unread Notification Count (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/003__get_unread_notification_count_as_user)
- [Mark Notification As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/004__mark_notification_as_read)
- [Mark Notifications As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/005__mark_notifications_as_read)
- [Mark All Notifications As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/006__mark_all_notifications_as_read)
- [Get Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/007__get_notification_settings)
- [Update Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/008__update_notification_settings)
- [Get B2C Connection Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/009__get_b2c_connection_notification_settings)
- [Update B2C Connection Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/010__update_b2c_connection_notification_settings)
- [Get Group Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/011__get_group_notification_settings)
- [Update Group Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/012__update_group_notification_settings)
- [Get Notification](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/013__get_notification)
- [014\_forms](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms)
- [List Received Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/001__list_received_form_submission_requests)
- [List Received Form Submission Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/002__list_paginated_received_form_submission_requests)
- [Reject Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/003__reject_form_submission_request)
- [015\_account](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account)
- [Get Current User Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/001__get_current_user_settings)
- [Update user settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/002__update_user_settings)
- [Get Dashboard Stats](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/003__get_dashboard_stats)
- [Get Onboarding Status](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/004__get_onboarding_status)
- [Complete Onboarding Step](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/005__complete_onboarding_step)
- [Create Support Request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/006__create_support_request)
- [List Interests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/007__list_interests)
- [Get Pending Action Counts](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/008__get_pending_action_counts)
- [016\_assistant](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant)
- [Ask A Question About Using Tnid](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant/001__ask_docs_question_as_user)
- [017\_user\_events](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events)
- [Create user event](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/001__create_user_event)
- [List user events](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/002__list_user_events)
- [002\_company](https://support.tsgglobal.com/docs/tnid/api-reference/002_company)
- [Authenticate Company](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001__authenticate)
- [Refresh Authentication (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002__refresh_authentication_as_company)
- [001\_companies](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies)
- [Search companies](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/001__search_companies)
- [Invite company to join platform](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/002__invite_company_to_join_platform)
- [Update company](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/003__update_company)
- [001\_profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile)
- [Update Company Profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/001__update_company_profile)
- [Get Current Company Profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/002__get_current_company)
- [002\_email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email)
- [Create Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/001__create_company_email)
- [Create company email verification code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/002__create_company_email_verification_code)
- [Verify Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/003__verify_company_email)
- [Update Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/004__update_company_email)
- [Remove Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/005__remove_company_email)
- [002\_ten\_dlc](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc)
- [List 10DLC API keys](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/001__list_api_keys)
- [Register 10DLC Api Key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/002__register_api_key)
- [Update 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/003__update_api_key)
- [Delete 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/004__delete_api_key)
- [List 10DLC API key authorizations](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/005__list_api_key_authorizations)
- [Authorize 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/006__authorize_api_key)
- [Revoke 10DLC Api Key Authorization](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/007__revoke_api_key_authorization)
- [List 10DLC brands](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/008__list_brands)
- [Get 10DLC brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/009__get_brand)
- [Save 10DLC Brand As Draft](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/010__save_brand_as_draft)
- [Update Draft 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/011__update_draft_brand)
- [Register 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/012__register_brand)
- [Update and submit 10DLC brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/013__update_and_submit_brand)
- [List 10DLC campaigns](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/014__list_campaigns)
- [Get 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/015__get_campaign)
- [Get 10DLC campaign with telephone numbers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/016__get_campaign_with_telephone_numbers)
- [Save 10DLC campaign as draft](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/017__save_campaign_as_draft)
- [Update draft 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/018__update_campaign_draft)
- [Register and submit 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/019__register_and_submit_campaign)
- [Submit 10DLC campaign when brand is ready](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/020__submit_campaign_when_ready)
- [Update submitted 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/021__update_submitted_campaign)
- [Delete 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/022__delete_brand)
- [Delete 10DLC Campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/023__delete_campaign)
- [003\_address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address)
- [Create Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/001__create_company_address)
- [Update Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/002__update_company_address)
- [Remove Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/003__remove_company_address)
- [003\_message\_sentiment\_analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis)
- [Report communication for analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/001__report_communication_for_analysis)
- [Confirm Unsubscribe Based On Analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/002__confirm_unsubscribe_based_on_analysis)
- [List Sentiment Analysis Results](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/003__list_sentiment_analysis_results)
- [List Sentiment Analysis Results (Cursor-paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/004__list_paginated_sentiment_analysis_results)
- [Get Sentiment Analysis Result](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/005__get_sentiment_analysis_result)
- [004\_misc](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc)
- [List Organization Types](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/001__list_organization_types)
- [List Vertical Types](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/002__list_vertical_types)
- [List Specialties](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/003__list_specialties)
- [004\_telephone\_number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number)
- [Create Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/001__create_company_telephone_number)
- [Create company telephone number verification code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/002__create_company_telephone_number_verification_code)
- [Verify Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/003__verify_company_telephone_number)
- [Update Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/004__update_company_telephone_number)
- [Remove Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/005__remove_company_telephone_number)
- [005\_b2b\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections)
- [Create B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/001__create_b2b_connection_request)
- [List B2B connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/002__list_b2b_connections)
- [List B2B connections (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/003__list_paginated_b2b_connections)
- [Remove B2B connection](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/004__remove_b2b_connection)
- [List pending B2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/005__list_pending_b2b_connection_requests)
- [List Pending B2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/006__list_paginated_pending_b2b_connection_requests)
- [Revoke B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/007__revoke_b2b_connection_request)
- [List received B2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/008__list_received_b2b_connection_requests)
- [List Received B2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/009__list_paginated_received_b2b_connection_requests)
- [Respond to B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/010__respond_b2b_connection_request)
- [006\_b2c\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections)
- [Create B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/001__create_b2c_connection_request)
- [List B2C connections (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/002__list_b2c_connections_as_company)
- [List B2C Connections (Company, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/003__list_paginated_b2c_connections_as_company)
- [List pending B2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/004__list_pending_b2c_connection_requests)
- [List Pending B2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/005__list_paginated_pending_b2c_connection_requests)
- [List received C2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/006__list_received_c2b_connection_requests)
- [List Received C2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/007__list_paginated_received_c2b_connection_requests)
- [Respond to C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/008__respond_c2b_connection_request)
- [Remove B2C connection](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/009__remove_b2c_connection)
- [Revoke B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/010__revoke_b2c_connection_request)
- [Create B2C invite](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/011__create_b2c_invite)
- [007\_b2c\_subscriptions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions)
- [List B2C subscriptions (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/001__list_b2c_subscriptions_as_company)
- [List pending B2C subscription requests (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/002__list_pending_b2c_subscription_requests_as_company)
- [List Pending B2C Subscription Requests (Company, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/003__list_paginated_pending_b2c_subscription_requests_as_company)
- [Create B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/004__create_b2c_subscription_request)
- [Revoke B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/005__revoke_b2c_subscription_request)
- [Remove B2C subscription (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/006__remove_b2c_subscription_as_company)
- [List B2C Subscription Topics](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/007__list_b2c_subscription_topics)
- [Create B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/008__create_b2c_subscription_topic)
- [Update B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/009__update_b2c_subscription_topic)
- [Remove B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/010__remove_b2c_subscription_topic)
- [008\_opt\_out](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out)
- [List Opt-Out Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/001__list_opt_out_requests)
- [Create Opt-Out Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/002__create_opt_out_request)
- [009\_sms\_opt\_in](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in)
- [Generate SMS Opt-In QR Code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in/001__generate_sms_opt_in_qr_code)
- [010\_users\_and\_search](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search)
- [Get User (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/001__get_user_as_company)
- [Get User By Username (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/002__get_user_by_username_as_company)
- [Search For Users (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/003__search_for_users_as_company)
- [Global Search (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/004__global_search_as_company)
- [011\_documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents)
- [Prepare File Upload (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/001__prepare_file_upload_as_company)
- [Prepare document upload (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/002__prepare_document_upload_as_company)
- [Confirm Document Upload (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/003__confirm_document_upload_as_company)
- [Accept Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/004__accept_company_documents)
- [Get Company Document](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/005__get_company_document)
- [List Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/006__list_paginated_company_documents)
- [Update Company Document](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/007__update_company_document)
- [Move Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/008__move_company_documents)
- [Delete Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/009__delete_company_documents)
- [Restore Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/010__restore_company_documents)
- [Permanently Delete Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/011__permanently_delete_company_documents)
- [Empty Company Trash](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/012__empty_company_trash)
- [Ask A Question Of The Company's Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/013__ask_company_document_question)
- [Create Company Folder](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/014__create_company_folder)
- [Update Company Folder](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/015__update_company_folder)
- [Move Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/016__move_company_folders)
- [Delete Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/017__delete_company_folders)
- [List Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/018__list_company_folders)
- [Create Company Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/019__create_company_tag)
- [Delete Company Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/020__delete_company_tag)
- [List Company Tags](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/021__list_company_tags)
- [Add Company Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/022__add_company_document_tag)
- [Remove Company Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/023__remove_company_document_tag)
- [List Company AI Tasks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/024__list_paginated_company_ai_tasks)
- [Get One Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/025__get_company_ai_task)
- [List A Company AI Task's Answers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/026__list_paginated_company_ai_task_runs)
- [Create A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/027__create_company_ai_task)
- [Update A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/028__update_company_ai_task)
- [Run A Company AI Task Again](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/029__run_company_ai_task)
- [Delete A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/030__delete_company_ai_task)
- [012\_notifications](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications)
- [List notifications (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/001__list_notifications_as_company)
- [Get Unread Notification Count (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/002__get_unread_notification_count_as_company)
- [Mark Notification As Read (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/003__mark_notification_as_read_as_company)
- [Mark All Notifications As Read (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/004__mark_all_notifications_as_read_as_company)
- [013\_forms](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms)
- [List company forms](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/001__list_company_forms)
- [Get company form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/002__get_company_form)
- [Create Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/003__create_form)
- [Update Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/004__update_form)
- [Delete Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/005__delete_form)
- [Create Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/006__create_form_version)
- [Update Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/007__update_form_version)
- [Publish Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/008__publish_form_version)
- [List form versions (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/009__list_paginated_form_versions)
- [Create B2C Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/010__create_b2c_form_submission_request)
- [Create B2B Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/011__create_b2b_form_submission_request)
- [List Received B2B Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/012__list_received_b2b_form_submission_requests)
- [List Received B2B Form Submission Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/013__list_paginated_received_b2b_form_submission_requests)
- [Reject B2B Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/014__reject_b2b_form_submission_request)
- [List Sent B2C Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/015__list_sent_b2c_form_submission_requests)
- [List Sent B2B Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/016__list_sent_b2b_form_submission_requests)
- [List form submissions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/017__list_form_submissions)
- [Get Form Submission](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/018__get_form_submission)
- [014\_webhooks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks)
- [List Company Webhooks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/001__list_company_webhooks)
- [Create Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/002__create_company_webhook)
- [Update Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/003__update_company_webhook)
- [Remove Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/004__remove_company_webhook)
- [015\_invitation\_links](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links)
- [List company invitation links](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/001__list_company_invitation_links)
- [List company invitation links (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/002__list_paginated_company_invitation_links)
- [Create company invitation link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/003__create_company_invitation_link)
- [Update Company Invitation Link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/004__update_company_invitation_link)
- [Delete Company Invitation Link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/005__delete_company_invitation_link)
- [016\_client\_secrets](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets)
- [List client secrets](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/001__list_client_secrets)
- [List Client Secrets (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/002__list_paginated_client_secrets)
- [Create client secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/003__create_client_secret)
- [Update Client Secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/004__update_client_secret)
- [Delete Client Secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/005__delete_client_secret)
- [017\_user\_imports](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports)
- [Import users from CSV](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/001__import_users_from_csv)
- [List user imports](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/002__list_user_imports)
- [Get user import](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/003__get_user_import)
- [018\_rcs\_and\_ai\_suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions)
- [Get company RCS information](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/001__get_company_rcs_information)
- [Upsert Company RCS Information](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/002__upsert_company_rcs_information)
- [Get AI Company Profile Suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/003__get_ai_company_profile_suggestions)
- [Get AI RCS Suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/004__get_ai_rcs_suggestions)
- [Get AI Form Suggestions From Url](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/005__get_ai_form_suggestions_from_url)
- [Get AI Form Suggestions From File](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/006__get_ai_form_suggestions_from_file)
- [019\_settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings)
- [Get Company Settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/001__get_current_company_settings)
- [Update company settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/002__update_company_settings)
- [Get company dashboard stats](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/003__get_company_dashboard_stats)
- [Get Company Pending Action Counts](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/004__get_company_pending_action_counts)
- [020\_assistant](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant)
- [Ask A Question About Using Tnid](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant/001__ask_docs_question_as_company)
- [021\_user\_events](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events)
- [Create user event token](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events/001__create_user_event_token)
- [003\_definitions](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions)
- [Enums](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/enums)
- [Input Types](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/inputtypes)
- [Mutations](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/mutations)
- [Queries](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/queries)
- [Types](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/types)
- [Overview](https://support.tsgglobal.com/docs/tnid/api-reference/static)

---

# Welcome

Source: https://support.tsgglobal.com/docs/tnid
Markdown: https://support.tsgglobal.com/docs/tnid/index.md
Last updated: 2024-10-16T15:15:59.818Z

TNID API documentation: authenticate as a user or a company, then manage identity, connections, subscriptions, 10DLC and webhooks over two GraphQL servers.

TNID makes creating your personal and business identity a breeze. Connect with people and companies you care about, and manage your preferences with them in one simple to use interface.

## Document Formatting 

We generally format our API documents in the following manner:

1. Overview: the purpose of the end-point
2. Authentication: how to authenticate to the end-point
3. Method: details regarding the API method and examples.

All TNID APIs are GraphQL based. Throughout the documentation, we use common HTTP features such as HTTP verbs and HTTP status codes. Requests must be made via HTTPS (calls over plain HTTP will fail).

Happy coding!

## Jump right in!


- [Company Authentication →](https://support.tsgglobal.com/docs/tnid/authentication/company-authentication.md): Learn how to log in as a Company and use features available to businesses.
- [User Authentication →](https://support.tsgglobal.com/docs/tnid/authentication/user-authentication.md): Log in as a User and use features available to individuals, including spam reporting.


## For developers and AI assistants

* [API Quick Reference](https://support.tsgglobal.com/docs/tnid/api-quick-reference.md): environments, authentication, every feature area, webhooks and pagination on one page.
* [AI Assistants & MCP](https://support.tsgglobal.com/docs/tnid/ai-assistants-and-mcp.md): connect Claude, Cursor, VS Code or Codex to these docs, or ask the docs a question from inside the API.
* [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md): every query, mutation, type and enum, generated from the API source.
* [Changelog](https://support.tsgglobal.com/docs/tnid/changelog.md): what changed in the API and in these docs.

---

# API Quick Reference

Source: https://support.tsgglobal.com/docs/tnid/api-quick-reference
Markdown: https://support.tsgglobal.com/docs/tnid/api-quick-reference.md

One-page summary of the TNID API: environments, authentication, the two GraphQL servers, every feature area, webhooks and pagination. Written for developers and AI coding assistants.

This page condenses the TNID API into a single read. Where this site has a guide page, it is linked. Where an operation exists in the API but has no guide here yet, the row points at the [**API Reference**](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md), which is regenerated from the API source and documents every query, mutation, type and enum with request, variables and response examples.

For AI assistants: this site is served as Markdown at `https://support.tsgglobal.com/docs/tnid/llms.txt` and `https://support.tsgglobal.com/docs/tnid/llms-full.txt`, any page can be fetched by appending `.md` to its URL, and a read-only MCP server is available at `https://support.tsgglobal.com/docs/tnid/mcp/`. See [AI Assistants & MCP](https://support.tsgglobal.com/docs/tnid/ai-assistants-and-mcp.md).

## What TNID is

TNID is an identity and consent platform for people and businesses. A **user** owns a personal profile (verified emails, phone numbers, addresses) and decides which companies may connect with them and message them on which channels. A **company** owns a business profile, connects with other companies (B2B) and with people (B2C), manages subscriptions and opt-outs, registers 10DLC brands and campaigns, and receives webhooks when any of that changes.

## Environments

| Environment           | API host                                                                            | Web app                           |
| --------------------- | ----------------------------------------------------------------------------------- | --------------------------------- |
| Staging               | `https://api.staging.v2.tnid.com`                                                   | `https://app.staging.v2.tnid.com` |
| Zero (pre-production) | `https://api.zero.v2.tnid.com`                                                      | `https://app.zero.v2.tnid.com`    |
| Production            | Provided by TSG when your integration is approved. Contact <support@tsgglobal.com>. | `https://app.tnid.com`            |

All requests must use HTTPS. Accounts are invite-only at present. Rate limits are applied per token; the current values are not published, contact <support@tsgglobal.com> for your account's limits.

## Two GraphQL servers, one auth service

| Path                         | Who calls it                                                      | Token                |
| ---------------------------- | ----------------------------------------------------------------- | -------------------- |
| `POST /user`                 | A person acting as themselves                                     | User access token    |
| `POST /company`              | Software acting for a company                                     | Company access token |
| `POST /auth/create-user-otp` | Start a user login (also accepted as `/auth/create_user_otp`)     | none                 |
| `POST /auth/token`           | Exchange an OTP (user) or client credentials (company) for tokens | none                 |
| `POST /auth/refresh-token`   | Exchange a refresh token for a new token pair                     | none                 |

The user and company schemas overlap in naming but are separate. A query that exists on `/company` (for example `b2bConnections`) is not available on `/user`, and vice versa.

## Authentication

| Flow                           | Steps                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| User, by phone or email        | 1. `POST /auth/create-user-otp` with `{"telephone_number": "..."}` or `{"email": "..."}`; add `first_name`, `last_name`, `email` to create a new user. Response includes `expires_at`, `next_otp_at`, `remaining_otp_attempts`. 2. `POST /auth/token` with `{"telephone_number"` or `"email", "otp_code"}`. Response: `access_token`, `refresh_token`. See [User Authentication](https://support.tsgglobal.com/docs/tnid/authentication/user-authentication.md). |
| Company, by client credentials | Create a company as a user with `provisionCompanyClientSecret: true`, or mint a secret later with `createCompanyClientSecret` or in the web app. Then `POST /auth/token` with `{"client_id", "client_secret"}`. See [Company Authentication](https://support.tsgglobal.com/docs/tnid/authentication/company-authentication.md).                                                                                                                                  |
| Refresh                        | `POST /auth/refresh-token` with `{"refresh_token"}`. Access tokens last 7 days, refresh tokens 30 days. See [Refresh Token](https://support.tsgglobal.com/docs/tnid/authentication/refresh-token.md).                                                                                                                                                                                                                                                            |

Send the token on every GraphQL call as `Authorization: Bearer <access_token>`. Client secrets are shown once at creation; store them in a secret manager and rotate by creating a new secret and deleting the old one (`clientSecrets`, `createClientSecret`, `deleteClientSecret` on `/company`).

## Conventions

* Requests are JSON over `POST`; GraphQL bodies are `{"query": "...", "variables": {...}}`.
* Custom scalars: `JSON` (free-form metadata), `NaiveDateTime` (`2026-01-15T09:00:00`), `Date`, `Time`. IDs are UUIDs.
* Most list queries take `limit` and return a plain array. Every list that can grow also has a `paginated…` twin (for example `paginatedB2bConnections`) that takes `limit` and `cursor` and returns `paginationInfo { limit nextCursor }` plus `records`; page until `nextCursor` is null. 10DLC lists use `page`/`pageSize` instead. See [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md).
* Profile fields carry visibility settings (`CompanyVisibilityType`, `UserVisibilityType`); what a caller can see depends on their relationship to the record.
* Connection and subscription requests follow one pattern: `create…Request` → the other side sees it in `received…Requests` → `respond…Request` with `ACCEPT` or `REJECT` → it appears in `…Connections`. The sender can `revoke…Request` while pending.
* Unauthenticated calls return HTTP 401 with `{"error": {"summary": "Authorization failed…"}}`. Validation failures return 400 with a `message`.

## Feature map

Coverage column: **Guide** means a walkthrough exists on this site; **Reference** means the operation is documented only in the API Reference so far.

### `/user` server

| Area                      | Key operations                                                                                                                                                                                                         | Coverage                                                                                                                                                                                                                               |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Profile                   | `currentUser`, `updateUser`                                                                                                                                                                                            | Guide: [Update User profile](https://support.tsgglobal.com/docs/tnid/user/update-user-profile.md)                                                                                                                                                                             |
| Contact details           | `createUserEmail`, `createUserEmailVerificationCode`, `verifyUserEmail`, `setPrimaryUserEmail`, `removeUserEmail`; same set for telephone numbers; `createUserAddress`, `updateUserAddress`, `removeUserAddress`       | Reference: [emails](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email.md), [addresses](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address.md), [phone numbers](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number.md) |
| People (C2C) connections  | `createC2cConnectionRequest`, `createC2cInvite`, `pendingC2cConnectionRequests`, `receivedC2cConnectionRequests`, `respondC2cConnectionRequest`, `revokeC2cConnectionRequest`, `c2cConnections`, `removeC2cConnection` | Guide: [Company Features](https://support.tsgglobal.com/docs/tnid/user/company-features.md) (C2C pages)                                                                                                                                                                       |
| Company (C2B) connections | `createC2bConnectionRequest`, `pendingC2bConnectionRequests`, `receivedB2cConnectionRequests`, `respondB2cConnectionRequest`, `revokeC2bConnectionRequest`, `removeC2bConnection`, `b2cConnections`                    | Guide: [Connections](https://support.tsgglobal.com/docs/tnid/user/connections.md)                                                                                                                                                                                             |
| Subscriptions             | `respondB2cSubscriptionRequest`, `upsertB2cSubscription`, `removeB2cSubscription`, `b2cSubscriptions`, `pendingB2cSubscriptionRequests`                                                                                | Guide: [Respond to B2C Subscription Request](https://support.tsgglobal.com/docs/tnid/user/company-features/respond-to-b2c-subscription-request.md), [Remove B2C Subscription](https://support.tsgglobal.com/docs/tnid/user/company-features/remove-b2c-subscription.md)                                              |
| Spam reporting            | `createSpamReport`, `spamReports`, `paginatedSpamReports`                                                                                                                                                              | Guide: [Spam Reporting Features](https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features.md)                                                                                                                                                                     |
| Groups                    | `groups`, `group`, `userGroups`, `userGroupMembers`, `createGroup`, `updateGroup`, `leaveGroup`, `updateGroupUserMemberRole`, `removeGroupUserMember`, invites and join requests                                       | Guide: [Group Features](https://support.tsgglobal.com/docs/tnid/group-features.md)                                                                                                                                                                                            |
| Company management        | `createCompany`, `createCompanyClientSecret`, `deleteCompany`, `switchableCompanies`, `setupInvitationFromToken`                                                                                                       | Guide: [Create company profile](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-profile.md); rest Reference: [company management](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management.md)                                           |
| Search                    | `users`, `user`, `userByUsername`, `globalSearch` (users, companies and groups in one list; 3-character minimum)                                                                                                       | Guide: [Search User (People)](https://support.tsgglobal.com/docs/tnid/user/search-user-people.md); `globalSearch` Reference: [users and search](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search.md)                                                            |
| Documents and AI tasks    | `prepareFileUpload`, `prepareDocumentUpload`, `confirmDocumentUpload`, folders, tags, trash, `askUserDocumentQuestion`, AI tasks (`createUserAiTask`, `runUserAiTask`, `aiTaskRuns`)                                   | Reference: [documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents.md)                                                                                                                                                     |
| Notifications             | `notifications`, `recentNotifications`, `unreadNotificationCount`, mark-as-read mutations, notification settings per group and per B2C connection                                                                      | Reference: [notifications](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications.md)                                                                                                                                             |
| Forms                     | `receivedFormSubmissionRequests`, `rejectFormSubmissionRequest`                                                                                                                                                        | Reference: [forms](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms.md)                                                                                                                                                             |
| Account                   | `currentUserSettings`, `updateUserSettings`, `dashboardStats`, `onboardingStatus`, `completeOnboardingStep`, `createSupportRequest`, `interests`, `pendingActionCounts`                                                | Reference: [account](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account.md)                                                                                                                                                         |
| Docs assistant            | `askDocsQuestion` answers a natural-language question from this documentation                                                                                                                                          | Reference: [assistant](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant.md)                                                                                                                                                     |

### `/company` server

| Area                               | Key operations                                                                                                                                                                                                                                                                                                                  | Coverage                                                                                                                                                                                                                                        |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Profile                            | `currentCompany`, `updateCompany`, `companies` (search), `createB2bInvite`                                                                                                                                                                                                                                                      | Guide: [Search Companies](https://support.tsgglobal.com/docs/tnid/company/search-companies.md), [Invite Company](https://support.tsgglobal.com/docs/tnid/company/invite-company.md), [Update Company Profile](https://support.tsgglobal.com/docs/tnid/company/update-company-profile.md)                                                                             |
| Contact details                    | Create, verify, update, remove company emails, telephone numbers and addresses                                                                                                                                                                                                                                                  | Reference: [emails](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email.md), [addresses](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address.md), [phone numbers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number.md) |
| 10DLC                              | API keys (`addTenDlcApiKey`, `authorizeTenDlcApiKey`), brands (`registerTenDlcBrandAsDraft`, `registerAndSubmitTenDlcBrand`, `updateAndSubmitTenDlcBrand`, `tenDlcBrands`), campaigns (`saveTenDlcCampaignAsDraft`, `registerAndSubmitTenDlcCampaign`, `registerTenDlcCampaignWhenReady`, `tenDlcCampaignWithTelephoneNumbers`) | Guide: [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md), [10DLC Campaigns](https://support.tsgglobal.com/docs/tnid/10dlc/campaigns.md)                                                                                                                                                                 |
| B2B connections                    | `createB2bConnectionRequest`, `b2bConnections`, `pendingB2bConnectionRequests`, `receivedB2bConnectionRequests`, `respondB2bConnectionRequest`, `revokeB2bConnectionRequest`, `removeB2bConnection`                                                                                                                             | Guide: [B2B Features](https://support.tsgglobal.com/docs/tnid/company/b2b-features.md)                                                                                                                                                                                                 |
| B2C connections                    | `createB2cConnectionRequest`, `createB2cInvite`, `b2cConnections`, `pendingB2cConnectionRequests`, `receivedC2bConnectionRequests`, `respondC2bConnectionRequest`, `revokeB2cConnectionRequest`, `removeB2cConnection`                                                                                                          | Guide: [B2C Features](https://support.tsgglobal.com/docs/tnid/company/b2c-features.md)                                                                                                                                                                                                 |
| Subscriptions and topics           | `createB2cSubscriptionRequest`, `b2cSubscriptions`, `pendingB2cSubscriptionRequests`, `revokeB2cSubscriptionRequest`, `removeB2cSubscription`; topics: `b2cSubscriptionTopics`, `createB2cSubscriptionTopic`, `updateB2cSubscriptionTopic`, `removeB2cSubscriptionTopic`                                                        | Guide: [B2C Features](https://support.tsgglobal.com/docs/tnid/company/b2c-features.md); topics Reference: [subscriptions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions.md)                                                                                       |
| Opt-out and opt-in                 | `optOutRequests`, `createOptOutRequest`, `generateSmsOptInQrCode`                                                                                                                                                                                                                                                               | Guide: [List Opt-Out Requests](https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-opt-out-requests.md), [Create Opt-out Request](https://support.tsgglobal.com/docs/tnid/company/b2c-features/create-opt-out-request.md), [Generate SMS Opt-In QR Code](https://support.tsgglobal.com/docs/tnid/company/b2c-features/generate-sms-opt-in-qr-code.md)  |
| People search                      | `users`, `user`, `userByUsername`, `globalSearch`                                                                                                                                                                                                                                                                               | Guide: [Search People](https://support.tsgglobal.com/docs/tnid/company/b2c-features/search-people.md)                                                                                                                                                                                  |
| Documents and AI tasks             | Same document, folder, tag, trash and AI-task operations as the user server, scoped to the company                                                                                                                                                                                                                              | Reference: [documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents.md)                                                                                                                                                           |
| Forms                              | `createForm`, `createFormVersion`, `publishFormVersion`, `companyForms`, `createB2cFormSubmissionRequest`, `createB2bFormSubmissionRequest`, `formSubmissions`, `formSubmission`                                                                                                                                                | Reference: [forms](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms.md)                                                                                                                                                                   |
| Webhooks                           | `companyWebhooks`, `createCompanyWebhook`, `updateCompanyWebhook`, `removeCompanyWebhook`                                                                                                                                                                                                                                       | Guide: [Webhooks](https://support.tsgglobal.com/docs/tnid/company/webhooks.md)                                                                                                                                                                                                         |
| Invitation links                   | `companyInvitationLinks`, `createCompanyInvitationLink`, `updateCompanyInvitationLink`, `deleteCompanyInvitationLink`                                                                                                                                                                                                           | Reference: [invitation links](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links.md)                                                                                                                                             |
| Client secrets                     | `clientSecrets`, `createClientSecret`, `updateClientSecret`, `deleteClientSecret`                                                                                                                                                                                                                                               | Reference: [client secrets](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets.md)                                                                                                                                                 |
| User imports                       | `importUsersFromCsv` (from a `prepareFileUpload` key; can create connections and request subscriptions in bulk), `userImports`, `userImport`                                                                                                                                                                                    | Reference: [user imports](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports.md)                                                                                                                                                     |
| Sentiment analysis                 | `reportExternalCommunication` (send message traffic for analysis; auto-subscribes or flags an unsubscribe and calls your webhook), `feedbackOnDetectedUnsubscribe`, `sentimentAnalysisResults`                                                                                                                                  | Reference: [sentiment analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis.md)                                                                                                                                 |
| RCS and AI suggestions             | `companyRcsInformation`, `upsertCompanyRcsInformation`, `getAiCompanyProfileSuggestions`, `getAiRcsSuggestions`, `getAiFormSuggestionsFromUrl`, `getAiFormSuggestionsFromFile`                                                                                                                                                  | Reference: [RCS and AI suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions.md)                                                                                                                                 |
| Notifications, settings, assistant | `notifications`, `unreadNotificationCount`, `companySettings`, `updateCompanySettings`, `companyDashboardStats`, `pendingActionCounts`, `askDocsQuestion`                                                                                                                                                                       | Reference: [notifications](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications.md), [settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings.md)                                                                         |
| Reference data                     | `organizationTypes`, `verticalTypes`, `specialties`                                                                                                                                                                                                                                                                             | Guide: [List Organization Types](https://support.tsgglobal.com/docs/tnid/company/list-organization-types.md), [List Vertical Types](https://support.tsgglobal.com/docs/tnid/company/list-vertical-types.md)                                                                                                                   |

## Webhooks

Companies register webhooks with `createCompanyWebhook` on `/company`: a target `url`, an optional `bearerToken` TNID sends back in the `Authorization` header, optional `customHeaders`, and one boolean per event type:

| Flag                                              | Fires when                                                             |
| ------------------------------------------------- | ---------------------------------------------------------------------- |
| `receiveSubscriptionEvents`                       | A person subscribes, changes or removes a subscription to your company |
| `receiveOptOutEvents`                             | An opt-out is recorded                                                 |
| `b2bConnectionRequestReceivedWebhook`             | Another company asks to connect                                        |
| `b2bConnectionRequestResponseWebhook`             | A company responds to your request                                     |
| `b2cConnectionRequestResponseWebhook`             | A person responds to your connection request                           |
| `c2bConnectionRequestReceivedWebhook`             | A person asks to connect with you                                      |
| `b2cSubscriptionRequestResponseWebhook`           | A person responds to your subscription request                         |
| `companySocialNetworkStatusChangeWebhook`         | A social-network link on your profile changes verification status      |
| `b2bFormInstanceSubmissionRequestReceivedWebhook` | Another company asks you to fill in a form                             |

Sentiment analysis also posts to your webhook when it detects an unsubscribe: `{"external_communication_id": "...", "timestamp": "...", "action": "unsubscribe"}`. Confirm or deny it with `feedbackOnDetectedUnsubscribe`. Full guide: [Webhooks](https://support.tsgglobal.com/docs/tnid/company/webhooks.md).

## Minimal examples

Request a login code, then a token (staging):

```bash
curl -X POST https://api.staging.v2.tnid.com/auth/create-user-otp \
  -H "Content-Type: application/json" \
  -d '{"telephone_number":"15555550100"}'

curl -X POST https://api.staging.v2.tnid.com/auth/token \
  -H "Content-Type: application/json" \
  -d '{"telephone_number":"15555550100","otp_code":"123456"}'
```

Authenticate as a company and search for companies:

```bash
TOKEN=$(curl -s -X POST https://api.staging.v2.tnid.com/auth/token \
  -H "Content-Type: application/json" \
  -d '{"client_id":"<client_id>","client_secret":"<client_secret>"}' | jq -r .access_token)

curl -X POST https://api.staging.v2.tnid.com/company \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"query":"query($name:String,$limit:Int){ companies(name:$name, limit:$limit){ id legalName brandName verified } }","variables":{"name":"Acme","limit":5}}'
```

Page through B2B connections:

```bash
curl -X POST https://api.staging.v2.tnid.com/company \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"query":"query($limit:Int,$cursor:String){ paginatedB2bConnections(limit:$limit, cursor:$cursor){ paginationInfo { limit nextCursor } records { id type connectedCompany { id legalName } } } }","variables":{"limit":50}}'
```

Pass `paginationInfo.nextCursor` back as `cursor` until it is null.

## Support and related links

* Support: <support@tsgglobal.com>
* [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md), regenerated from the API source (queries, mutations, types, enums and input types under "Definitions")
* Guides: [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md), [Webhooks](https://support.tsgglobal.com/docs/tnid/company/webhooks.md), [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md), [10DLC Campaigns](https://support.tsgglobal.com/docs/tnid/10dlc/campaigns.md), [Changelog](https://support.tsgglobal.com/docs/tnid/changelog.md)
* Postman setup and schema introspection: [Accessing via Postman](https://support.tsgglobal.com/docs/tnid/authentication/accessing-via-postman-graphql-schema-examples.md)
* Machine-readable copies of this site: `https://support.tsgglobal.com/docs/tnid/llms.txt`, `https://support.tsgglobal.com/docs/tnid/llms-full.txt`, `<page>.md`, MCP at `https://support.tsgglobal.com/docs/tnid/mcp/`

---

# AI Assistants & MCP

Source: https://support.tsgglobal.com/docs/tnid/ai-assistants-and-mcp
Markdown: https://support.tsgglobal.com/docs/tnid/ai-assistants-and-mcp.md

Connect Claude, Cursor, VS Code, Codex or any MCP client to the TNID documentation, and let your app ask the docs a question from inside the API.

TNID's documentation is available to AI coding assistants through the Model Context Protocol (MCP), an open standard that lets an assistant call outside tools. Connect the server below and your assistant can search these docs and read any page instead of guessing from stale training data.

## The documentation MCP server

| Setting        | Value                                             |
| -------------- | ------------------------------------------------- |
| Server URL     | `https://support.tsgglobal.com/docs/tnid/mcp/`              |
| Transport      | Streamable HTTP                                   |
| Authentication | None. The server only reads public documentation. |
| Cost           | Free                                              |

The server covers both the guides and the API Reference section of this site. It exposes two read-only tools:

| Tool                  | What it does                                                                                                               |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `searchDocumentation` | Full-text search across every page. Returns matching titles, summaries and links.                                       |
| `getPage`             | Fetches the complete Markdown of one page by its URL, for example `https://support.tsgglobal.com/docs/tnid/company/search-companies.md`.        |



> **Info**


This server covers documentation only. It cannot log in, create connections, send subscription requests or call the TNID API. Your tokens and client secrets never pass through it. To act on the platform, your code still calls the `/user` and `/company` GraphQL servers described in this documentation.



## Connect your assistant





### Claude Code


Run once in your terminal:

```bash
claude mcp add --transport http tnid-docs https://support.tsgglobal.com/docs/tnid/mcp/
```

Then ask, for example, "Using the TNID docs, write a client that authenticates as a company and lists pending B2B connection requests."





### Claude.ai / Desktop


Open **Settings → Connectors → Add custom connector**, name it "TNID docs", and paste `https://support.tsgglobal.com/docs/tnid/mcp/` as the URL. No authentication is needed. Enable it in a chat from the tools menu.





### Cursor


Add to `.cursor/mcp.json` in your project (or `~/.cursor/mcp.json` for all projects):

```json
{
  "mcpServers": {
    "tnid-docs": {
      "url": "https://support.tsgglobal.com/docs/tnid/mcp/"
    }
  }
}
```






### VS Code


Add to `.vscode/mcp.json` in your workspace, then start the server from the MCP view:

```json
{
  "servers": {
    "tnid-docs": {
      "type": "http",
      "url": "https://support.tsgglobal.com/docs/tnid/mcp/"
    }
  }
}
```






### Codex



```bash
codex mcp add tnid-docs --url https://support.tsgglobal.com/docs/tnid/mcp/
```






### Other clients


Any MCP client that supports streamable HTTP can connect. Point it at `https://support.tsgglobal.com/docs/tnid/mcp/` with no bearer token. `stdio` and SSE transports are not offered.





## Other machine-readable formats

| Resource                          | URL                                                                                                        | Use it for                                                                          |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| Index of all pages with summaries | `https://support.tsgglobal.com/docs/tnid/llms.txt`                                                                           | Give an assistant a map of the docs                                                 |
| Every page in one file            | `https://support.tsgglobal.com/docs/tnid/llms-full.txt`                                                                      | Load the whole guide into context                                                   |
| Any single page                   | Append `.md` to its URL, e.g. `https://support.tsgglobal.com/docs/tnid/getting-started-guide.md`                             | Fetch one page without HTML                                                         |
| API Reference                     | [docs.tnid.com/api-reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md) (every page also available with `.md`) | Every query, mutation, type and enum, generated from the API source                 |
| One-page API summary              | [API Quick Reference](https://support.tsgglobal.com/docs/tnid/api-quick-reference.md)                                                             | Environments, authentication, feature map, webhooks and pagination in a single read |

## Ask the docs from inside the API

Both GraphQL servers expose a mutation that answers a natural-language question from this documentation and names the pages it drew on. It is useful for in-app help and for agents that already hold a TNID token:

```graphql
mutation ($question: String!) {
  askDocsQuestion(question: $question) {
    answer
  }
}
```

A user token is answered from the user half of the reference, a company token from the company half. See the API Reference: [user assistant](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant.md), [company assistant](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant.md).

## What to expect

* Answers are grounded in the published documentation. If a page is wrong, the assistant will be wrong too. Report documentation issues to support@tsgglobal.com.
* The assistant still needs your credentials to run code against the API. Keep client secrets and tokens in environment variables, never in prompts or chat history.
* Prompts that work well: "Search the TNID docs for how B2C subscription requests are accepted and write the webhook handler", "Which server, /user or /company, exposes createSpamReport?", "Compare the plain and paginated variants of b2bConnections."

Questions or ideas for the MCP server? Email <support@tsgglobal.com>.

---

# Pagination

Source: https://support.tsgglobal.com/docs/tnid/pagination
Markdown: https://support.tsgglobal.com/docs/tnid/pagination.md

How TNID list queries page: plain lists with limit, cursor-paginated twins with paginationInfo and nextCursor, and page-number lists for 10DLC.

TNID has three list shapes. Pick by name.

## Plain lists: `limit`

Queries such as `b2bConnections`, `spamReports`, `companies` and `users` take a `limit` and return a plain array. They are fine for small result sets and for the examples in this guide. There is no way to fetch the next batch.

## Cursor lists: `paginated…` queries

Every list that can grow has a cursor-paginated twin whose name starts with `paginated`, for example `paginatedB2bConnections`, `paginatedSpamReports`, `paginatedReceivedC2cConnectionRequests`, `paginatedUserGroups`, `paginatedClientSecrets` and `paginatedSentimentAnalysisResults`. Documents, forms, AI tasks and group members are cursor-paginated by default.

They take `limit` and `cursor` and return `paginationInfo` plus `records`:

```graphql
query ($limit: Int, $cursor: String) {
  paginatedB2bConnections(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      connectedCompany {
        id
        legalName
      }
    }
  }
}
```

First call with `{"limit": 50}`. Each response carries `paginationInfo.nextCursor`; pass it back as `cursor` to get the next page. When `nextCursor` is `null` you have everything. The default `limit` is 20.

```python
cursor = None
while True:
    page = client.execute(query, {"limit": 50, "cursor": cursor})["paginatedB2bConnections"]
    for record in page["records"]:
        handle(record)
    cursor = page["paginationInfo"]["nextCursor"]
    if cursor is None:
        break
```

Cursors are opaque strings. Do not store them across sessions or build them by hand; restart from the first page instead.

## Page-number lists: 10DLC

`tenDlcBrands` and `tenDlcCampaigns` use `page` and `pageSize` and return `page`, `totalRecords` and `records`. Increment `page` until `page * pageSize >= totalRecords`. See [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md).

## Finding the paginated variant

The [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md) lists each plain query next to its paginated twin, and the [Queries](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/queries.md) definition page shows every argument.

---

# Getting Started Guide

Source: https://support.tsgglobal.com/docs/tnid/getting-started-guide
Markdown: https://support.tsgglobal.com/docs/tnid/getting-started-guide.md
Last updated: 2025-09-12T18:16:47.834Z

The five steps from nothing to a working TNID integration: user login, company creation, company credentials, first calls, and where to point requests.

## What you will use

* **Auth endpoints:** `/auth/create-user-otp`, `/auth/token`, `/auth/refresh-token`
* **GraphQL servers:** `/user` (for people) and `/company` (for businesses)
* **Hosts:** `https://api.staging.v2.tnid.com` for staging, `https://api.zero.v2.tnid.com` for the zero (pre-production) environment. See [API Quick Reference](https://support.tsgglobal.com/docs/tnid/api-quick-reference.md) for the full picture.

You can try everything with Postman first: see [Accessing via Postman](https://support.tsgglobal.com/docs/tnid/authentication/accessing-via-postman-graphql-schema-examples.md).

***

## 1) Create (or claim) your individual profile

Think of this as getting your user login.

**Step A: request a one-time code (OTP).** Send your phone number or email (and, if you are creating a new user, first name, last name and email) to `/auth/create-user-otp`. You receive an OTP.

**Step B: exchange the OTP for a Bearer token.** Send your `telephone_number` (or `email`) and `otp_code` to `/auth/token`. You get an `access_token` that lets you call the `/user` GraphQL API, plus a `refresh_token`. Save both securely.

Details and code: [User Authentication](https://support.tsgglobal.com/docs/tnid/authentication/user-authentication.md).

**Optional: update your user profile.** With your user token, call the `updateUser` mutation on `/user` to set `firstName`, `lastName`, `username` or `aboutMe`. See [Update User profile](https://support.tsgglobal.com/docs/tnid/user/update-user-profile.md).

***

## 2) Create your company (as that user)

Once you have a user token, you can create a company and mint credentials for it.

**Step A: create the company profile.** Call the `createCompany` mutation on `/user` with the basics (`legalName`, `profileName`, optional `brandName`, `taxId`, and so on). If you include `provisionCompanyClientSecret: true`, TNID also returns a `clientId` and `clientSecret` for company-level API calls. See [Create company profile](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-profile.md).

**Step B (alternative): generate company credentials later.** Call [Create Company Client Secret](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-client-secret.md) or use Client Secrets in the TNID app, then exchange `client_id` and `client_secret` at `/auth/token` for a company Bearer token. Use that token with `/company`. See [Company Authentication](https://support.tsgglobal.com/docs/tnid/authentication/company-authentication.md).

**Optional: update your company profile.** Use the `updateCompany` mutation with your company token. See [Update Company Profile](https://support.tsgglobal.com/docs/tnid/company/update-company-profile.md).

***

## 3) Common first calls after setup

**Find companies** (to connect with, or to avoid duplicates): query `companies` by name, tax ID, email, telephone number or webpage on `/company`. See [Search Companies](https://support.tsgglobal.com/docs/tnid/company/search-companies.md).

**Invite another company or request a B2B connection:**

* Invite by details (legal name plus a representative's email) with `createB2bInvite`. See [Invite Company](https://support.tsgglobal.com/docs/tnid/company/invite-company.md).
* Or send a connection request by `invitedCompanyId` with `createB2bConnectionRequest`. See [Send B2B Connection Request](https://support.tsgglobal.com/docs/tnid/company/b2b-features/send-b2b-connection-request.md).

**Search for people and see your consumer connections:** use `users` and `b2cConnections` on `/company`. See [Search People](https://support.tsgglobal.com/docs/tnid/company/b2c-features/search-people.md) and [B2C Features](https://support.tsgglobal.com/docs/tnid/company/b2c-features.md).

**User-side spam reporting:** as a user, call `createSpamReport` and `spamReports` on `/user` so your customers can report unwanted communications. See [Spam Reporting Features](https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features.md).

**Get notified instead of polling:** register a company webhook so TNID calls you when connection requests, subscriptions and opt-outs change. See Webhooks.

**Register for 10DLC:** brands and campaigns are submitted through TNID. See [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md).

***

## 4) Where to point your requests

| Purpose                                       | Path                         |
| --------------------------------------------- | ---------------------------- |
| People GraphQL                                | `POST /user`                 |
| Companies GraphQL                             | `POST /company`              |
| Request an OTP                                | `POST /auth/create-user-otp` |
| Exchange OTP or client credentials for tokens | `POST /auth/token`           |
| Refresh tokens                                | `POST /auth/refresh-token`   |

Prefix each path with the environment host, for example `https://api.staging.v2.tnid.com/company`.

***

## 5) Quick mental model

1. **Become a user** (OTP, token, `/user`).
2. **Create your company** as that user and **mint company credentials**.
3. **Act as the company** (company token, `/company`) for B2B and B2C connections, subscriptions, profile updates, invites, webhooks and 10DLC.

Every query and mutation, including the ones this guide does not cover, is documented in the [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md).

---

# Company Authentication

Source: https://support.tsgglobal.com/docs/tnid/authentication/company-authentication
Markdown: https://support.tsgglobal.com/docs/tnid/authentication/company-authentication.md
Last updated: 2024-10-11T17:23:04.944Z

Create a company client secret in the TNID app, then exchange client\_id and client\_secret at /auth/token for a company access token.

Learn how to get your Company TNID client key and secret to authenticate into the GraphQL API.

<figure><img src="https://support.tsgglobal.com/static/docs-assets/77fc75137a4ebb26b9e3.png" alt="Screenshot of Client Secrets section in GUI"><figcaption><p>Screenshot of Client Secrets section in GUI</p></figcaption></figure>

Company users of TNID are able to generate Client Secrets so that they can access the API. To create a Company, first register as an Individual, and then create a Company associated with your Individual profile. Then, assume the role of your Company and click "New Client Secret" in order to create your credentials. You can also create the secret through the API: pass `provisionCompanyClientSecret: true` when [creating the company](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-profile.md), or call [Create Company Client Secret](https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-client-secret.md) later.



> **Danger**


You are only allowed to view your Client Secret value at creation, so please ensure you save it someplace safe (e.g. 1Password or your environment variables). You will not be able to see it once you close the pop-up (however, you can always create a new Client Secret).





> **Warning**


Client secrets do not expire. Access tokens are valid for 7 days and refresh tokens for 30 days (see [Refresh Token](https://support.tsgglobal.com/docs/tnid/authentication/refresh-token.md)). If you believe a secret has been compromised, create a new one and delete the old one.



### Generate Your Bearer Token

The token endpoint is available in each environment:

| Environment           | Token endpoint                               |
| --------------------- | -------------------------------------------- |
| Staging               | `https://api.staging.v2.tnid.com/auth/token` |
| Zero (pre-production) | `https://api.zero.v2.tnid.com/auth/token`    |

Simply pass the client\_id and client\_secret data to generate your Bearer token for future API requests:

```json
{
   "client_id": "CLIENT_ID_VALUE",
   "client_secret": "CLIENT_SECRET_VALUE"
}
```

The response contains an `access_token` and a `refresh_token`. Use the `access_token` as `Authorization: Bearer <access_token>` to interact with the GraphQL API at `/company`.

### Example Company authentication





### Python



```python
import requests

def get_bearer_token(client_id, client_secret):
    url = "https://api.staging.v2.tnid.com/auth/token"

    headers = {
        "Content-Type": "application/x-www-form-urlencoded"
    }

    data = {
        "client_id": client_id,
        "client_secret": client_secret
    }

    response = requests.post(url, headers=headers, data=data)

    if response.status_code == 200:
        token_data = response.json()
        return token_data.get("access_token")
    else:
        raise Exception(f"Failed to retrieve token: {response.status_code} {response.text}")

# Example usage:
client_id = "your_client_id"          # Replace with your actual client ID
client_secret = "your_client_secret"  # Replace with your actual client secret

token = get_bearer_token(client_id, client_secret)
print("Bearer Token:", token)
```






### curl



```bash
curl -X POST https://api.staging.v2.tnid.com/auth/token \
  -H "Content-Type: application/json" \
  -d '{"client_id":"<client_id>","client_secret":"<client_secret>"}'
```

---

# User Authentication

Source: https://support.tsgglobal.com/docs/tnid/authentication/user-authentication
Markdown: https://support.tsgglobal.com/docs/tnid/authentication/user-authentication.md
Last updated: 2025-09-12T18:03:52.900Z

Request a one-time code by phone number or email, then exchange it at /auth/token for a user access token.

Learn how to get a TNID user access token to authenticate into the `/user` GraphQL API.

Users of TNID (as opposed to Companies) authenticate with a one-time code (OTP) delivered to their telephone number or email address.



> **Warning**


Access tokens are valid for 7 days and refresh tokens for 30 days (see [Refresh Token](https://support.tsgglobal.com/docs/tnid/authentication/refresh-token.md)). There are no passwords to rotate; if a token is compromised, stop using it and request a new OTP.



### Generate Your Access Token

The OTP endpoint is available in each environment:

| Environment           | OTP endpoint                                           |
| --------------------- | ------------------------------------------------------ |
| Staging               | `https://api.staging.v2.tnid.com/auth/create-user-otp` |
| Zero (pre-production) | `https://api.zero.v2.tnid.com/auth/create-user-otp`    |

The path is also accepted spelled `/auth/create_user_otp`.

**Step 1.** Make a request to `/auth/create-user-otp` with the `telephone_number` or `email` of an existing user. To create a new user, include the optional profile fields:

```json
{
   "telephone_number": "13024343433",
   "first_name": "John",
   "last_name": "Doe",
   "email": "email@address.com"
}
```

The response tells you when the code expires and how many attempts remain:

```json
{
  "expires_at": "2026-01-15T09:00:01.000000Z",
  "next_otp_at": "2026-01-15T09:00:00",
  "otp_status": "OTP sent",
  "remaining_otp_attempts": 5
}
```

**Step 2.** Make a request to `/auth/token` with the same `telephone_number` (or `email`) and the received `otp_code`:

```json
{
   "telephone_number": "13024343433",
   "otp_code": "698125"
}
```

The response contains an `access_token` and a `refresh_token`. Use the `access_token` as `Authorization: Bearer <access_token>` to interact with the GraphQL API at `/user`.

## Example Code





### Python



```python
import requests

BASE = "https://api.staging.v2.tnid.com"
HEADERS = {"Content-Type": "application/x-www-form-urlencoded"}

# Step one: request an OTP for an existing user. The user receives the code by SMS (or email if you pass "email").
def request_otp(user_phone_number):
    response = requests.post(f"{BASE}/auth/create-user-otp", headers=HEADERS,
                             data={"telephone_number": user_phone_number})
    if response.status_code != 200:
        raise Exception(f"Failed to request OTP: {response.status_code} {response.text}")
    print(f"OTP requested: {response.text}")

# Step two: exchange the OTP for tokens.
def get_bearer_token(user_phone_number, otp):
    response = requests.post(f"{BASE}/auth/token", headers=HEADERS,
                             data={"telephone_number": user_phone_number, "otp_code": otp})
    if response.status_code != 200:
        raise Exception(f"Failed to retrieve token: {response.status_code} {response.text}")
    return response.json().get("access_token")

# Creating a new user: same endpoint, with profile fields. Then request the OTP and token as above.
def create_new_user(phone_number, first_name, last_name, email):
    response = requests.post(f"{BASE}/auth/create-user-otp", headers=HEADERS,
                             data={"telephone_number": phone_number, "first_name": first_name,
                                   "last_name": last_name, "email": email})
    if response.status_code != 200:
        raise Exception(f"Failed to create new user: {response.status_code} {response.text}")
    print(f"User created: {response.text}")

phone = "14075554530"
request_otp(phone)
otp = input("Enter the OTP you received: ")
print("Bearer Token:", get_bearer_token(phone, otp))
```






### curl



```bash
curl -X POST https://api.staging.v2.tnid.com/auth/create-user-otp \
  -H "Content-Type: application/json" \
  -d '{"telephone_number":"14075554530"}'

curl -X POST https://api.staging.v2.tnid.com/auth/token \
  -H "Content-Type: application/json" \
  -d '{"telephone_number":"14075554530","otp_code":"698125"}'
```

---

# Refresh Token

Source: https://support.tsgglobal.com/docs/tnid/authentication/refresh-token
Markdown: https://support.tsgglobal.com/docs/tnid/authentication/refresh-token.md
Last updated: 2025-09-12T18:02:12.697Z

Exchange a refresh token at /auth/refresh-token for a new access token (7 days) and refresh token (30 days).

Access tokens have a limited lifetime. To keep calling the API without asking the user (or re-sending client credentials), exchange the refresh token for a new pair.

* Make a `POST` request to `/auth/refresh-token` with the `refresh_token` you received from `/auth/token`.
* The response contains a new `access_token` (7 days validity) and a new `refresh_token` (30 days validity).
* An access token can be used to access restricted resources. A refresh token can only be used to refresh tokens.
* The same endpoint works for user tokens and company tokens.

Request:

```json
{
   "refresh_token": "eyJ..."
}
```

Response:

```json
{
   "access_token": "eyJ...",
   "refresh_token": "eyJ..."
}
```

```bash
curl -X POST https://api.staging.v2.tnid.com/auth/refresh-token \
  -H "Content-Type: application/json" \
  -d '{"refresh_token":"<refresh_token>"}'
```

---

# Accessing via Postman / GraphQL Schema examples

Source: https://support.tsgglobal.com/docs/tnid/authentication/accessing-via-postman-graphql-schema-examples
Markdown: https://support.tsgglobal.com/docs/tnid/authentication/accessing-via-postman-graphql-schema-examples.md
Last updated: 2024-11-01T19:14:04.520Z

Browse the live GraphQL schema in Postman with your Bearer token, or fetch it programmatically with the gql Python client.

## Postman

Once you have generated your Bearer token, you can access the GraphQL schema easily using Postman. Simply take your generated token, and create a new request using the GraphQL feature:

<figure><img src="https://support.tsgglobal.com/static/docs-assets/a473c01cb059e7510a58.png" alt="Select GraphQL from the dropdown."><figcaption><p>Select GraphQL from the dropdown.</p></figcaption></figure>

<figure><img src="https://support.tsgglobal.com/static/docs-assets/f8e28789602bea85aa72.png" alt="Authenticate using your generated Bearer token."><figcaption><p>Authenticate using your generated Bearer token.</p></figcaption></figure>

Load the GraphQL schema by entering the URL (`https://api.staging.v2.tnid.com/company` for the company endpoints, or `/user` for the user endpoints), and then press "Use GraphQL Introspection" on the Schema tab.

<figure><img src="https://support.tsgglobal.com/static/docs-assets/fe7b7802834c3e31b69d.png" alt="Press &quot;Use GraphQL Introspection&quot; to load the schema."><figcaption><p>Press "Use GraphQL Introspection" to load the schema.</p></figcaption></figure>

<figure><img src="https://support.tsgglobal.com/static/docs-assets/2c6c56ce64a101bb41a6.png" alt="Postman GraphQL query builder showing the available company queries after schema introspection."><figcaption></figcaption></figure>

The schema should now be accessible via Postman. A rendered version of the same schema, with request and response examples for every operation, is published in the [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md).

## Example Code to access GraphQL Schema





### Python



```python
import pprint
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def get_full_company_endpoint_schema(bearer_token):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    # fetch_schema_from_transport=True makes gql run the introspection query for you
    client = Client(transport=transport, fetch_schema_from_transport=True)

    # Any valid query triggers the schema fetch
    query = gql("query ($name: String, $limit: Int) { companies(name: $name, limit: $limit) { id legalName } }")

    try:
        response = client.execute(query, {"name": "schema query", "limit": 1})
        print(f"Response OK: {response}")
        print("Schema: ")
        pprint.pp(client.introspection)
        return response
    except Exception as e:
        print(f"Exception: {e}")


def get_full_user_endpoint_schema(bearer_token):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/user",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql("query ($limit: Int) { spamReports(limit: $limit) { id } }")

    try:
        response = client.execute(query, {"limit": 1})
        print(f"Response OK: {response}")
        print("Schema: ")
        pprint.pp(client.introspection)
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_company_token"
get_full_company_endpoint_schema(token)

# OR
# token = "your_user_token"
# get_full_user_endpoint_schema(token)
```

---

# Search Companies

Source: https://support.tsgglobal.com/docs/tnid/company/search-companies
Markdown: https://support.tsgglobal.com/docs/tnid/company/search-companies.md
Last updated: 2025-09-12T18:13:59.547Z

Search for one or more companies based on name, tax ID, website, or other fields.

Search for one or more companies based on name, tax ID, website, or other fields.



> **Info**


The company GraphQL API is accessible at /company



This endpoint will return a list of companies matching the query and in case queried props are visible to the querier, it will be possible to query by:

* ID
* Legal name (with name field)
* Brand name (with name field)
* Profile name (with name field)
* TaxID
* Telephone number
* Email
* Webpage (social media or other)

Each result will return a list of companies. It is possible to pass a combination of queryable props.

```graphql
query (
    $id: ID
    $name: String
    $taxId: String
    $email: String
    $telephoneNumber: String
    $webpage: String
    $limit: Int
    $metadata: JSON
  ) {
    companies (
      id: $id
      name: $name
      taxId: $taxId
      email: $email
      telephoneNumber: $telephoneNumber
      webpage: $webpage
      limit: $limit
      metadata: $metadata
    ) {
      id
      legalName
      brandName
      profileName
      taxId
      yearFounded
      aboutUs
      metadata
      verified
      logoUrl
      verticalType {
        id
        displayName
        description
      }
      organizationType {
        id
        displayName
      }
      addresses {
        city
        country
        state
        street
        types
        zipCode
      }
      emails {
        email
      }
      telephoneNumbers {
        number
      }
      socialNetworks {
        type
        url
      }
      webpages {
        type
        url
      }
      specialties {
        description
        title
      }
      subscriptionTopics {
        id
        name
      }
      subscriptionSettings {
        enable_email
        enable_sms
        enable_voice
      }
    }
  }
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def search_companies(bearer_token, query_name=None, tax_id=None, email=None, phone_number=None, webpage=None, limit_count=10):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        query (
            $name: String
            $taxId: String
            $email: String
            $telephoneNumber: String
            $webpage: String
            $limit: Int
        ) {
            companies (
                name: $name
                taxId: $taxId
                email: $email
                telephoneNumber: $telephoneNumber
                webpage: $webpage
                limit: $limit
            ) {
                id
                legalName
                brandName
                profileName
                taxId
            }
        }
        """
    )

    params = {"name": query_name, "taxId": tax_id, "email": email, "telephoneNumber": phone_number,
              "webpage": webpage, "limit": limit_count}

    try:
        response = client.execute(query, params)
        print(f"Response OK when searching companies: {response}")
        return response
    except Exception as e:
        print(f"Exception when searching companies: {e}")


# Example usage:
token = "your_company_token"
search_companies(token, "ACME")
```

---

# Invite Company

Source: https://support.tsgglobal.com/docs/tnid/company/invite-company
Markdown: https://support.tsgglobal.com/docs/tnid/company/invite-company.md
Last updated: 2024-11-01T19:06:11.827Z

Invite a company to join the TNID ecosystem with createB2bInvite: pre-fill its profile, name at least one representative, and propose a connection type.

Invite a company to join the TNID ecosystem.



> **Info**


The company GraphQL API is accessible at /company



* Include as much data as possible in the invitation so the invitee only has to verify and confirm (they can still change it).
* At least one representative must be included so that, after they register, they can take over management of the newly created company.
* The connection request must be confirmed/accepted by the newly created company's legal representative.
* Most properties are flagged private so the newly created company's data is not exposed.

```graphql
mutation (
  $company: CompanyInput!
  $representatives: [InviteUserInput!]!
  $connectionType: B2bConnectionType!
) {
  createB2bInvite (
    company: $company
    representatives: $representatives
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id
      legalName
      brandName
      taxId
    }
  }
}
```

Example variables:

```json
{
  "company": {
    "legalName": "Acme Metals",
    "brandName": "Acme",
    "aboutUs": "Sheet metal fabrication",
    "yearFounded": 1998
  },
  "representatives": [
    {
      "email": "jane.smith@acme-metals.example",
      "firstName": "Jane",
      "lastName": "Smith",
      "telephoneNumber": "15555550100",
      "sendInviteEmail": true
    }
  ],
  "connectionType": "PARTNER"
}
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def invite_company(bearer_token, company_to_invite, company_representatives, connection_type):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        mutation (
            $company: CompanyInput!
            $representatives: [InviteUserInput!]!
            $connectionType: B2bConnectionType!
        ) {
            createB2bInvite (
                company: $company
                representatives: $representatives
                connectionType: $connectionType
            ) {
                id
                status
                type
                insertedAt
                respondedAt
                updatedAt
                company { id }
                user { id }
                invitedCompany { id legalName brandName taxId }
            }
        }
        """
    )

    params = {"company": company_to_invite, "representatives": company_representatives, "connectionType": connection_type}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
company_to_invite = {"legalName": "Acme Metals"}
company_representatives = [{"email": "jane.smith@acme-metals.example", "firstName": "Jane", "lastName": "Smith", "sendInviteEmail": True}]

token = "your_company_token"
invite_company(token, company_to_invite, company_representatives, "PARTNER")
```

---

# List Organization Types

Source: https://support.tsgglobal.com/docs/tnid/company/list-organization-types
Markdown: https://support.tsgglobal.com/docs/tnid/company/list-organization-types.md
Last updated: 2024-11-01T19:07:23.118Z

Used to list the different Organization types a Company can have.

Used to list the different Organization types a Company can have.



> **Info**


The company GraphQL API is accessible at /company



```graphql
query {
  organizationTypes {
    id
    displayName
  }
}
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def list_organization_types(bearer_token):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql("query { organizationTypes { id displayName } }")

    try:
        response = client.execute(query)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_company_token"
list_organization_types(token)
```

---

# List Vertical Types

Source: https://support.tsgglobal.com/docs/tnid/company/list-vertical-types
Markdown: https://support.tsgglobal.com/docs/tnid/company/list-vertical-types.md
Last updated: 2024-11-01T19:08:38.895Z

Used to list the different vertical types that a Company can have.

Used to list the different vertical types that a Company can have.



> **Info**


The company GraphQL API is accessible at /company



```graphql
query {
  verticalTypes {
    id
    displayName
    description
  }
}
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def list_vertical_types(bearer_token):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql("query { verticalTypes { id displayName description } }")

    try:
        response = client.execute(query)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_company_token"
list_vertical_types(token)
```

---

# Update Company Profile

Source: https://support.tsgglobal.com/docs/tnid/company/update-company-profile
Markdown: https://support.tsgglobal.com/docs/tnid/company/update-company-profile.md
Last updated: 2025-09-12T18:13:59.595Z

Use this endpoint to update your company profile fields, subscription topics and subscription settings (updateCompany on /company).

Use this endpoint to update your company profile fields.



> **Info**


The company GraphQL API is accessible at /company



```graphql
 mutation (
    $legalName: String
    $brandName: String
    $profileName: String
    $taxId: String
    $yearFounded: Int
    $aboutUs: String
    $metadata: JSON
    $subscriptionTopics: [B2cSubscriptionTopicInput!]
    $subscriptionSettings: CompanySubscriptionSettingsInput
  ) {
    updateCompany (
      legalName: $legalName
      brandName: $brandName
      profileName: $profileName
      taxId: $taxId
      yearFounded: $yearFounded
      aboutUs: $aboutUs
      metadata: $metadata
      subscriptionTopics: $subscriptionTopics
      subscriptionSettings: $subscriptionSettings
    ) {
      id
      legalName
      brandName
      profileName
      taxId
      yearFounded
      aboutUs
      metadata
      subscriptionTopics {
        id
        name
        enable_email
        enable_sms
        enable_voice
      }
      subscriptionSettings {
        enable_email
        enable_sms
        enable_voice
      }
    }
  }
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def update_company_profile(bearer_token, legal_name=None, brand_name=None, profile_name=None, tax_id=None, year_founded=None, about_us=None, metadata=None):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        mutation (
            $legalName: String
            $brandName: String
            $profileName: String
            $taxId: String
            $yearFounded: Int
            $aboutUs: String
            $metadata: JSON
        ) {
            updateCompany (
                legalName: $legalName
                brandName: $brandName
                profileName: $profileName
                taxId: $taxId
                yearFounded: $yearFounded
                aboutUs: $aboutUs
                metadata: $metadata
            ) {
                id
                legalName
                brandName
                profileName
                taxId
                yearFounded
                aboutUs
                metadata
            }
        }
        """
    )

    params = {"legalName": legal_name, "brandName": brand_name, "profileName": profile_name, "taxId": tax_id,
              "yearFounded": year_founded, "aboutUs": about_us, "metadata": metadata}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_company_token"
update_company_profile(token,
                       "Company new legal name",
                       "Company new brand name",
                       "Company new profile name",
                       "44-555555",
                       2003,
                       "New about us",
                       {"companyNumEmployees": "5"})
```

---

# B2B Features

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features.md

Connect your company with other companies: send, list, respond to and revoke B2B connection requests, and remove connections.

---

# Send B2B Connection Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/send-b2b-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/send-b2b-connection-request.md
Last updated: 2024-10-11T16:18:07.746Z

By providing the invited company ID and the connection type, a connection request will be sent to the invited company.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$invitedCompanyId: ID!
	$connectionType: B2bConnectionType!
          ) {
	createB2bConnectionRequest (
  	invitedCompanyId: $invitedCompanyId
  	connectionType: $connectionType
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedCompany {
    	id
      }
    }
  }

```

---

# List B2B Connections

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/list-b2b-connections
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/list-b2b-connections.md
Last updated: 2024-11-01T19:06:11.607Z

Call returns list of connected companies and the relationship type(s) (client, vendor, partner, other).

Call returns list of connected companies and the relationship type(s) (client, vendor, partner, other). For large lists use the cursor-paginated `paginatedB2bConnections` query (see [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md)).



> **Info**


The company GraphQL API is accessible at /company



```graphql
query (
	$includedType: B2bConnectionType
	$excludedType: B2bConnectionType
	$limit: Int
  ) {
	b2bConnections (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	type
  	createdAt
  	updatedAt
  	startedAt
  	company {
    	id
  	}
  	connectedCompany {
    	id
  	}
	}
  }
```

## Code Examples





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def list_b2b_connections(bearer_token, include_type=None, exclude_type=None, limit_count=10):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/company",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        query (
            $includedType: B2bConnectionType
            $excludedType: B2bConnectionType
            $limit: Int
        ) {
            b2bConnections (
                includedType: $includedType
                excludedType: $excludedType
                limit: $limit
            ) {
                id
                type
                createdAt
                updatedAt
                startedAt
                company { id }
                connectedCompany { id }
            }
        }
        """
    )

    params = {"includedType": include_type, "excludedType": exclude_type, "limit": limit_count}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_company_token"
list_b2b_connections(token)
```

---

# List Pending B2B Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/list-pending-b2b-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/list-pending-b2b-connection-requests.md
Last updated: 2024-10-11T16:27:27.939Z

Returns a list of pending Company connection requests to your Company.



> **Info**


The company GraphQL API is accessible at /company



* Returns a list of pending connection requests this company sent to other companies
* Includes company data, invitation status, and proposed connection type (vendor, client, partner..)

```
query (
	$invitedCompanyId: ID
	$includedType: B2bConnectionType
	$excludedType: B2bConnectionType
	$limit: Int
  ) {
	pendingB2bConnectionRequests (
  	invitedCompanyId: $invitedCompanyId
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
	}
  }

```

---

# Remove B2B Connection

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/remove-b2b-connection
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/remove-b2b-connection.md
Last updated: 2025-09-12T18:09:13.052Z

Use the below mutation to remove existing B2B Connection(s).

```
mutation (
    $connectionId: ID!
  ) {
    removeB2bConnection (
      connectionId: $connectionId
    ) {
      id
      type
      createdAt
      updatedAt
      startedAt
      company {
        id
      }
      connectedCompany {
        id
      }
    }
  }

```

---

# Cancel B2B Connection Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/cancel-b2b-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/cancel-b2b-connection-request.md
Last updated: 2024-10-11T16:27:27.939Z

Cancels a B2B connection request you've sent.



> **Info**


The company GraphQL API is accessible at /company



If a company wants to revoke a connection request it can choose from the list of pending requests and revoke it.

```
mutation (
	$requestId: ID!
  ) {
	revokeB2bConnectionRequest (
  	requestId: $requestId
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
	}
  }

```

---

# Get Received B2B Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/get-received-b2b-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/get-received-b2b-connection-requests.md
Last updated: 2024-10-11T16:29:06.613Z

List Company connection requests that you have received and should (probably) respond to.



> **Info**


The company GraphQL API is accessible at /company



```
query (
	$invitingCompanyId: ID
	$includedType: B2bConnectionType
	$excludedType: B2bConnectionType
	$limit: Int
  ) {
	receivedB2bConnectionRequests (
  	invitingCompanyId: $invitingCompanyId
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
	}
  }

```

---

# Respond to B2B Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/company/b2b-features/respond-to-b2b-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2b-features/respond-to-b2b-connection-requests.md
Last updated: 2024-10-11T16:29:06.625Z

Provides functionality to respond to a Company connection request.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$requestId: ID!
	$response: ConnectionRequestResponse!
  ) {
	respondB2bConnectionRequest (
  	requestId: $requestId
  	response: $response
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
	}
  }

```

---

# B2C Features

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features.md

Connect with people: connection and subscription requests, subscribers, opt-outs, SMS opt-in QR codes and people search on the /company server.

---

# List B2C (People) Connections

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-b2c-people-connections
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-b2c-people-connections.md
Last updated: 2025-03-07T18:02:37.349Z

Returns list of B2C (People) connections with information about the connection, the Person/User and the company.

```
query (
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	b2cConnections (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	type
  	insertedAt
  	updatedAt
  	startedAt
  	company {
    	id
  	}
  	connectedUser {
    	id
      }
    }
  }

```

---

# List Pending People Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-pending-people-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-pending-people-connection-requests.md
Last updated: 2024-10-11T16:34:06.654Z

Returns a list of B2C connection requests that have not been responded to, with the proposed relationship type (e.g. owner, admin, customer, partner….)



> **Info**


The company GraphQL API is accessible at /company



```
query (
	$invitedUserId: ID
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	pendingB2cConnectionRequests (
  	invitedUserId: $invitedUserId
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# List Active Subscribers

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-active-subscribers
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-active-subscribers.md
Last updated: 2024-10-11T16:36:44.852Z

Returns a list of B2C subscriptions for the company including the subscription channel, and all the relevant details.



> **Info**


The company GraphQL API is accessible at /company



```json
query (
	$userId: ID
	$includedTopic: B2cSubscriptionTopic
	$excludedTopic: B2cSubscriptionTopic
	$expirationDateBefore: Date
	$expirationDateAfter: Date
	$emailChannelEnabled: Boolean
	$smsChannelEnabled: Boolean
	$voiceChannelEnabled: Boolean
	$limit: Int
  ) {
	b2cSubscriptions (
  	userId: $userId
  	includedTopic: $includedTopic
  	excludedTopic: $excludedTopic
  	expirationDateBefore: $expirationDateBefore
  	expirationDateAfter: $expirationDateAfter
  	emailChannelEnabled: $emailChannelEnabled
  	smsChannelEnabled: $smsChannelEnabled
  	voiceChannelEnabled: $voiceChannelEnabled
  	limit: $limit
	) {
  	id
  	subscriptionTopics
  	shareInformationWithTheCompany
  	stopAllCommunications
  	expirationDate
  	notificationStartTime
  	notificationEndTime
  	timezone
  	insertedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	email {
    	email
  	}
  	smsTelephoneNumber {
    	number
  	}
  	voiceTelephoneNumber {
    	number
  	}
	}
  }

```

---

# List Pending Subscription Requests

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-pending-subscription-requests
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-pending-subscription-requests.md
Last updated: 2024-10-11T16:36:44.918Z

Returns the list of pending B2C subscription requests your company has sent (pendingB2cSubscriptionRequests on /company).

Returns the list of pending B2C subscription requests your company has sent to users. Only requests with status `PENDING` are returned; accepted, rejected or revoked requests are not included.



> **Info**


The company GraphQL API is accessible at /company



```graphql
query {
  pendingB2cSubscriptionRequests {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}
```

Example response:

```json
{
  "data": {
    "pendingB2cSubscriptionRequests": [
      {
        "company": { "id": "00000000-0000-4000-8000-000000000001" },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00",
        "invitedUser": { "id": "00000000-0000-4000-8000-000000000003" },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:00",
        "user": { "id": "00000000-0000-4000-8000-000000000004" }
      }
    ]
  }
}
```

For large lists use the cursor-paginated `paginatedPendingB2cSubscriptionRequests` query (see [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md)).

---

# Send Person (B2C) Connection Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/send-person-b2c-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/send-person-b2c-connection-request.md
Last updated: 2024-10-11T16:44:02.238Z

If you find people using search, they can send them a connection request.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$invitedUserId: ID!
	$connectionType: B2cConnectionType!
  ) {
	createB2cConnectionRequest (
  	invitedUserId: $invitedUserId
  	connectionType: $connectionType
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Invite People (as Company)

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/invite-people-as-company
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/invite-people-as-company.md
Last updated: 2024-10-11T16:42:44.250Z

Invite a person to Connect with your company.

* Provide as much information as possible and create shallow (unclaimed) profiles
* Send the invites to those people and connection requests

```
mutation (
	$user: InviteUserInput!
	$connectionType: B2cConnectionType!
        ) {
	createB2cInvite (
  	user: $user
  	connectionType: $connectionType
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
    	firstName
    	lastName
  	}
	}
  }

```

---

# Send Person (B2C) Subscription Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/send-person-b2c-subscription-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/send-person-b2c-subscription-request.md
Last updated: 2024-10-11T16:45:08.435Z

When a user is found, a Company can send them a Subscription request.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$invitedUserId: ID!
	$requestEmailSubscription: Boolean
	$requestSmsSubscription: Boolean
	$requestVoiceSubscription: Boolean
  ) {
	createB2cSubscriptionRequest (
  	invitedUserId: $invitedUserId
  	requestEmailSubscription: $requestEmailSubscription
  	requestSmsSubscription: $requestSmsSubscription
  	requestVoiceSubscription: $requestVoiceSubscription
	) {
  	id
  	status
  	email_requested
  	sms_requested
  	voice_requested
  	insertedAt
  	updatedAt
  	respondedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Remove B2C Connection

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/remove-b2c-connection
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/remove-b2c-connection.md
Last updated: 2025-09-12T18:09:13.052Z

Use the below mutation to remove existing B2C connection(s).

```
mutation (
    $connectionId: ID!
  ) {
    removeB2cConnection (
      connectionId: $connectionId
    ) {
      id
      type
      insertedAt
      updatedAt
      startedAt
      company {
        id
      }
      connectedUser {
        id
      }
    }
  }
```

---

# Cancel Pending B2C Connection Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/cancel-pending-b2c-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/cancel-pending-b2c-connection-request.md
Last updated: 2024-10-11T16:45:08.435Z

Find a pending Connection request on the list and revoke it.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$requestId: ID!
  ) {
	revokeB2cConnectionRequest (
  	requestId: $requestId
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Cancel Pending B2C Subscription Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/cancel-pending-b2c-subscription-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/cancel-pending-b2c-subscription-request.md
Last updated: 2024-10-11T16:46:34.579Z

Find a pending Subscription request, and revoke it.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$requestId: ID!
  ) {
	revokeB2cSubscriptionRequest (
  	requestId: $requestId
	) {
  	id
  	status
  	email_requested
  	sms_requested
  	voice_requested
  	insertedAt
  	updatedAt
  	respondedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Get Pending Connection Requests (People)

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/get-pending-connection-requests-people
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/get-pending-connection-requests-people.md
Last updated: 2024-10-11T16:47:46.172Z

List pending requests made by People to connect to your Company.



> **Info**


The company GraphQL API is accessible at /company



```
query (
	$userId: ID
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	pendingC2bConnectionRequests (
  	userId: $userId
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
  	respondedByUser {
    	id
  	}
	}
  }

```

---

# Respond to C2B Connection Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/respond-to-c2b-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/respond-to-c2b-connection-request.md
Last updated: 2024-10-11T16:47:46.172Z

Respond to a Connection request received from a Person.



> **Info**


The company GraphQL API is accessible at /company



```
mutation (
	$requestId: ID!
	$response: ConnectionRequestResponse!
  ) {
	respondC2bConnectionRequest (
  	requestId: $requestId
  	response: $response
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
  	respondedByUser {
    	id
  	}
	}
  }

```

---

# Get Connected People

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/get-connected-people
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/get-connected-people.md
Last updated: 2024-10-11T16:32:13.465Z

Returns list of Business to Consumer (B2C) Connections with information about the connection, the user and the company



> **Info**


The company GraphQL API is accessible at /company



```
query (
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	b2cConnections (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	type
  	insertedAt
  	updatedAt
  	startedAt
  	company {
    	id
  	}
  	connectedUser {
    	id
  	}
	}
  }

```

---

# Generate SMS Opt-In QR Code

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/generate-sms-opt-in-qr-code
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/generate-sms-opt-in-qr-code.md
Last updated: 2025-09-18T15:26:30.854Z

Use this mutation to generate an SMS opt-in QR code.

```
mutation (
      $telephoneNumberId: ID!
      $subscriptionTopicIds: [ID!]!
      $type: SmsOptInQrCodeType!
  ) {
    generateSmsOptInQrCode (
      telephoneNumberId: $telephoneNumberId
      subscriptionTopicIds: $subscriptionTopicIds
      type: $type
    ) {
      message
      qrCode
      telephoneNumber {
        id
      }
    }
  }
```

---

# Search People

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/search-people
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/search-people.md
Last updated: 2024-10-11T16:38:51.729Z

Use this function to search for Users (People) within the TNID platform.



> **Info**


The company GraphQL API is accessible at /company



* Search for users who have existing profiles
* Name field queries full name or username fields

```
query (
	$name: String
	$email: String
	$telephoneNumber: String
	$limit: Int
  ) {
	users (
  	name: $name
  	email: $email
  	telephoneNumber: $telephoneNumber
  	limit: $limit
	) {
  	id
  	firstName
  	lastName
  	middleName
  	username
	}
  }

```

---

# List Opt-Out Requests

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-opt-out-requests
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/list-opt-out-requests.md
Last updated: 2025-05-08T20:58:34.497Z

Returns a list of Opt-out requests with information about the request, the user and the company.

```

  query (
	$type: OptOutRequestType
	$status: OptOutRequestStatus
	$source: String
	$destination: String
	$externalId: String
	$timestampBefore: NaiveDateTime
	$timestampAfter: NaiveDateTime
	$limit: Int
  ) {
	optOutRequests (
  	type: $type
  	status: $status
  	source: $source
  	destination: $destination
  	externalId: $externalId
  	timestampBefore: $timestampBefore
  	timestampAfter: $timestampAfter
  	limit: $limit
	) {
  	id
  	source
  	destination
  	externalId
  	messageBody
  	type
  	status
  	createdAt
  	updatedAt
  	timestamp
  	metadata
  	company {
    	id
    	legalName
    	brandName
    	profileName
    	taxId
    	yearFounded
    	aboutUs
    	metadata
    	verified
    	logoUrl
    	verticalType {
      	id
      	displayName
      	description
    	}
    	organizationType {
      	id
      	displayName
    	}
    	addresses {
      	city
      	country
      	state
      	street
      	types
      	zipCode
    	}
    	emails {
      	email
    	}
    	telephoneNumbers {
      	number
    	}
    	socialNetworks {
      	type
      	url
    	}
    	webpages {
      	type
      	url
    	}
    	specialties {
      	description
      	title
    	}
    	subscriptionTopics {
      	id
      	name
    	}
  	}
  	user {
    	id
    	username
    	firstName
    	middleName
    	lastName
    	birthdate
    	aboutMe
    	timezone
    	metadata
    	addresses {
      	city
      	country
      	state
      	street
      	types
      	zipCode
    	}
    	emails {
      	email
    	}
    	telephoneNumbers {
      	number
    	}
    	socialNetworks {
      	type
      	url
    	}
    	webpages {
      	type
      	url
    	}
    	interests {
      	description
      	title
    	}
  	}
	}
  }

```

---

# Create Opt-out Request

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/create-opt-out-request
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/create-opt-out-request.md
Last updated: 2025-05-08T20:58:34.497Z

Creates and then returns an opt-out request.

```
mutation (
    $source: String!
    $destination: String!
    $externalId: String
    $messageBody: String
    $type: OptOutRequestType!
    $timestamp: NaiveDateTime!
    $metadata: JSON
  ) {
    createOptOutRequest (
      source: $source
      destination: $destination
      externalId: $externalId
      messageBody: $messageBody
      type: $type
      timestamp: $timestamp
      metadata: $metadata
    ) {
      id
      source
      destination
      externalId
      messageBody
      type
      status
      createdAt
      updatedAt
      timestamp
      metadata
      company {
        id
      }
    }
  }

```

---

# Upsert B2C Subscription

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/upsert-b2c-subscription
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/upsert-b2c-subscription.md
Last updated: 2025-09-29T16:28:50.105Z

Create or update a B2C subscription.

```
mutation (
    $companyId: ID!
    $type: B2cSubscriptionType!
    $emailId: ID
    $telephoneNumberId: ID
    $subscriptionTopicIds: [ID!]!
    $expirationDate: Date
    $notificationStartTime: Time
    $notificationEndTime: Time
  ) {
    upsertB2cSubscription (
      companyId: $companyId
      type: $type
      emailId: $emailId
      telephoneNumberId: $telephoneNumberId
      subscriptionTopicIds: $subscriptionTopicIds
      expirationDate: $expirationDate
      notificationStartTime: $notificationStartTime
      notificationEndTime: $notificationEndTime
      ) {
        ... on B2cEmailSubscription {
          id
          insertedAt
          updatedAt
          type
          subscriptionTopics
          expirationDate
          notificationStartTime
          notificationEndTime
          email
          company {
            id
          }
          user {
            id
          }
        }
        ... on B2cSmsSubscription {
          id
          insertedAt
          updatedAt
          type
          subscriptionTopics
          expirationDate
          notificationStartTime
          notificationEndTime
          telephoneNumber
          company {
            id
          }
          user {
            id
          }
        }
        ... on B2cVoiceSubscription {
          id
          insertedAt
          updatedAt
          type
          subscriptionTopics
          expirationDate
          notificationStartTime
          notificationEndTime
          telephoneNumber
          company {
            id
          }
          user {
            id
          }
        }

```

---

# Delete B2C Subscription

Source: https://support.tsgglobal.com/docs/tnid/company/b2c-features/delete-b2c-subscription
Markdown: https://support.tsgglobal.com/docs/tnid/company/b2c-features/delete-b2c-subscription.md
Last updated: 2025-09-29T16:29:52.598Z

removeB2cSubscription on /company: remove a person's email, SMS or voice subscription to your company.

```
mutation (
    $subscriptionId: ID!
  ) {
    removeB2cSubscription (
      subscriptionId: $subscriptionId
    ) {
      ... on B2cEmailSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        email
        company {
          id
        }
        user {
          id
        }
      }
      ... on B2cSmsSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
      ... on B2cVoiceSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
    }
  }

```

---

# Webhooks

Source: https://support.tsgglobal.com/docs/tnid/company/webhooks
Markdown: https://support.tsgglobal.com/docs/tnid/company/webhooks.md

Register a company webhook so TNID calls your endpoint when connection requests, subscriptions, opt-outs, forms and social-network verifications change.

Instead of polling `received…Requests` and `…Connections`, register a webhook and let TNID call you. Webhooks belong to a company and are managed on the `/company` GraphQL server.

## Register a webhook

```graphql
mutation (
  $url: String!
  $name: String
  $bearerToken: String
  $customHeaders: JSON
  $receiveSubscriptionEvents: Boolean
  $receiveOptOutEvents: Boolean
  $b2bConnectionRequestReceivedWebhook: Boolean
  $b2bConnectionRequestResponseWebhook: Boolean
  $b2cConnectionRequestResponseWebhook: Boolean
  $c2bConnectionRequestReceivedWebhook: Boolean
  $b2cSubscriptionRequestResponseWebhook: Boolean
  $companySocialNetworkStatusChangeWebhook: Boolean
  $b2bFormInstanceSubmissionRequestReceivedWebhook: Boolean
) {
  createCompanyWebhook (
    url: $url
    name: $name
    bearerToken: $bearerToken
    customHeaders: $customHeaders
    receiveSubscriptionEvents: $receiveSubscriptionEvents
    receiveOptOutEvents: $receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook: $b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook: $b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook: $b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook: $c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook: $b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook: $companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook: $b2bFormInstanceSubmissionRequestReceivedWebhook
  ) {
    id
    url
    name
  }
}
```

```json
{
  "url": "https://api.example.com/tnid/webhook",
  "name": "production",
  "bearerToken": "<a secret you generate>",
  "customHeaders": { "X-Environment": "prod" },
  "receiveSubscriptionEvents": true,
  "receiveOptOutEvents": true,
  "b2bConnectionRequestReceivedWebhook": true,
  "b2bConnectionRequestResponseWebhook": true,
  "b2cConnectionRequestResponseWebhook": true,
  "c2bConnectionRequestReceivedWebhook": true,
  "b2cSubscriptionRequestResponseWebhook": true,
  "companySocialNetworkStatusChangeWebhook": false,
  "b2bFormInstanceSubmissionRequestReceivedWebhook": false
}
```

* `url` must be HTTPS and reachable from the internet.
* `bearerToken` is sent back to you on every delivery as `Authorization: Bearer <bearerToken>`. Generate a random secret and verify it on every request; reject calls that do not carry it.
* `customHeaders` are added verbatim to every delivery.
* Each boolean subscribes the webhook to one event type. Omitted flags default to off.

## Event types

| Flag                                              | Fires when                                                                                       |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| `receiveSubscriptionEvents`                       | A person subscribes to your company, changes their topics or channels, or removes a subscription |
| `receiveOptOutEvents`                             | An opt-out is recorded for your company                                                          |
| `b2bConnectionRequestReceivedWebhook`             | Another company sends you a B2B connection request                                               |
| `b2bConnectionRequestResponseWebhook`             | A company accepts or rejects your B2B connection request                                         |
| `b2cConnectionRequestResponseWebhook`             | A person accepts or rejects your B2C connection request                                          |
| `c2bConnectionRequestReceivedWebhook`             | A person sends you a connection request                                                          |
| `b2cSubscriptionRequestResponseWebhook`           | A person accepts or rejects your subscription request                                            |
| `companySocialNetworkStatusChangeWebhook`         | A social-network link on your profile changes verification status                                |
| `b2bFormInstanceSubmissionRequestReceivedWebhook` | Another company asks you to fill in one of its forms                                             |

Sentiment analysis also delivers to your webhooks. When `reportExternalCommunication` detects an unsubscribe intent, TNID posts:

```json
{
  "external_communication_id": "00000000-0000-4000-8000-000000000001",
  "timestamp": "2026-01-15T09:00:00.000000",
  "action": "unsubscribe"
}
```

Confirm or reject it with `feedbackOnDetectedUnsubscribe(externalCommunicationId, action: UNSUBSCRIBE | DONT_UNSUBSCRIBE)`. See [sentiment analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis.md) in the API Reference.



> **Warning**


Payload schemas for the connection, subscription and opt-out events are not yet published on this site. Register a webhook on staging, trigger the event, and capture a sample; the fields mirror the objects returned by the corresponding `received…Requests`, `…Connections` and `optOutRequests` queries. Contact <support@tsgglobal.com> if you need the schemas in advance.



## Respond, retries and ordering

Return a `2xx` status quickly and do the work asynchronously. Treat deliveries as at-least-once: key your handler on the object `id` in the payload so a repeated delivery is harmless. Use `insertedAt`/`updatedAt` on the referenced object, not arrival order, when ordering matters.

## Manage webhooks

* `companyWebhooks` lists your webhooks with their flags.
* `updateCompanyWebhook(id, …)` changes only the arguments you pass; omitted settings keep their values.
* `removeCompanyWebhook(id)` stops delivery immediately.

All four operations, with full examples, are in the [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks.md).

---

# Update User profile

Source: https://support.tsgglobal.com/docs/tnid/user/update-user-profile
Markdown: https://support.tsgglobal.com/docs/tnid/user/update-user-profile.md
Last updated: 2024-11-01T19:13:02.471Z

Use this feature to update User profile fields such as username, name, birthdate, about-me text and metadata.

Use this feature to update User profile fields.



> **Info**


The User GraphQL API is accessible at /user



```graphql
 mutation (
	$username: String
	$firstName: String
	$lastName: String
	$middleName: String
	$birthdate: Date
	$aboutMe: String
	$metadata: JSON
  ) {
	updateUser (
  	username: $username
  	firstName: $firstName
  	lastName: $lastName
  	middleName: $middleName
  	birthdate: $birthdate
  	aboutMe: $aboutMe
  	metadata: $metadata
	) {
  	id
  	username
  	firstName
  	lastName
  	middleName
  	birthdate
  	aboutMe
  	metadata
	}
  }
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def user_update_profile(bearer_token, username=None, first_name=None, last_name=None, middle_name=None, birthdate=None, about_me=None, metadata=None):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/user",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        mutation (
            $username: String
            $firstName: String
            $lastName: String
            $middleName: String
            $birthdate: Date
            $aboutMe: String
            $metadata: JSON
        ) {
            updateUser (
                username: $username
                firstName: $firstName
                lastName: $lastName
                middleName: $middleName
                birthdate: $birthdate
                aboutMe: $aboutMe
                metadata: $metadata
            ) {
                id
                username
                firstName
                lastName
                middleName
                birthdate
                aboutMe
                metadata
            }
        }
        """
    )

    params = {"username": username, "firstName": first_name, "lastName": last_name,
              "middleName": middle_name, "birthdate": birthdate, "aboutMe": about_me, "metadata": metadata}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_user_token"
user_update_profile(token, "username", "John", "Smith")
```

---

# Search User (People)

Source: https://support.tsgglobal.com/docs/tnid/user/search-user-people
Markdown: https://support.tsgglobal.com/docs/tnid/user/search-user-people.md
Last updated: 2025-03-07T18:09:37.748Z

Search for users who have existing profiles. Name field queries full name or username fields.

```
query (
	$name: String
	$email: String
	$telephoneNumber: String
	$limit: Int
  ) {
	users (
  	name: $name
  	email: $email
  	telephoneNumber: $telephoneNumber
  	limit: $limit
	) {
  	id
  	username
  	firstName
  	middleName
  	lastName
  	birthdate
  	aboutMe
  	timezone
  	metadata
  	addresses {
    	city
    	country
    	state
    	street
    	types
    	zipCode
  	}
  	emails {
    	email
  	}
  	telephoneNumbers {
    	number
  	}
  	socialNetworks {
    	type
    	url
  	}
  	webpages {
    	type
    	url
  	}
  	interests {
    	description
    	title
  	}
	}
  }

```

---

# Invite User (People)

Source: https://support.tsgglobal.com/docs/tnid/user/invite-user-people
Markdown: https://support.tsgglobal.com/docs/tnid/user/invite-user-people.md
Last updated: 2025-03-07T18:10:38.520Z

Provide as much information as possible and create shallow profiles. Send the invites to those people and connection requests.

```
mutation (
	$user: InviteUserInput!
	$connectionType: C2cConnectionType!
  ) {
	createC2cInvite (
  	user: $user
  	connectionType: $connectionType
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedUser {
    	id
    	username
  	}
	}
  }

```

---

# Connections

Source: https://support.tsgglobal.com/docs/tnid/user/connections
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections.md

As a user, connect with companies: send C2B requests, respond to company requests, list and revoke.

---

# Send C2B Connection Request

Source: https://support.tsgglobal.com/docs/tnid/user/connections/send-c2b-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections/send-c2b-connection-request.md
Last updated: 2025-03-07T18:38:11.317Z

As a user, send a connection request to a company you found with search (createC2bConnectionRequest on /user).

If you find a company using search, you can send it a connection request.



> **Info**


The User GraphQL API is accessible at /user



```graphql
mutation (
	$invitedCompanyId: ID!
	$connectionType: B2cConnectionType!
  ) {
	createC2bConnectionRequest (
  	invitedCompanyId: $invitedCompanyId
  	connectionType: $connectionType
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
  	respondedByUser {
    	id
  	}
	}
  }
```

---

# List B2C connections

Source: https://support.tsgglobal.com/docs/tnid/user/connections/list-b2c-connections
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections/list-b2c-connections.md
Last updated: 2025-03-07T18:39:31.710Z

b2cConnections on /user: list the companies you are connected to and the connection type.

```
query (
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	b2cConnections (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	type
  	insertedAt
  	updatedAt
  	startedAt
  	company {
    	id
  	}
  	connectedUser {
    	id
  	}
	}
  }

```

---

# List received pending B2C Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/user/connections/list-received-pending-b2c-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections/list-received-pending-b2c-connection-requests.md
Last updated: 2025-03-07T18:39:31.710Z

List received pending requests that the user needs to respond to.

```
query (
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	receivedB2cConnectionRequests (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	company {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Respond to received B2C Connection Request

Source: https://support.tsgglobal.com/docs/tnid/user/connections/respond-to-received-b2c-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections/respond-to-received-b2c-connection-request.md
Last updated: 2025-03-07T18:39:31.537Z

Accept or reject a received B2C connection request.

```
mutation (
	$requestId: ID!
	$response: ConnectionRequestResponse!
  ) {
	respondB2cConnectionRequest (
  	requestId: $requestId
  	response: $response
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	company {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Revoke sent C2B Connection Request

Source: https://support.tsgglobal.com/docs/tnid/user/connections/revoke-sent-c2b-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections/revoke-sent-c2b-connection-request.md
Last updated: 2025-03-07T18:38:11.412Z

revokeC2bConnectionRequest on /user: withdraw a pending connection request you sent to a company.

```
mutation (
	$requestId: ID!
  ) {
	revokeC2bConnectionRequest (
  	requestId: $requestId
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	invitedCompany {
    	id
  	}
  	user {
    	id
  	}
  	respondedByUser {
    	id
  	}
	}
  }

```

---

# List sent pending C2B Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/user/connections/list-sent-pending-c2b-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/user/connections/list-sent-pending-c2b-connection-requests.md
Last updated: 2025-03-07T18:38:11.412Z

List sent pending requests that the user sent.

```
query (
	$includedType: B2cConnectionType
	$excludedType: B2cConnectionType
	$limit: Int
  ) {
	pendingC2bConnectionRequests (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedCompany {
    	id
  	}
  	respondedByUser {
    	id
  	}
	}
  }

```

---

# Spam Reporting Features

Source: https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features
Markdown: https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features.md

Let users report unwanted SMS, MMS or calls and list their reports on the /user server.

---

# Create Spam Report

Source: https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features/create-spam-report
Markdown: https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features/create-spam-report.md
Last updated: 2024-11-01T19:11:36.632Z

Use this endpoint to create a spam report for an unwanted SMS, MMS or call (createSpamReport on /user).

Use this endpoint to create a spam report.



> **Info**


The User GraphQL API is accessible at /user



```graphql
  mutation (
	$fromNumber: String!
	$toNumber: String!
	$channelType: SpamReportChannelType!
	$timestamp: NaiveDateTime!
	$issueType: SpamReportIssueType
	$userNote: String
	$messageContent: String
	$metadata: JSON
  ) {
	createSpamReport (
  	fromNumber: $fromNumber
  	toNumber: $toNumber
  	channelType: $channelType
  	timestamp: $timestamp
  	issueType: $issueType
  	userNote: $userNote
  	messageContent: $messageContent
  	metadata: $metadata
	) {
  	id
  	fromNumber
  	toNumber
  	userNote
  	messageContent
  	channelType
  	issueType
  	status
  	createdAt
  	updatedAt
  	timestamp
  	metadata
  	user {
    	id
  	}
	}
  }
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def user_create_spam_report(bearer_token, from_number, to_number, channel_type, timestamp, issue_type=None, user_note=None, message_content=None, metadata=None):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/user",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        mutation (
            $fromNumber: String!
            $toNumber: String!
            $channelType: SpamReportChannelType!
            $timestamp: NaiveDateTime!
            $issueType: SpamReportIssueType
            $userNote: String
            $messageContent: String
            $metadata: JSON
        ) {
            createSpamReport (
                fromNumber: $fromNumber
                toNumber: $toNumber
                channelType: $channelType
                timestamp: $timestamp
                issueType: $issueType
                userNote: $userNote
                messageContent: $messageContent
                metadata: $metadata
            ) {
                id
                fromNumber
                toNumber
                userNote
                messageContent
                channelType
                issueType
                status
                createdAt
                updatedAt
                timestamp
                metadata
                user {
                    id
                }
            }
        }
        """
    )

    params = {"fromNumber": from_number, "toNumber": to_number, "channelType": channel_type,
              "timestamp": timestamp, "issueType": issue_type, "userNote": user_note,
              "messageContent": message_content, "metadata": metadata}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_user_token"
user_create_spam_report(token,
                        "15555555555",
                        "16666666666",
                        "MMS",
                        "2023-10-31 11:30:00",
                        "SPAM",
                        "Note about the report",
                        "Original message content",
                        {"customField": "custom value"})
```

---

# List Spam Reports

Source: https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features/list-spam-reports
Markdown: https://support.tsgglobal.com/docs/tnid/user/spam-reporting-features/list-spam-reports.md
Last updated: 2024-11-01T19:11:36.646Z

Used to list Spam Reports with optional filters by channel, issue type and status (spamReports on /user).

Used to list Spam Reports with optional filters. For large result sets use the cursor-paginated twin, `paginatedSpamReports` (see [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md)).



> **Info**


The User GraphQL API is accessible at /user



```graphql
query (
	$channelType: SpamReportChannelType
	$issueType: SpamReportIssueType
	$includedStatus: SpamReportStatus
	$excludedStatus: SpamReportStatus
	$limit: Int
  ) {
	spamReports (
  	channelType: $channelType
  	issueType: $issueType
  	includedStatus: $includedStatus
  	excludedStatus: $excludedStatus
  	limit: $limit
	) {
  	id
  	fromNumber
  	toNumber
  	userNote
  	messageContent
  	channelType
  	issueType
  	status
  	createdAt
  	updatedAt
  	timestamp
  	metadata
  	user {
    	id
  	}
	}
  }
```

## Example Code





### Python



```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def user_list_spam_reports(bearer_token, channel_type=None, issue_type=None, included_status=None, excluded_status=None, limit_count=10):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/user",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        query (
            $channelType: SpamReportChannelType
            $issueType: SpamReportIssueType
            $includedStatus: SpamReportStatus
            $excludedStatus: SpamReportStatus
            $limit: Int
        ) {
            spamReports (
                channelType: $channelType
                issueType: $issueType
                includedStatus: $includedStatus
                excludedStatus: $excludedStatus
                limit: $limit
            ) {
                id
                fromNumber
                toNumber
                userNote
                messageContent
                channelType
                issueType
                status
                createdAt
                updatedAt
                timestamp
                metadata
                user {
                    id
                }
            }
        }
        """
    )

    params = {"channelType": channel_type, "issueType": issue_type, "includedStatus": included_status,
              "excludedStatus": excluded_status, "limit": limit_count}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_user_token"
user_list_spam_reports(token, "MMS")
```

---

# Company Features

Source: https://support.tsgglobal.com/docs/tnid/user/company-features
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features.md

What a user can do with companies and other people from the /user server: create a company, mint client secrets, and manage C2C connections and subscriptions.

---

# Search Companies

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/search-companies
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/search-companies.md
Last updated: 2025-09-12T18:15:21.629Z

companies query on /user: search companies by name, tax ID, email, telephone number or webpage.

This will return a list of companies matching the query and in case queried props are visible to the querier, it will be possible to query by:

* ID
* Legal name (with name field)
* Brand name (with name field)
* Profile name (with name field)
* TaxID
* Telephone number
* Email
* Webpage (social media or other)

Each result will return a list of companies. It is possible to pass a combination of queryable props.

```
query (
    $id: ID
    $name: String
    $taxId: String
    $email: String
    $telephoneNumber: String
    $webpage: String
    $limit: Int
    $metadata: JSON
  ) {
    companies (
      id: $id
      name: $name
      taxId: $taxId
      email: $email
      telephoneNumber: $telephoneNumber
      webpage: $webpage
      limit: $limit
      metadata: $metadata
    ) {
      id
      legalName
      brandName
      profileName
      taxId
      yearFounded
      aboutUs
      metadata
      verified
      logoUrl
      verticalType {
        id
        displayName
        description
      }
      organizationType {
        id
        displayName
      }
      addresses {
        city
        country
        state
        street
        types
        zipCode
      }
      emails {
        email
      }
      telephoneNumbers {
        number
      }
      socialNetworks {
        type
        url
      }
      webpages {
        type
        url
      }
      specialties {
        description
        title
      }
      subscriptionTopics {
        id
        name
      }
      subscriptionSettings {
        enable_email
        enable_sms
        enable_voice
      }
    }
  }

```

---

# Create company profile

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-profile
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-profile.md
Last updated: 2025-09-12T18:15:21.629Z

createCompany on /user: register a company with its profile, contacts, visibility settings and, optionally, a client secret for API access.

```
mutation (
    $legalName: String!
    $brandName: String
    $profileName: String!
    $taxId: String
    $yearFounded: Int
    $aboutUs: String
    $metadata: JSON
    $emails: [CompanyEmailInput!]
    $telephoneNumbers: [CompanyTelephoneNumberInput!]
    $addresses: [CompanyAddressInput!]
    $webpages: [WebpageInput!]
    $socialNetworks: [SocialMediaInput!]
    $trustedDomains: [TrustedDomainInput!]
    $subscriptionTopics: [B2cSubscriptionTopicInput!]
    $subscriptionSettings: CompanySubscriptionSettingsInput
    $verticalTypeId: ID
    $organizationTypeId: ID
    $companySpecialties: [ID]
    $legalNameVisibility: [CompanyVisibilityType!]
    $brandNameVisibility: [CompanyVisibilityType!]
    $taxIdVisibility: [CompanyVisibilityType!]
    $aboutUsVisibility: [CompanyVisibilityType!]
    $yearFoundedVisibility: [CompanyVisibilityType!]
    $verticalTypeVisibility: [CompanyVisibilityType!]
    $organizationTypeVisibility: [CompanyVisibilityType!]
    $specialtiesVisibility: [CompanyVisibilityType!]
    $b2cVisibility: [CompanyVisibilityType!]
    $metadataVisibility: [CompanyVisibilityType!]
    $provisionCompanyClientSecret: Boolean
    $connectionType: AdminB2cConnectionType
  ) {
    createCompany (
      legalName: $legalName
      brandName: $brandName
      profileName: $profileName
      taxId: $taxId
      yearFounded: $yearFounded
      aboutUs: $aboutUs
      metadata: $metadata
      emails: $emails
      telephoneNumbers: $telephoneNumbers
      addresses: $addresses
      webpages: $webpages
      socialNetworks: $socialNetworks
      trustedDomains: $trustedDomains
      subscriptionTopics: $subscriptionTopics
      subscriptionSettings: $subscriptionSettings
      verticalTypeId: $verticalTypeId
      organizationTypeId: $organizationTypeId
      companySpecialties: $companySpecialties
      legalNameVisibility: $legalNameVisibility
      brandNameVisibility: $brandNameVisibility
      taxIdVisibility: $taxIdVisibility
      aboutUsVisibility: $aboutUsVisibility
      yearFoundedVisibility: $yearFoundedVisibility
      verticalTypeVisibility: $verticalTypeVisibility
      organizationTypeVisibility: $organizationTypeVisibility
      specialtiesVisibility: $specialtiesVisibility
      b2cVisibility: $b2cVisibility
      metadataVisibility: $metadataVisibility
      provisionCompanyClientSecret: $provisionCompanyClientSecret
      connectionType: $connectionType
    ) {
      id
      clientSecret {
      clientId
      clientSecret
      description
      }
    }
  }

```

---

# Create Company Client Secret

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-client-secret
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/create-company-client-secret.md
Last updated: 2025-09-12T18:06:23.040Z

Create a company client secret using the below mutation.

```
mutation (
    $companyId: ID!
    $description: String
  ) {
    createCompanyClientSecret (
      companyId: $companyId
      description: $description
    ) {
      clientId
      clientSecret
      description
    }
  }

```

---

# List Pending C2C Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/list-pending-c2c-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/list-pending-c2c-connection-requests.md
Last updated: 2025-03-07T18:08:24.518Z

Returns a list of pending connection requests this user sent to other users.

```
query (
	$invitedUserId: ID
	$includedType: C2cConnectionType
	$excludedType: C2cConnectionType
	$limit: Int
  ) {
	pendingC2cConnectionRequests (
  	invitedUserId: $invitedUserId
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Remove C2C Connection

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/remove-c2c-connection
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/remove-c2c-connection.md
Last updated: 2025-09-12T18:12:22.234Z

Use the below mutation to remove an existing C2C connection.

```
mutation (
    $connectionId: ID!
  ) {
    removeC2cConnection (
      connectionId: $connectionId
    ) {
      id
      type
      insertedAt
      updatedAt
      startedAt
      user {
        id
      }
      connectedUser {
        id
      }
    }
  }

```

---

# Revoke sent C2C Connection Request

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/revoke-sent-c2c-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/revoke-sent-c2c-connection-request.md
Last updated: 2025-03-07T18:08:24.505Z

Revoke a C2C connection request you sent.

```
mutation (
	$requestId: ID!
  ) {
	revokeC2cConnectionRequest (
  	requestId: $requestId
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	invitedUser {
    	id
  	}
  	user {
    	id
  	}


	}
  }

```

---

# List Received C2C Connection Requests

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/list-received-c2c-connection-requests
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/list-received-c2c-connection-requests.md
Last updated: 2025-03-07T18:09:37.748Z

The user can list pending connection requests they need to respond.

```
query (
	$invitingUserId: ID
	$includedType: C2cConnectionType
	$excludedType: C2cConnectionType
	$limit: Int
  ) {
	receivedC2cConnectionRequests (
  	invitingUserId: $invitingUserId
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Send C2C Connection Request

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/send-c2c-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/send-c2c-connection-request.md
Last updated: 2025-03-07T18:10:38.520Z

Find people using search, and then send them a connection request

```
mutation (
	$invitedUserId: ID!
	$connectionType: C2cConnectionType!
  ) {
	createC2cConnectionRequest (
  	invitedUserId: $invitedUserId
  	connectionType: $connectionType
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Respond C2C Connection Request

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/respond-c2c-connection-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/respond-c2c-connection-request.md
Last updated: 2025-03-07T18:11:47.364Z

Respond to the connection request received from people.

```
 mutation (
	$requestId: ID!
	$response: ConnectionRequestResponse!
  ) {
	respondC2cConnectionRequest (
  	requestId: $requestId
  	response: $response
	) {
  	id
  	status
  	type
  	insertedAt
  	respondedAt
  	updatedAt
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# List C2C Connections

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/list-c2c-connections
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/list-c2c-connections.md
Last updated: 2025-03-07T18:08:24.518Z

c2cConnections on /user: list the people you are connected to and the connection type.

Returns list of C2C connections with information about the connection, and the users.

```
query (
	$includedType: C2cConnectionType
	$excludedType: C2cConnectionType
	$limit: Int
  ) {
	c2cConnections (
  	includedType: $includedType
  	excludedType: $excludedType
  	limit: $limit
	) {
  	id
  	type
  	insertedAt
  	updatedAt
  	startedAt
  	user {
    	id
  	}
  	connectedUser {
    	id
  	}
	}
  }

```

---

# Remove B2C Subscription

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/remove-b2c-subscription
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/remove-b2c-subscription.md
Last updated: 2025-09-29T16:31:41.525Z

removeB2cSubscription on /user: cancel one of your email, SMS or voice subscriptions to a company.

```
mutation (
    $subscriptionId: ID!
  ) {
    removeB2cSubscription (
      subscriptionId: $subscriptionId
    ) {
      ... on B2cEmailSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        email
        company {
          id
        }
        user {
          id
        }
      }
      ... on B2cSmsSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
      ... on B2cVoiceSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
    }
  }

```

---

# Respond to B2C Subscription Request

Source: https://support.tsgglobal.com/docs/tnid/user/company-features/respond-to-b2c-subscription-request
Markdown: https://support.tsgglobal.com/docs/tnid/user/company-features/respond-to-b2c-subscription-request.md
Last updated: 2025-09-29T16:31:41.525Z

respondB2cSubscriptionRequest on /user: accept or reject a company's request to subscribe you to its messages.

```
mutation (
    $requestId: ID!
    $response: SubscriptionRequestResponse!
  ) {
    respondB2cSubscriptionRequest (
      requestId: $requestId
      response: $response
    ) {
      id
      status
      type
      insertedAt
      respondedAt
      updatedAt
      user {
        id
      }
      company {
        id
      }
      invitedUser {
        id
      }
    }
  }

```

---

# Group Features

Source: https://support.tsgglobal.com/docs/tnid/group-features
Markdown: https://support.tsgglobal.com/docs/tnid/group-features.md
Last updated: 2025-09-12T17:55:47.222Z

Create and manage groups: search, membership, invites and join requests on the /user server.

---

# Search Groups

Source: https://support.tsgglobal.com/docs/tnid/group-features/search-groups
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/search-groups.md
Last updated: 2025-03-07T18:11:47.364Z

Search for groups. Each result will return a list of groups.

```
   query (
	$name: String
	$limit: Int
  ) {
	groups (
  	name: $name
  	limit: $limit
	) {
  	id
  	name
  	metadata
  	logo_url
  	visibility
	}
  }

```

---

# List User's Groups

Source: https://support.tsgglobal.com/docs/tnid/group-features/list-users-groups
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/list-users-groups.md
Last updated: 2025-03-07T18:12:49.894Z

List the groups the user is a member of with their role.

```
  query (
	$limit: Int
  ) {
	userGroups (
  	limit: $limit
	) {
  	role
  	group {
  	id
  	name
  	metadata
  	logo_url
  	visibility
  	}
	}
  }

```

---

# Create Group

Source: https://support.tsgglobal.com/docs/tnid/group-features/create-group
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/create-group.md
Last updated: 2025-03-07T18:12:49.917Z

createGroup on /user: create a group with a name, metadata and visibility.

```
mutation (
	$name: String!
	$metadata: JSON
	$visibility: [GroupVisibilityType!]
  ) {
	createGroup (
  	name: $name
  	metadata: $metadata
  	visibility: $visibility
	) {
  	id
  	}
    }

```

---

# Update group

Source: https://support.tsgglobal.com/docs/tnid/group-features/update-group
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/update-group.md
Last updated: 2025-03-07T18:34:55.652Z

updateGroup on /user: change a group's name, metadata or visibility.

```
   mutation (
	$groupId: ID!
	$name: String
	$metadata: JSON
	$visibility: [GroupVisibilityType!]
  ) {
	updateGroup (
  	groupId: $groupId
  	name: $name
  	metadata: $metadata
  	visibility: $visibility
	) {
  	id
  	name
  	metadata
  	visibility
  	}
}

```

---

# Invite User to Group

Source: https://support.tsgglobal.com/docs/tnid/group-features/invite-user-to-group
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/invite-user-to-group.md
Last updated: 2025-03-07T18:12:49.917Z

Send an invite to a user to a group.

```
 mutation (
	$groupId: ID!
	$invitedUserId: ID!
	$role: GroupRoleType!
  ) {
	createGroupUserMemberInvite (
  	groupId: $groupId
  	invitedUserId: $invitedUserId
  	role: $role
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Respond to Group invite

Source: https://support.tsgglobal.com/docs/tnid/group-features/respond-to-group-invite
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/respond-to-group-invite.md
Last updated: 2025-03-07T18:14:32.078Z

Respond to a group invite you received.

```
 mutation (
	$inviteId: ID!
	$response: GroupInviteResponse!
  ) {
	respondGroupUserMemberInvite(
  	inviteId: $inviteId
  	response: $response
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# List pending Group invites (Sent)

Source: https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-invites-sent
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-invites-sent.md
Last updated: 2025-03-07T18:34:55.652Z

pendingGroupUserMemberInvites on /user: list the group invites you have sent that are still pending.

```
query (
	$groupId: ID
	$invitedUserId: ID
	$limit: Int
  ) {
	pendingGroupUserMemberInvites (
  	groupId: $groupId
  	invitedUserId: $invitedUserId
  	limit: $limit
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# List pending Group invites (Received)

Source: https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-invites-received
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-invites-received.md
Last updated: 2025-03-07T18:34:55.541Z

receivedGroupUserMemberInvites on /user: list the group invites waiting for your response.

```
   query (
	$invitingUserId: ID
	$limit: Int
  ) {
	receivedGroupUserMemberInvites (
  	invitingUserId: $invitingUserId
  	limit: $limit
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Revoke Pending Group User Member Invite

Source: https://support.tsgglobal.com/docs/tnid/group-features/revoke-pending-group-user-member-invite
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/revoke-pending-group-user-member-invite.md
Last updated: 2025-03-07T18:36:00.883Z

revokeGroupUserMemberInvite on /user: withdraw a group invite you sent.

```
mutation (
	$inviteId: ID!
  ) {
	revokeGroupUserMemberInvite(
  	inviteId: $inviteId
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
  	invitedUser {
    	id
  	}
	}
  }

```

---

# Send Group user member join request

Source: https://support.tsgglobal.com/docs/tnid/group-features/send-group-user-member-join-request
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/send-group-user-member-join-request.md
Last updated: 2025-03-07T18:36:00.749Z

createGroupUserMemberJoinRequest on /user: ask to join a group.

```
mutation (
	$groupId: ID!
  ) {
	createGroupUserMemberJoinRequest (
  	groupId: $groupId
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
	}
  }

```

---

# List Received Pending Group user member join request

Source: https://support.tsgglobal.com/docs/tnid/group-features/list-received-pending-group-user-member-join-request
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/list-received-pending-group-user-member-join-request.md
Last updated: 2025-03-07T18:37:10.744Z

Group admins can list pending group user member join requests to a group.

```
 query (
	$groupId: ID!
	$limit: Int
  ) {
	receivedGroupUserMemberJoinRequests (
  	groupId: $groupId
  	limit: $limit
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
	}
  }

```

---

# List Pending Group user member join request

Source: https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-user-member-join-request
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/list-pending-group-user-member-join-request.md
Last updated: 2025-03-07T18:37:10.744Z

pendingGroupUserMemberJoinRequests on /user: list the join requests you have sent that are still pending.

```
 query (
	$limit: Int
  ) {
	pendingGroupUserMemberJoinRequests (
  	limit: $limit
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
	}
  }

```

---

# Revoke Group user member join request

Source: https://support.tsgglobal.com/docs/tnid/group-features/revoke-group-user-member-join-request
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/revoke-group-user-member-join-request.md
Last updated: 2025-03-07T18:36:00.883Z

revokeGroupUserMemberJoinRequest on /user: withdraw a join request you sent.

```
mutation (
	$joinRequestId: ID!
  ) {
	revokeGroupUserMemberJoinRequest(
  	joinRequestId: $joinRequestId
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
	}
  }

```

---

# Respond to Group user member join request

Source: https://support.tsgglobal.com/docs/tnid/group-features/respond-to-group-user-member-join-request
Markdown: https://support.tsgglobal.com/docs/tnid/group-features/respond-to-group-user-member-join-request.md
Last updated: 2025-03-07T18:36:00.768Z

Group admin can accept or reject a pending group user member join request.

```
 mutation (
	$joinRequestId: ID!
	$response: GroupInviteResponse!
  ) {
	respondGroupUserMemberJoinRequest(
  	joinRequestId: $joinRequestId
  	response: $response
	) {
  	id
  	status
  	role
  	insertedAt
  	respondedAt
  	updatedAt
  	group {
    	id
  	}
  	user {
    	id
  	}
	}
  }

```

---

# 10DLC Brands

Source: https://support.tsgglobal.com/docs/tnid/10dlc/brands
Markdown: https://support.tsgglobal.com/docs/tnid/10dlc/brands.md
Last updated: 2025-09-12T18:17:09.814Z

Register and manage 10DLC brands through TNID: API keys, draft and submit flows, statuses, listing and sharing brands with partner companies.

10DLC is the US carrier registration system for application-to-person messaging on local numbers. A **brand** is the registered business that sends messages; **campaigns** (next page) describe what it sends. TNID submits brands and campaigns to The Campaign Registry (TCR) for you and tracks their status.



> **Info**


All 10DLC operations are on the `/company` GraphQL server with a company token. Every operation is documented with request, variables and response in the [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc.md).



## 1. Register a 10DLC API key

Brands and campaigns are submitted under a 10DLC (TCR) API key. Register the key with TNID once; it must be a key provisioned for this purpose only, not shared with another integration.

```graphql
mutation ($name: String!, $apiKey: String!, $apiKeySecret: String!) {
  addTenDlcApiKey(name: $name, apiKey: $apiKey, apiKeySecret: $apiKeySecret) {
    apiKeyId
    companyId
    name
  }
}
```

Related: `tenDlcApiKeys` lists your keys, `updateTenDlcApiKey` renames one, `deleteTenDlcApiKey` removes one.

**Sharing a key with a partner.** A company that owns a key can let another company register brands and campaigns under it with `authorizeTenDlcApiKey(apiKeyId, authorizedCompanyId)`, see the authorizations with `tenDlcApiKeyAuthorizations`, and withdraw with `revokeTenDlcApiKeyAuthorization`. The authorized company then sees those brands and campaigns with `ownershipType` other than `DIRECT`.

## 2. Brand lifecycle

| Status           | Meaning                                                                              |
| ---------------- | ------------------------------------------------------------------------------------ |
| `DRAFT`          | Saved in TNID, not sent to TCR. Edit freely.                                         |
| `PENDING_REVIEW` | Submitted to TCR, awaiting verification.                                             |
| `ACTIVE`         | Verified. Campaigns can be submitted against it.                                     |
| `REJECTED`       | TCR rejected the brand. Fix the data and resubmit with `updateAndSubmitTenDlcBrand`. |
| `EXPIRED`        | Registration lapsed.                                                                 |

Two ways in:

* **Draft first** (recommended when data arrives in pieces): `registerTenDlcBrandAsDraft(input)` creates a `DRAFT`; `updateTenDlcBrandAsDraft(id, input)` edits it; `updateAndSubmitTenDlcBrand(id, input)` submits it.
* **One shot:** `registerAndSubmitTenDlcBrand(input)` creates and submits in a single call.

```graphql
mutation ($input: TenDlcRegisterBrandInput!) {
  registerAndSubmitTenDlcBrand(input: $input) {
    id
    brandId
    displayName
    entityType
    status
  }
}
```

```json
{
  "input": {
    "companyId": "<your company id>",
    "tenDlcApiKeyId": "<id returned by addTenDlcApiKey>",
    "displayName": "Acme Metals",
    "companyName": "Acme Metals LLC",
    "entityType": "PRIVATE_PROFIT",
    "brandRelationship": "BASIC_ACCOUNT",
    "ein": "12-3456789",
    "einIssuingCountry": "US",
    "vertical": "PROFESSIONAL",
    "website": "https://acme-metals.example",
    "email": "compliance@acme-metals.example",
    "phone": "+14155551234",
    "street": "123 Main St",
    "city": "San Francisco",
    "state": "CA",
    "postalCode": "94105",
    "country": "US"
  }
}
```

The response `status` is `PENDING_REVIEW`; `brandId` is the TCR identifier (for example `BAXKPHB`). Poll `tenDlcBrand(id)` or list with `tenDlcBrands` until `status` is `ACTIVE`, then submit campaigns. `workflowStatus` (for example `VERIFIED`) reflects TCR's own verification workflow.

Allowed values for `entityType`, `brandRelationship`, `vertical` and the status enums are listed under [Enums](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/enums.md) in the API Reference.

## 3. Find and inspect brands

```graphql
query ($status: TenDlcBrandStatus, $ownershipType: TenDlcOwnershipType, $page: Int, $pageSize: Int) {
  tenDlcBrands(status: $status, ownershipType: $ownershipType, page: $page, pageSize: $pageSize) {
    page
    totalRecords
    records {
      id
      brandId
      displayName
      status
      workflowStatus
      ownershipType
    }
  }
}
```

10DLC lists use page-number pagination (`page`, `pageSize`, `totalRecords`) rather than the cursor style used elsewhere; see [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md). `tenDlcBrand(id)` returns one brand with its full address and contact fields. `deleteTenDlcBrand(id)` removes a brand from TNID.

## What to read next

* [10DLC Campaigns](https://support.tsgglobal.com/docs/tnid/10dlc/campaigns.md): describe the messaging use case and attach numbers.
* Webhooks: get notified instead of polling.
* API Reference: [all 23 10DLC operations](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc.md).

---

# 10DLC Campaigns

Source: https://support.tsgglobal.com/docs/tnid/10dlc/campaigns
Markdown: https://support.tsgglobal.com/docs/tnid/10dlc/campaigns.md
Last updated: 2025-09-12T18:17:09.814Z

Create, submit, update and monitor 10DLC campaigns through TNID, including submitting a campaign automatically once its brand is verified.

A campaign registers a messaging use case (marketing, customer care, 2FA and so on) under an `ACTIVE` [brand](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md). Numbers are attached to campaigns; carriers use the campaign to decide throughput and filtering.



> **Info**


All 10DLC operations are on the `/company` GraphQL server with a company token. Every operation is documented with request, variables and response in the [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc.md).



## Campaign lifecycle

| Status                 | Meaning                                                                   |
| ---------------------- | ------------------------------------------------------------------------- |
| `DRAFT`                | Saved in TNID, not sent to TCR.                                           |
| `PENDING`              | Submitted to TCR (or waiting for the brand to become `ACTIVE`).           |
| `ACTIVE`               | Approved. Numbers can be assigned.                                        |
| `ERROR`                | Submission failed. Fix and resubmit with `updateAndSubmitTenDlcCampaign`. |
| `EXPIRED`, `SUSPENDED` | No longer usable for traffic.                                             |

These are campaign statuses. Brand statuses are a different set (`PENDING_REVIEW` belongs to brands).

## Three ways to submit

| Mutation                                                                         | When to use it                                                                                                                       |
| -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `registerAndSubmitTenDlcCampaign(input)`                                         | The brand is already `ACTIVE`. Creates the campaign and submits it to TCR immediately.                                               |
| `registerTenDlcCampaignWhenReady(input)`                                         | The brand is still under review. TNID stores the campaign as `PENDING` and submits it automatically when the brand becomes `ACTIVE`. |
| `saveTenDlcCampaignAsDraft(input)` then `updateTenDlcCampaignAsDraft(id, input)` | You want to build the campaign up over time before submitting.                                                                       |

```graphql
mutation ($input: TenDlcRegisterCampaignInput!) {
  registerAndSubmitTenDlcCampaign(input: $input) {
    campaignId
    brandId
    usecase
    status
    description
    messageFlow
    autoRenewal
  }
}
```

```json
{
  "input": {
    "tenDlcApiKeyId": "<id returned by addTenDlcApiKey>",
    "internalBrandId": "<TNID id of the brand, from tenDlcBrands.records.id>",
    "usecase": "MARKETING",
    "description": "Promotions and product launches for opted-in customers",
    "messageFlow": "Customers opt in by texting JOIN to our number or ticking the box at checkout. They receive up to 4 messages a month.",
    "sample1": "Acme: Summer sale starts today. Show this text in store for 10% off. Reply STOP to opt out, HELP for help.",
    "subscriberOptin": true,
    "subscriberOptout": true,
    "subscriberHelp": true,
    "termsAndConditions": true,
    "nnid": "<your NNID, if you have one>",
    "resellerId": "<CSP reseller id, if applicable>"
  }
}
```

`campaignId` (for example `CZDFL35`) is the TCR identifier. `updateAndSubmitTenDlcCampaign(id, input)` changes a submitted campaign and re-syncs it with TCR, which is also the path after an `ERROR`. `deleteTenDlcCampaign(id)` removes it.

## Monitor campaigns and their numbers

```graphql
query ($brandId: String, $status: TenDlcCampaignStatus, $usecase: String, $page: Int, $pageSize: Int) {
  tenDlcCampaigns(brandId: $brandId, status: $status, usecase: $usecase, page: $page, pageSize: $pageSize) {
    page
    totalRecords
    records {
      id
      campaignId
      brandId
      usecase
      status
      workflowStatus
      autoRenewal
      ownershipType
    }
  }
}
```

`tenDlcCampaign(id)` returns the full record (message flow, opt-in/opt-out/help settings, expiration and billing dates). `tenDlcCampaignWithTelephoneNumbers(id)` adds the numbers attached to the campaign with their carrier workflow statuses (`osrWorkflowStatus`, `tmobileWorkflowStatus`), which is the quickest way to see whether a number is cleared to send.

## Sending traffic

TNID registers the campaign. Sending messages on the registered numbers happens through your messaging provider; on TSG Global, assign the campaign to a number with the `campaign_id` field of the [SMS enablement endpoint](https://support.tsgglobal.com/docs/api-reference/phone-numbers/manage-number-for-sms-and-10dlc/enable-sms-10dlc-on-a-number.md).

## What to read next

* [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md): the brand must be `ACTIVE` first.
* Webhooks: get notified instead of polling.
* API Reference: [all 23 10DLC operations](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc.md).

---

# Changelog

Source: https://support.tsgglobal.com/docs/tnid/changelog
Markdown: https://support.tsgglobal.com/docs/tnid/changelog.md

Dated log of changes to the TNID API and to this documentation.

Newest first. API entries reflect the schema published in the [API Reference](https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md), which is regenerated from the API source on every sync.

## 2026-09-11: documentation

* The generated schema reference now lives on this site under **API Reference**, with the same URL prefix for every operation. The old `tsg-global-inc.gitbook.io/tnid-docs-autogenerated` address still works.
* New guide pages: [API Quick Reference](https://support.tsgglobal.com/docs/tnid/api-quick-reference.md), [AI Assistants & MCP](https://support.tsgglobal.com/docs/tnid/ai-assistants-and-mcp.md), [Pagination](https://support.tsgglobal.com/docs/tnid/pagination.md), Webhooks, [10DLC Brands](https://support.tsgglobal.com/docs/tnid/10dlc/brands.md) and [10DLC Campaigns](https://support.tsgglobal.com/docs/tnid/10dlc/campaigns.md) (replacing the "Coming soon" placeholders).
* Environments corrected: the retired `api.demo.v2.tnid.com` host removed, the zero environment added. Getting Started rewritten. Refresh Token request body fixed. Wrong query on List Pending Subscription Requests fixed. `Json` scalar corrected to `JSON`. Empty code tabs removed. Descriptions added to every page.

## 2026-09-09: API schema sync

* API Reference regenerated from the `tnid-v2-api` repository. Compared with the guides on this site it adds cursor-paginated twins for every list query (`paginated…`), email-based OTP login, 10DLC API keys, brands and campaigns, company webhooks, documents and AI tasks, forms, notifications, CSV user imports, message sentiment analysis, RCS information and AI suggestions, invitation links, client-secret management, subscription topics, settings and dashboard queries, `globalSearch`, and the `askDocsQuestion` assistant mutation.

## 2025-11-05

* Last edit to the hand-written guides before the 2026-09-11 review.

---

# 001\_user

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user.md

- [Get authentication OTP via email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001__get_authentication_otp_via_email.md)
- [Authenticate As User Via Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002__authenticate_via_email.md)
- [Get authentication OTP via telephone number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003__get_authentication_otp_via_telephone_number.md)
- [Authenticate As User Via Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004__authenticate_via_telephone_number.md)
- [Refresh Authentication (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005__refresh_authentication_as_user.md)
- [001\_profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile.md)
- [Get User Profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/001__get_user_profile.md)
- [Update user profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/002__update_user_profile.md)
- [002\_email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email.md)
- [Create User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/001__create_user_email.md)
- [Create user email verification code](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/002__create_user_email_verification_code.md)
- [Verify User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/003__verify_user_email.md)
- [Set Primary User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/004__set_primary_user_email.md)
- [Update User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/005__update_user_email.md)
- [Remove User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/006__remove_user_email.md)
- [003\_address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address.md)
- [Create User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/001__create_user_address.md)
- [Update User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/002__update_user_address.md)
- [Remove User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/003__remove_user_address.md)
- [004\_telephone\_number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number.md)
- [Create User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/001__create_user_telephone_number.md)
- [Create user telephone number verification code](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/002__create_user_telephone_number_verification_code.md)
- [Verify User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/003__verify_user_telephone_number.md)
- [Set Primary User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/004__set_primary_user_telephone_number.md)
- [Update User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/005__update_user_telephone_number.md)
- [Remove User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/006__remove_user_telephone_number.md)
- [005\_c2c\_(user\_to\_user)\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections.md)
- [Create C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/001__create_c2c_connection_request.md)
- [List pending C2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/002__list_pending_c2c_connection_requests.md)
- [List Pending C2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/003__list_paginated_pending_c2c_connection_requests.md)
- [List received C2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/004__list_received_c2c_connection_requests.md)
- [List Received C2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/005__list_paginated_received_c2c_connection_requests.md)
- [Respond to a C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/006__respond_c2c_connection_request.md)
- [List C2C connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/007__list_c2c_connections.md)
- [List C2C connections (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/008__list_paginated_c2c_connections.md)
- [Revoke a C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/009__revoke_c2c_connection_request.md)
- [Remove a C2C connection](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/010__remove_c2c_connection.md)
- [Create C2C invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/011__create_c2c_invite.md)
- [006\_spam\_reporting](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting.md)
- [List spam reports](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/001__list_spam_reports.md)
- [List Spam Reports (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/002__list_paginated_spam_reports.md)
- [Create spam report](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/003__create_spam_report.md)
- [007\_groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups.md)
- [Search Groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/001__search_groups.md)
- [Get Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/002__get_group.md)
- [List User's Groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/003__list_users_groups.md)
- [List User Groups (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/004__list_paginated_user_groups.md)
- [List Group Members (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/005__list_user_group_members.md)
- [Create Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/006__create_group.md)
- [Update Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/007__update_group.md)
- [Leave Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/008__leave_group.md)
- [Update group member role](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/009__update_group_user_member_role.md)
- [Remove group member](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/010__remove_group_user_member.md)
- [Invite a user to join a group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/011__create_group_user_member_invite.md)
- [Respond to a group member invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/012__respond_group_user_member_invite.md)
- [List pending group member invites](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/013__list_pending_group_user_member_invites.md)
- [List Pending Group User Member Invites (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/014__list_paginated_pending_group_user_member_invites.md)
- [List received group member invites](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/015__list_received_group_user_member_invites.md)
- [List Received Group User Member Invites (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/016__list_paginated_received_group_user_member_invites.md)
- [Revoke a group member invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/017__revoke_group_user_member_invite.md)
- [Create a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/018__create_group_user_member_join_request.md)
- [List received group join requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/019__list_received_group_user_member_join_requests.md)
- [List Received Group User Member Join Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/020__list_paginated_received_group_user_member_join_requests.md)
- [List pending group join requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/021__list_pending_group_user_member_join_requests.md)
- [List Pending Group User Member Join Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/022__list_paginated_pending_group_user_member_join_requests.md)
- [Revoke a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/023__revoke_group_user_member_join_request.md)
- [Respond to a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/024__respond_group_user_member_join_request.md)
- [008\_c2b\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections.md)
- [Create C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/001__create_c2b_connection_request.md)
- [List pending C2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/002__list_pending_c2b_connection_requests.md)
- [List Pending C2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/003__list_paginated_pending_c2b_connection_requests.md)
- [List received B2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/004__list_received_b2c_connection_requests.md)
- [List Received B2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/005__list_paginated_received_b2c_connection_requests.md)
- [Respond to B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/006__respond_b2c_connection_request.md)
- [Revoke C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/007__revoke_c2b_connection_request.md)
- [Remove C2B connection](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/008__remove_c2b_connection.md)
- [List B2C connections (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/009__list_b2c_connections_as_user.md)
- [List B2C Connections (User, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/010__list_paginated_b2c_connections.md)
- [009\_subscriptions](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions.md)
- [Respond to B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/001__respond_b2c_subscription_request.md)
- [Remove B2C subscription (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/002__remove_b2c_subscription_as_user.md)
- [List B2C subscriptions (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/003__list_b2c_subscriptions_as_user.md)
- [List pending B2C subscription requests (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/004__list_pending_b2c_subscription_requests_as_user.md)
- [List Pending B2C Subscription Requests (User, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/005__list_paginated_pending_b2c_subscription_requests.md)
- [Upsert B2C subscription](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/006__upsert_b2c_subscription.md)
- [010\_company\_management](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management.md)
- [Create company](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/001__create_company.md)
- [Create company client secret](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/002__create_company_client_secret.md)
- [Delete Company](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/003__delete_company.md)
- [Set Up Invitation From Token](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/004__setup_invitation_from_token.md)
- [List Switchable Companies](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/005__list_switchable_companies.md)
- [011\_users\_and\_search](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search.md)
- [Get User](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/001__get_user.md)
- [Get User By Username](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/002__get_user_by_username.md)
- [Search For Users (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/003__search_for_users_as_user.md)
- [Global Search (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/004__global_search_as_user.md)
- [012\_documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents.md)
- [Prepare File Upload (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/001__prepare_file_upload_as_user.md)
- [Prepare document upload (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/002__prepare_document_upload_as_user.md)
- [Confirm Document Upload (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/003__confirm_document_upload_as_user.md)
- [Accept User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/004__accept_user_documents.md)
- [Get User Document](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/005__get_user_document.md)
- [List user documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/006__list_paginated_user_documents.md)
- [Update User Document](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/007__update_user_document.md)
- [Move User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/008__move_user_documents.md)
- [Delete User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/009__delete_user_documents.md)
- [Restore User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/010__restore_user_documents.md)
- [Permanently Delete User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/011__permanently_delete_user_documents.md)
- [Empty User Trash](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/012__empty_user_trash.md)
- [Ask A Question Of Your Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/013__ask_user_document_question.md)
- [Create User Folder](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/014__create_user_folder.md)
- [Update User Folder](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/015__update_user_folder.md)
- [Move User Folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/016__move_user_folders.md)
- [Delete User Folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/017__delete_user_folders.md)
- [List user folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/018__list_user_folders.md)
- [Create User Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/019__create_user_tag.md)
- [Delete User Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/020__delete_user_tag.md)
- [List User Tags](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/021__list_user_tags.md)
- [Add User Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/022__add_user_document_tag.md)
- [Remove User Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/023__remove_user_document_tag.md)
- [List User AI Tasks](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/024__list_paginated_user_ai_tasks.md)
- [Get One User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/025__get_user_ai_task.md)
- [List A User AI Task's Answers](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/026__list_paginated_user_ai_task_runs.md)
- [Create A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/027__create_user_ai_task.md)
- [Update A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/028__update_user_ai_task.md)
- [Run A User AI Task Again](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/029__run_user_ai_task.md)
- [Delete A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/030__delete_user_ai_task.md)
- [013\_notifications](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications.md)
- [List notifications (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/001__list_notifications_as_user.md)
- [Get Recent Notifications](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/002__get_recent_notifications.md)
- [Get Unread Notification Count (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/003__get_unread_notification_count_as_user.md)
- [Mark Notification As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/004__mark_notification_as_read.md)
- [Mark Notifications As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/005__mark_notifications_as_read.md)
- [Mark All Notifications As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/006__mark_all_notifications_as_read.md)
- [Get Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/007__get_notification_settings.md)
- [Update Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/008__update_notification_settings.md)
- [Get B2C Connection Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/009__get_b2c_connection_notification_settings.md)
- [Update B2C Connection Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/010__update_b2c_connection_notification_settings.md)
- [Get Group Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/011__get_group_notification_settings.md)
- [Update Group Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/012__update_group_notification_settings.md)
- [Get Notification](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/013__get_notification.md)
- [014\_forms](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms.md)
- [List Received Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/001__list_received_form_submission_requests.md)
- [List Received Form Submission Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/002__list_paginated_received_form_submission_requests.md)
- [Reject Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/003__reject_form_submission_request.md)
- [015\_account](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account.md)
- [Get Current User Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/001__get_current_user_settings.md)
- [Update user settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/002__update_user_settings.md)
- [Get Dashboard Stats](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/003__get_dashboard_stats.md)
- [Get Onboarding Status](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/004__get_onboarding_status.md)
- [Complete Onboarding Step](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/005__complete_onboarding_step.md)
- [Create Support Request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/006__create_support_request.md)
- [List Interests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/007__list_interests.md)
- [Get Pending Action Counts](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/008__get_pending_action_counts.md)
- [016\_assistant](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant.md)
- [Ask A Question About Using Tnid](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant/001__ask_docs_question_as_user.md)
- [017\_user\_events](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events.md)
- [Create user event](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/001__create_user_event.md)
- [List user events](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/002__list_user_events.md)

---

# Get authentication OTP via email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001__get_authentication_otp_via_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001__get_authentication_otp_via_email.md
Last updated: 2026-10-27T19:42:33.091Z

HTTP API `POST` `/auth/create-user-otp`

To start using the API as a user you need to have a registered user account. The first thing you need to do to authenticate is to request an OTP code, in this case we'll demonstrate it using an email.

If you are a partner company whose application signs users in through TNID, your backend can first mint a `branding_token` for this destination (`POST /auth/otp-branding-token`, authenticated as your company) and pass it here: the email then names your company as what the code is for, with TNID still named as the sender. Without a token the plain TNID message is sent. A token for another destination, an expired one, or a company without branding enabled is refused with a 400.

## Request

```json
{
  "email": "test1@email.com"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "expires_at": "2026-01-15T09:00:00.000000Z",
  "next_otp_at": "2026-01-15T09:00:01.000000",
  "otp_status": "OTP sent",
  "remaining_otp_attempts": 5
}
```

---

# Authenticate As User Via Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002__authenticate_via_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002__authenticate_via_email.md
Last updated: 2026-08-25T03:27:07.791Z

HTTP API `POST` `/auth/token`

To start using the API as a user you need to have a registered user account. And you need to get an OTP code sent to your email address.

## Request

```json
{
  "email": "test1@email.com",
  "otp_code": "2"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "access_token": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "refresh_token": "eyJERAMPLE.PAYLOAD2.SIGNATURE"
}
```

---

# Get authentication OTP via telephone number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003__get_authentication_otp_via_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003__get_authentication_otp_via_telephone_number.md
Last updated: 2026-10-27T19:42:33.091Z

HTTP API `POST` `/auth/create-user-otp`

To start using the API as a user you need to have a registered user account. The first thing you need to do to authenticate is to request an OTP code, in this case we'll demonstrate it using a telephone number.

If you are a partner company whose application signs users in through TNID, your backend can first mint a `branding_token` for this destination (`POST /auth/otp-branding-token`, authenticated as your company) and pass it here: the SMS then names your company as what the code is for, with TNID still named as the sender. Without a token the plain TNID message is sent. A token for another destination, an expired one, or a company without branding enabled is refused with a 400.

## Request

```json
{
  "telephone_number": "1"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "expires_at": "2026-01-15T09:00:00.000000Z",
  "next_otp_at": "2026-01-15T09:00:01.000000",
  "otp_status": "OTP sent",
  "remaining_otp_attempts": 5
}
```

---

# Authenticate As User Via Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004__authenticate_via_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004__authenticate_via_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

HTTP API `POST` `/auth/token`

To start using the API as a user you need to have a registered user account. And you need to get an OTP code sent to your phone number.

## Request

```json
{
  "otp_code": "1",
  "telephone_number": "2"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "access_token": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "refresh_token": "eyJERAMPLE.PAYLOAD2.SIGNATURE"
}
```

---

# Refresh Authentication (User)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005__refresh_authentication_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005__refresh_authentication_as_user.md
Last updated: 2026-08-25T03:27:07.791Z

HTTP API `POST` `/auth/refresh-token`

Access tokens have a limited lifetime, after which they expire and can no longer be used to access protected resources. To continue accessing these resources without requiring the user to re-authenticate, refresh tokens are used. A refresh token is a long-lived token that can be exchanged for a new access token.

## Request

```json
{
  "refresh_token": "eyJERAMPLE.PAYLOAD3.SIGNATURE"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "access_token": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "refresh_token": "eyJERAMPLE.PAYLOAD2.SIGNATURE"
}
```

---

# 001\_profile

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile.md
Last updated: 2026-09-09T03:10:23.000Z

- [Get User Profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/001__get_user_profile.md)
- [Update user profile](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/002__update_user_profile.md)

---

# Get User Profile

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/001__get_user_profile
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/001__get_user_profile.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Retrieves the authenticated user's own profile information.

## Query

```graphql
query {
  currentUser {
    id
    username
    documentRepositoryEmailAddress
    firstName
    middleName
    lastName
    birthdate
    aboutMe
    timezone
    metadata
    secretStorage
    addresses {
      city
      country
      state
      street
      types
      zipCode
      visibility
    }
    emails {
      email
      types
      visibility
    }
    telephoneNumbers {
      number
      types
      visibility
    }
    socialNetworks {
      type
      url
      visibility
    }
    webpages {
      type
      url
      visibility
    }
    interests {
      description
      title
    }
    nameVisibility
    aboutMeVisibility
    birthdateVisibility
    interestsVisibility
    timezoneVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "currentUser": {
      "aboutMe": "this is my generic intro",
      "aboutMeVisibility": [
        "PUBLIC"
      ],
      "addresses": [
        {
          "city": "test city",
          "country": "United States",
          "state": "Alabama",
          "street": "test street 1",
          "types": [
            "HOME"
          ],
          "visibility": [
            "PUBLIC"
          ],
          "zipCode": "12345"
        }
      ],
      "birthdate": "1990-01-15",
      "birthdateVisibility": [
        "PUBLIC"
      ],
      "documentRepositoryEmailAddress": "username2@parse.tnid.test",
      "emails": [
        {
          "email": "test3@email.com",
          "types": [
            "OTHER"
          ],
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "firstName": "1john",
      "id": "00000000-0000-4000-8000-000000000001",
      "interests": [
        {
          "description": null,
          "title": "Interest 4"
        }
      ],
      "interestsVisibility": [
        "PUBLIC"
      ],
      "lastName": "2doe",
      "metadata": {
        "test": "value"
      },
      "metadataVisibility": [
        "PUBLIC"
      ],
      "middleName": "ray",
      "nameVisibility": [
        "PUBLIC"
      ],
      "secretStorage": {},
      "socialNetworks": [
        {
          "type": "FACEBOOK",
          "url": "https://test-sm5.not",
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "telephoneNumbers": [
        {
          "number": "6",
          "types": [
            "OTHER"
          ],
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "timezone": "UTC",
      "timezoneVisibility": [
        "PUBLIC"
      ],
      "username": "username2",
      "webpages": [
        {
          "type": "WEBPAGE",
          "url": "https://test-webpage7.not",
          "visibility": [
            "PUBLIC"
          ]
        }
      ]
    }
  }
}
```

---

# Update user profile

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/002__update_user_profile
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/001_profile/002__update_user_profile.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Updates the user's profile information including basic details, contact information, and visibility settings. This mutation allows comprehensive updates to user profile data.

## Query

```graphql
mutation (
  $username: String
  $firstName: String
  $lastName: String
  $middleName: String
  $birthdate: Date
  $aboutMe: String
  $timezone: String
  $metadata: JSON
  $secretStorage: JSON
  $emails: [UserEmailInput]
  $telephoneNumbers: [UserTelephoneNumberInput!]
  $addresses: [UserAddressInput]
  $webpages: [UserWebpageInput]
  $socialNetworks: [UserSocialMediaInput]
  $userInterests: [ID]
  $nameVisibility: [UserVisibilityType!]
  $profileImageUrlVisibility: [UserVisibilityType!]
  $aboutMeVisibility: [UserVisibilityType!]
  $birthdateVisibility: [UserVisibilityType!]
  $interestsVisibility: [UserVisibilityType!]
  $timezoneVisibility: [UserVisibilityType!]
  $metadataVisibility: [UserVisibilityType!]
) {
  updateUser (
    username: $username
    firstName: $firstName
    lastName: $lastName
    middleName: $middleName
    birthdate: $birthdate
    aboutMe: $aboutMe
    timezone: $timezone
    metadata: $metadata
    secretStorage: $secretStorage
    emails: $emails
    telephoneNumbers: $telephoneNumbers
    addresses: $addresses
    webpages: $webpages
    socialNetworks: $socialNetworks
    userInterests: $userInterests
    nameVisibility: $nameVisibility
    profileImageUrlVisibility: $profileImageUrlVisibility
    aboutMeVisibility: $aboutMeVisibility
    birthdateVisibility: $birthdateVisibility
    interestsVisibility: $interestsVisibility
    timezoneVisibility: $timezoneVisibility
    metadataVisibility: $metadataVisibility
  ) {
    id
    metadata
    secretStorage
  }
}

```

## Variables

```json
{
  "aboutMe": "updated about me",
  "aboutMeVisibility": [
    "FAMILY"
  ],
  "addresses": [
    {
      "city": "test city",
      "country": "United States",
      "state": "Alabama",
      "street": "test street 3",
      "types": [
        "WORK"
      ],
      "visibility": [
        "FAMILY"
      ],
      "zipCode": "12345"
    },
    {
      "city": "test city",
      "country": "United States",
      "state": "Alabama",
      "street": "test street 4",
      "types": [
        "WORK"
      ],
      "visibility": [
        "FAMILY"
      ],
      "zipCode": "12345"
    }
  ],
  "birthdate": "2000-01-01",
  "birthdateVisibility": [
    "FAMILY"
  ],
  "emails": [
    {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000002",
      "types": [
        "WORK"
      ],
      "visibility": [
        "FAMILY"
      ]
    },
    {
      "email": "test2@email.com",
      "types": [
        "WORK"
      ],
      "visibility": [
        "FAMILY"
      ]
    }
  ],
  "firstName": "updated-first_name",
  "interestsVisibility": [
    "FAMILY"
  ],
  "lastName": "updated-last_name",
  "metadata": {
    "test": "updated-value"
  },
  "metadataVisibility": [
    "FAMILY"
  ],
  "middleName": "updated-middle_name",
  "nameVisibility": [
    "FAMILY"
  ],
  "profileImageUrlVisibility": [
    "FAMILY"
  ],
  "socialNetworks": [
    {
      "type": "FACEBOOK",
      "url": "https://test-sm9.not",
      "visibility": [
        "FAMILY"
      ]
    },
    {
      "type": "FACEBOOK",
      "url": "https://test-sm10.not",
      "visibility": [
        "FAMILY"
      ]
    }
  ],
  "telephoneNumbers": [
    {
      "country_code": "1",
      "id": "00000000-0000-4000-8000-000000000003",
      "number": "7",
      "types": [
        "WORK"
      ],
      "visibility": [
        "FAMILY"
      ]
    },
    {
      "country_code": "1",
      "number": "8",
      "types": [
        "WORK"
      ],
      "visibility": [
        "FAMILY"
      ]
    }
  ],
  "timezone": "Asia/Phnom_Penh",
  "timezoneVisibility": [
    "FAMILY"
  ],
  "userInterests": [
    "00000000-0000-4000-8000-000000000004"
  ],
  "username": "updated-username",
  "webpages": [
    {
      "type": "WEBPAGE",
      "url": "https://test-webpage5.not",
      "visibility": [
        "FAMILY"
      ]
    },
    {
      "type": "WEBPAGE",
      "url": "https://test-webpage6.not",
      "visibility": [
        "FAMILY"
      ]
    }
  ]
}
```

## Response

```json
{
  "data": {
    "updateUser": {
      "id": "00000000-0000-4000-8000-000000000001",
      "metadata": {
        "test": "updated-value"
      },
      "secretStorage": {}
    }
  }
}
```

---

# 002\_email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/001__create_user_email.md)
- [Create user email verification code](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/002__create_user_email_verification_code.md)
- [Verify User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/003__verify_user_email.md)
- [Set Primary User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/004__set_primary_user_email.md)
- [Update User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/005__update_user_email.md)
- [Remove User Email](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/006__remove_user_email.md)

---

# Create User Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/001__create_user_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/001__create_user_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Creates a new email address for the user. The email is added to the user's profile with the specified types and visibility settings. The email starts as unverified.

## Query

```graphql
mutation (
  $email: String!
  $types: [UserEmailType!]
  $visibility: [UserVisibilityType!]
) {
  createUserEmail (
    email: $email
    types: $types
    visibility: $visibility
  ) {
    id
    email
    types
    visibility
  }
}

```

## Variables

```json
{
  "email": "test1@email.com",
  "types": [
    "HOME"
  ],
  "visibility": [
    "FAMILY"
  ]
}
```

## Response

```json
{
  "data": {
    "createUserEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "types": [
        "HOME"
      ],
      "visibility": [
        "FAMILY"
      ]
    }
  }
}
```

---

# Create user email verification code

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/002__create_user_email_verification_code
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/002__create_user_email_verification_code.md
Last updated: 2026-10-27T19:42:33.091Z

GraphQL endpoint: `/user`

Generates a verification code (OTP) for an unverified email address. The verification code will be sent to the email address and can be used to verify ownership.

A partner company whose application the user is in can pass a `brandingToken` its backend minted (`POST /auth/otp-branding-token`, bound to this user or to the destination): the email then names that company as what the code is for. Without it the plain TNID message is sent.

## Query

```graphql
mutation (
  $emailId: ID!
) {
  createUserEmailVerificationCode (
    emailId: $emailId
  ) {
    expiresAt
    remainingOtpAttempts
    nextOtpAt
    otpStatus
  }
}

```

## Variables

```json
{
  "emailId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "createUserEmailVerificationCode": {
      "expiresAt": "2026-01-15T09:00:00.000000",
      "nextOtpAt": "2026-01-15T09:00:01.000000",
      "otpStatus": "OTP sent",
      "remainingOtpAttempts": 5
    }
  }
}
```

---

# Verify User Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/003__verify_user_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/003__verify_user_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Verifies a user's email address using the verification code (OTP) that was sent to the email. Once verified, the email address status changes to verified and can be set as primary.

## Query

```graphql
mutation (
  $emailId: ID!
  $code: String!
) {
  verifyUserEmail (
    emailId: $emailId
    code: $code
  ) {
    status
  }
}

```

## Variables

```json
{
  "code": "1",
  "emailId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "verifyUserEmail": {
      "status": "OK"
    }
  }
}
```

---

# Set Primary User Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/004__set_primary_user_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/004__set_primary_user_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Sets a verified email address as the primary email for the user. The primary email is used as the main contact email for the account. Only one email can be primary at a time, and only verified emails can be set as primary.

## Query

```graphql
mutation (
  $id: ID!
) {
  setPrimaryUserEmail (
    id: $id
  ) {
    id
    email
    types
    primary
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "setPrimaryUserEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "primary": true,
      "types": [
        "OTHER"
      ]
    }
  }
}
```

---

# Update User Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/005__update_user_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/005__update_user_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates the types and visibility settings of an existing user email. The email address itself cannot be changed, only its metadata like types and visibility.

## Query

```graphql
mutation (
  $id: ID!
  $types: [UserEmailType!]
  $visibility: [UserVisibilityType!]
) {
  updateUserEmail (
    id: $id
    types: $types
    visibility: $visibility
  ) {
    id
    email
    types
    visibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "types": [
    "HOME"
  ],
  "visibility": [
    "FAMILY"
  ]
}
```

## Response

```json
{
  "data": {
    "updateUserEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "types": [
        "HOME"
      ],
      "visibility": [
        "FAMILY"
      ]
    }
  }
}
```

---

# Remove User Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/006__remove_user_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/002_email/006__remove_user_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Removes an email address from the user's profile. Note: The primary email cannot be removed. You must first set a different email as primary before removing the current primary email.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeUserEmail (
    id: $id
  ) {
    id
    email
    types
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeUserEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "types": [
        "OTHER"
      ]
    }
  }
}
```

---

# 003\_address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/001__create_user_address.md)
- [Update User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/002__update_user_address.md)
- [Remove User Address](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/003__remove_user_address.md)

---

# Create User Address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/001__create_user_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/001__create_user_address.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Creates a new address for the user. The address can be tagged with types (e.g., HOME, WORK) and visibility settings to control who can see this information.

## Query

```graphql
mutation (
  $street: String!
  $city: String!
  $zipCode: String!
  $state: String
  $country: String!
  $types: [UserAddressType!]
  $visibility: [UserVisibilityType!]
) {
  createUserAddress (
    street: $street
    city: $city
    zipCode: $zipCode
    state: $state
    country: $country
    types: $types
    visibility: $visibility
  ) {
    id
    city
    country
    state
    street
    zipCode
    types
    visibility
  }
}

```

## Variables

```json
{
  "city": "test city",
  "country": "United States",
  "state": "Alabama",
  "street": "test street 1",
  "types": [
    "HOME"
  ],
  "visibility": [
    "FAMILY"
  ],
  "zipCode": "12345"
}
```

## Response

```json
{
  "data": {
    "createUserAddress": {
      "city": "test city",
      "country": "United States",
      "id": "00000000-0000-4000-8000-000000000001",
      "state": "Alabama",
      "street": "test street 1",
      "types": [
        "HOME"
      ],
      "visibility": [
        "FAMILY"
      ],
      "zipCode": "12345"
    }
  }
}
```

---

# Update User Address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/002__update_user_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/002__update_user_address.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates an existing address for the user. You can modify the address details, types, and visibility settings.

## Query

```graphql
mutation (
  $id: ID!
  $street: String
  $city: String
  $zipCode: String
  $state: String
  $country: String
  $types: [UserAddressType!]
  $visibility: [UserVisibilityType!]
) {
  updateUserAddress (
    id: $id
    street: $street
    city: $city
    zipCode: $zipCode
    state: $state
    country: $country
    types: $types
    visibility: $visibility
  ) {
    id
    city
    country
    state
    street
    zipCode
    types
    visibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "types": [
    "HOME"
  ],
  "visibility": [
    "FAMILY"
  ]
}
```

## Response

```json
{
  "data": {
    "updateUserAddress": {
      "city": "test city",
      "country": "United States",
      "id": "00000000-0000-4000-8000-000000000001",
      "state": "Alabama",
      "street": "test street 1",
      "types": [
        "HOME"
      ],
      "visibility": [
        "FAMILY"
      ],
      "zipCode": "12345"
    }
  }
}
```

---

# Remove User Address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/003__remove_user_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/003_address/003__remove_user_address.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Removes an address from the user's profile. This permanently deletes the address record.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeUserAddress (
    id: $id
  ) {
    id
    city
    country
    state
    street
    zipCode
    types
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeUserAddress": {
      "city": "test city",
      "country": "United States",
      "id": "00000000-0000-4000-8000-000000000001",
      "state": "Alabama",
      "street": "test street 1",
      "types": [
        "HOME"
      ],
      "zipCode": "12345"
    }
  }
}
```

---

# 004\_telephone\_number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/001__create_user_telephone_number.md)
- [Create user telephone number verification code](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/002__create_user_telephone_number_verification_code.md)
- [Verify User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/003__verify_user_telephone_number.md)
- [Set Primary User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/004__set_primary_user_telephone_number.md)
- [Update User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/005__update_user_telephone_number.md)
- [Remove User Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/006__remove_user_telephone_number.md)

---

# Create User Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/001__create_user_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/001__create_user_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Creates a new telephone number for the user. The telephone number will be added to the user's profile with the specified types and visibility settings. The telephone number starts as unverified.

## Query

```graphql
mutation (
  $number: String!
  $countryCode: String!
  $types: [UserTelephoneNumberType!]
  $visibility: [UserVisibilityType!]
) {
  createUserTelephoneNumber (
    number: $number
    countryCode: $countryCode
    types: $types
    visibility: $visibility
  ) {
    id
    number
    types
    visibility
  }
}

```

## Variables

```json
{
  "countryCode": "1",
  "number": "1",
  "types": [
    "HOME"
  ],
  "visibility": [
    "FAMILY"
  ]
}
```

## Response

```json
{
  "data": {
    "createUserTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "11",
      "types": [
        "HOME"
      ],
      "visibility": [
        "FAMILY"
      ]
    }
  }
}
```

---

# Create user telephone number verification code

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/002__create_user_telephone_number_verification_code
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/002__create_user_telephone_number_verification_code.md
Last updated: 2026-10-27T19:42:33.091Z

GraphQL endpoint: `/user`

Generates a verification code (OTP) for an unverified telephone number. The verification code will be sent via SMS to the telephone number and can be used to verify ownership.

A partner company whose application the user is in can pass a `brandingToken` its backend minted (`POST /auth/otp-branding-token`, bound to this user or to the destination): the SMS then names that company as what the code is for. Without it the plain TNID message is sent.

## Query

```graphql
mutation (
  $telephoneNumberId: ID!
) {
  createUserTelephoneNumberVerificationCode (
    telephoneNumberId: $telephoneNumberId
  ) {
    expiresAt
    remainingOtpAttempts
    nextOtpAt
    otpStatus
  }
}

```

## Variables

```json
{
  "telephoneNumberId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "createUserTelephoneNumberVerificationCode": {
      "expiresAt": "2026-01-15T09:00:00.000000",
      "nextOtpAt": "2026-01-15T09:00:01.000000",
      "otpStatus": "OTP sent",
      "remainingOtpAttempts": 5
    }
  }
}
```

---

# Verify User Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/003__verify_user_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/003__verify_user_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Verifies a user's telephone number using the verification code (OTP) that was sent via SMS. Once verified, the telephone number status changes to verified and can be set as primary.

## Query

```graphql
mutation (
  $telephoneNumberId: ID!
  $code: String!
) {
  verifyUserTelephoneNumber (
    telephoneNumberId: $telephoneNumberId
    code: $code
  ) {
    status
  }
}

```

## Variables

```json
{
  "code": "1",
  "telephoneNumberId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "verifyUserTelephoneNumber": {
      "status": "OK"
    }
  }
}
```

---

# Set Primary User Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/004__set_primary_user_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/004__set_primary_user_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Sets a verified telephone number as the primary telephone number for the user. The primary telephone number is used as the main contact number for the account. Only one telephone number can be primary at a time, and only verified numbers can be set as primary.

## Query

```graphql
mutation (
  $id: ID!
) {
  setPrimaryUserTelephoneNumber (
    id: $id
  ) {
    id
    number
    types
    primary
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "setPrimaryUserTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "1",
      "primary": true,
      "status": "VERIFIED",
      "types": [
        "OTHER"
      ]
    }
  }
}
```

---

# Update User Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/005__update_user_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/005__update_user_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates the types and visibility settings of an existing user telephone number. The telephone number itself cannot be changed, only its metadata like types and visibility.

## Query

```graphql
mutation (
  $id: ID!
  $types: [UserTelephoneNumberType!]
  $visibility: [UserVisibilityType!]
) {
  updateUserTelephoneNumber (
    id: $id
    types: $types
    visibility: $visibility
  ) {
    id
    number
    types
    visibility
    primary
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "types": [
    "HOME"
  ],
  "visibility": [
    "FAMILY"
  ]
}
```

## Response

```json
{
  "data": {
    "updateUserTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "1",
      "primary": true,
      "status": "VERIFIED",
      "types": [
        "HOME"
      ],
      "visibility": [
        "FAMILY"
      ]
    }
  }
}
```

---

# Remove User Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/006__remove_user_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/004_telephone_number/006__remove_user_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Removes a telephone number from the user's profile. Note: The primary telephone number cannot be removed. You must first set a different number as primary before removing the current primary telephone number.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeUserTelephoneNumber (
    id: $id
  ) {
    id
    number
    types
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeUserTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "1",
      "types": [
        "OTHER"
      ]
    }
  }
}
```

---

# 005\_c2c\_(user\_to\_user)\_connections

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/001__create_c2c_connection_request.md)
- [List pending C2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/002__list_pending_c2c_connection_requests.md)
- [List Pending C2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/003__list_paginated_pending_c2c_connection_requests.md)
- [List received C2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/004__list_received_c2c_connection_requests.md)
- [List Received C2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/005__list_paginated_received_c2c_connection_requests.md)
- [Respond to a C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/006__respond_c2c_connection_request.md)
- [List C2C connections](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/007__list_c2c_connections.md)
- [List C2C connections (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/008__list_paginated_c2c_connections.md)
- [Revoke a C2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/009__revoke_c2c_connection_request.md)
- [Remove a C2C connection](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/010__remove_c2c_connection.md)
- [Create C2C invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/011__create_c2c_invite.md)

---

# Create C2C connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/001__create_c2c_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/001__create_c2c_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Creates a connection request to another user with the given connection type (FRIEND, FAMILY, PROFESSIONAL or OTHER). The request stays PENDING until the invited user responds.

## Query

```graphql
mutation (
  $invitedUserId: ID!
  $connectionType: C2cConnectionType!
) {
  createC2cConnectionRequest (
    invitedUserId: $invitedUserId
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionType": "PROFESSIONAL",
  "invitedUserId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "createC2cConnectionRequest": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "PROFESSIONAL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# List pending C2C connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/002__list_pending_c2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/002__list_pending_c2c_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all pending connection requests sent by the current user. Supports filtering by connection type (includedType/excludedType) and by invitedUserId.

## Query

```graphql
query (
  $invitedUserId: ID
  $includedType: C2cConnectionType
  $excludedType: C2cConnectionType
  $limit: Int
) {
  pendingC2cConnectionRequests (
    invitedUserId: $invitedUserId
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingC2cConnectionRequests": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000004",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000007"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000009"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000010",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000013"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000015"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000019"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000021"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      }
    ]
  }
}
```

---

# List Pending C2C Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/003__list_paginated_pending_c2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/003__list_paginated_pending_c2c_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the connection requests the calling user has sent to other users that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingC2cConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      invitedUser {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingC2cConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "invitedUser": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "invitedUser": {
            "id": "00000000-0000-4000-8000-000000000004"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000005",
          "invitedUser": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "status": "PENDING",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# List received C2C connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/004__list_received_c2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/004__list_received_c2c_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all pending connection requests received by the current user. Supports filtering by connection type (includedType/excludedType) and by invitingUserId.

## Query

```graphql
query (
  $invitingUserId: ID
  $includedType: C2cConnectionType
  $excludedType: C2cConnectionType
  $limit: Int
) {
  receivedC2cConnectionRequests (
    invitingUserId: $invitingUserId
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedC2cConnectionRequests": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000004",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000005"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000009"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000010",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000011"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000015"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000017"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000021"
        }
      }
    ]
  }
}
```

---

# List Received C2C Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/005__list_paginated_received_c2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/005__list_paginated_received_c2c_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the connection requests other users have sent to the calling user that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedReceivedC2cConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      user {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedC2cConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "status": "PENDING",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000002"
          }
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "status": "PENDING",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        },
        {
          "id": "00000000-0000-4000-8000-000000000005",
          "status": "PENDING",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000006"
          }
        }
      ]
    }
  }
}
```

---

# Respond to a C2C connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/006__respond_c2c_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/006__respond_c2c_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Responds to a connection request received from another user with ACCEPTED or REJECTED. Accepting creates a C2C connection between the two users.

## Query

```graphql
mutation (
  $requestId: ID!
  $response: ConnectionRequestResponse!
) {
  respondC2cConnectionRequest (
    requestId: $requestId
    response: $response
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000001",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondC2cConnectionRequest": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "ACCEPTED",
      "type": "PROFESSIONAL",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# List C2C connections

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/007__list_c2c_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/007__list_c2c_connections.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all established C2C connections for the current user, whether they initiated the connection or were invited. Supports filtering by connection type (includedType/excludedType).

## Query

```graphql
query (
  $includedType: C2cConnectionType
  $excludedType: C2cConnectionType
  $limit: Int
) {
  c2cConnections (
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    type
    insertedAt
    updatedAt
    startedAt
    user {
      id
      firstName
    }
    connectedUser {
      id
      firstName
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "c2cConnections": [
      {
        "connectedUser": {
          "firstName": "1john",
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "connectedUser": {
          "firstName": "3john",
          "id": "00000000-0000-4000-8000-000000000004"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "connectedUser": {
          "firstName": "4john",
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "id": "00000000-0000-4000-8000-000000000007",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "connectedUser": {
          "firstName": "5john",
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "connectedUser": {
          "firstName": "6john",
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "connectedUser": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "firstName": "7john",
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "connectedUser": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "firstName": "8john",
          "id": "00000000-0000-4000-8000-000000000015"
        }
      },
      {
        "connectedUser": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "firstName": "9john",
          "id": "00000000-0000-4000-8000-000000000017"
        }
      },
      {
        "connectedUser": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "firstName": "10john",
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "connectedUser": {
          "firstName": "2john",
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "firstName": "11john",
          "id": "00000000-0000-4000-8000-000000000021"
        }
      }
    ]
  }
}
```

---

# List C2C connections (paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/008__list_paginated_c2c_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/008__list_paginated_c2c_connections.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Lists the calling user's connections to other users, regardless of which side initiated the connection. Results can be filtered by connection type (`includedTypes`) or by the other party's name (`userName`), and are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query (
  $includedTypes: [C2cConnectionType!]
  $userName: String
  $limit: Int
  $cursor: String
) {
  paginatedC2cConnections (
    includedTypes: $includedTypes
    userName: $userName
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      user {
        id
      }
      connectedUser {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedC2cConnections": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "connectedUser": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "connectedUser": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000005"
          }
        },
        {
          "connectedUser": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "id": "00000000-0000-4000-8000-000000000007",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000001"
          }
        },
        {
          "connectedUser": {
            "id": "00000000-0000-4000-8000-000000000008"
          },
          "id": "00000000-0000-4000-8000-000000000009",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000001"
          }
        }
      ]
    }
  }
}
```

---

# Revoke a C2C connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/009__revoke_c2c_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/009__revoke_c2c_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Revokes a pending connection request that was previously sent. This removes the request before the invited user responds.

## Query

```graphql
mutation (
  $requestId: ID!
) {
  revokeC2cConnectionRequest (
    requestId: $requestId
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    invitedUser {
      id
    }
    user {
      id
    }

  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "revokeC2cConnectionRequest": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "REVOKED",
      "type": "PROFESSIONAL",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# Remove a C2C connection

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/010__remove_c2c_connection
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/010__remove_c2c_connection.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Removes an established C2C connection, ending the connection between the two users. Either user in the connection can remove it.

## Query

```graphql
mutation (
  $connectionId: ID!
) {
  removeC2cConnection (
    connectionId: $connectionId
  ) {
    id
    type
    insertedAt
    updatedAt
    startedAt
    user {
      id
    }
    connectedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "removeC2cConnection": {
      "connectedUser": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "startedAt": null,
      "type": "PROFESSIONAL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# Create C2C invite

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/011__create_c2c_invite
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/005_c2c_-user_to_user-_connections/011__create_c2c_invite.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Invites a person who is not on the platform yet: creates a new user account from the given info and sends them a connection request. Set sendInviteEmail to false to skip the invitation email.

## Query

```graphql
mutation (
  $user: InviteUserInput!
  $connectionType: C2cConnectionType!
) {
  createC2cInvite (
    user: $user
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedUser {
      id
      username
    }
  }
}

```

## Variables

```json
{
  "connectionType": "PROFESSIONAL",
  "user": {
    "email": "test1@email.com",
    "firstName": "1john",
    "lastName": "2doe",
    "metadata": {
      "test": "value"
    },
    "sendInviteEmail": true,
    "telephoneNumber": "2"
  }
}
```

## Response

```json
{
  "data": {
    "createC2cInvite": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000002",
        "username": "1john-2doe-i97t"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "PROFESSIONAL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# 006\_spam\_reporting

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting.md
Last updated: 2026-09-09T03:10:23.000Z

- [List spam reports](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/001__list_spam_reports.md)
- [List Spam Reports (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/002__list_paginated_spam_reports.md)
- [Create spam report](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/003__create_spam_report.md)

---

# List spam reports

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/001__list_spam_reports
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/001__list_spam_reports.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists spam reports that have been submitted to the platform. You can filter by:

* `channelType`: Filter by communication channel
* `issueType`: Filter by the type of issue
* `includedStatus`: Only include reports with this status
* `excludedStatus`: Exclude reports with this status
* `limit`: Limit the number of results returned

Channel types can be:

* SMS
* MMS
* RCS
* VOICE
* EMAIL
* OTHER

Issue types can be:

* SPAM
* FRAUD
* SCAM
* HARASSMENT
* ILLEGAL\_CONTENT

Statuses can be:

* SUBMITTED
* PROCESSING
* ESCALATED
* CLOSED
* REJECTED

This allows users to review their spam reports and track their status.

## Query

```graphql
query (
  $channelType: SpamReportChannelType
  $issueType: SpamReportIssueType
  $includedStatus: SpamReportStatus
  $excludedStatus: SpamReportStatus
  $limit: Int
) {
  spamReports (
    channelType: $channelType
    issueType: $issueType
    includedStatus: $includedStatus
    excludedStatus: $excludedStatus
    limit: $limit
  ) {
    id
    fromNumber
    toNumber
    userNote
    messageContent
    channelType
    issueType
    status
    createdAt
    updatedAt
    timestamp
    metadata
    user {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "spamReports": [
      {
        "channelType": "SMS",
        "createdAt": null,
        "fromNumber": "213456",
        "id": "00000000-0000-4000-8000-000000000001",
        "issueType": "SPAM",
        "messageContent": "message content",
        "metadata": {
          "different": "metadata"
        },
        "status": "SUBMITTED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "toNumber": "1",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "userNote": "user note"
      },
      {
        "channelType": "SMS",
        "createdAt": null,
        "fromNumber": "213457",
        "id": "00000000-0000-4000-8000-000000000003",
        "issueType": "SPAM",
        "messageContent": "message content",
        "metadata": {
          "different": "metadata"
        },
        "status": "SUBMITTED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "toNumber": "2",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "userNote": "user note"
      },
      {
        "channelType": "SMS",
        "createdAt": null,
        "fromNumber": "213458",
        "id": "00000000-0000-4000-8000-000000000004",
        "issueType": "SPAM",
        "messageContent": "message content",
        "metadata": {
          "different": "metadata"
        },
        "status": "SUBMITTED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "toNumber": "3",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "userNote": "user note"
      },
      {
        "channelType": "SMS",
        "createdAt": null,
        "fromNumber": "213459",
        "id": "00000000-0000-4000-8000-000000000005",
        "issueType": "SPAM",
        "messageContent": "message content",
        "metadata": {
          "different": "metadata"
        },
        "status": "SUBMITTED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "toNumber": "4",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "userNote": "user note"
      },
      {
        "channelType": "SMS",
        "createdAt": null,
        "fromNumber": "2134510",
        "id": "00000000-0000-4000-8000-000000000006",
        "issueType": "SPAM",
        "messageContent": "message content",
        "metadata": {
          "different": "metadata"
        },
        "status": "SUBMITTED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "toNumber": "5",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "userNote": "user note"
      }
    ]
  }
}
```

---

# List Spam Reports (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/002__list_paginated_spam_reports
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/002__list_paginated_spam_reports.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the calling user's spam reports, most recent first, optionally filtered by channel type and status. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($channelType: SpamReportChannelType, $includedStatus: SpamReportStatus, $limit: Int, $cursor: String) {
  paginatedSpamReports(
    channelType: $channelType
    includedStatus: $includedStatus
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      channelType
      status
      user {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedSpamReports": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "channelType": "SMS",
          "id": "00000000-0000-4000-8000-000000000001",
          "status": "SUBMITTED",
          "user": {
            "id": "00000000-0000-4000-8000-000000000002"
          }
        },
        {
          "channelType": "SMS",
          "id": "00000000-0000-4000-8000-000000000003",
          "status": "SUBMITTED",
          "user": {
            "id": "00000000-0000-4000-8000-000000000002"
          }
        },
        {
          "channelType": "SMS",
          "id": "00000000-0000-4000-8000-000000000004",
          "status": "SUBMITTED",
          "user": {
            "id": "00000000-0000-4000-8000-000000000002"
          }
        }
      ]
    }
  }
}
```

---

# Create spam report

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/003__create_spam_report
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/006_spam_reporting/003__create_spam_report.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Creates a spam report to report unwanted or malicious communications.

Required fields:

* `channelType`: The communication channel (SMS, MMS, RCS, VOICE, EMAIL, OTHER)

Optional fields:

* `source`: The source/origin of the communication
* `destination`: The destination of the communication
* `fromNumber`: Deprecated - use `source` instead
* `toNumber`: Deprecated - use `destination` instead
* `reportedAt`: When the report was created
* `timestamp`: Deprecated - use `reportedAt` instead
* `issueType`: Type of issue (SPAM, FRAUD, SCAM, HARASSMENT, ILLEGAL\_CONTENT)
* `userNote`: User's description of the issue
* `messageContent`: Content of the message being reported
* `metadata`: Additional metadata as key-value pairs (flat structure only)

The report is created with status SUBMITTED and can be tracked using the spamReports query.

## Query

```graphql
mutation (
  $source: String
  $fromNumber: String
  $destination: String
  $toNumber: String
  $channelType: SpamReportChannelType!
  $reportedAt: NaiveDateTime
  $timestamp: NaiveDateTime
  $issueType: SpamReportIssueType
  $userNote: String
  $messageContent: String
  $metadata: JSON
) {
  createSpamReport (
    source: $source
    fromNumber: $fromNumber
    destination: $destination
    toNumber: $toNumber
    channelType: $channelType
    reportedAt: $reportedAt
    timestamp: $timestamp
    issueType: $issueType
    userNote: $userNote
    messageContent: $messageContent
    metadata: $metadata
  ) {
    id
    source
    fromNumber
    destination
    toNumber
    userNote
    messageContent
    channelType
    issueType
    status
    createdAt
    updatedAt
    reportedAt
    timestamp
    metadata
    user {
      id
    }
  }
}

```

## Variables

```json
{
  "channelType": "RCS",
  "destination": "1",
  "issueType": "SCAM",
  "messageContent": "message content",
  "metadata": {
    "test": "value"
  },
  "reportedAt": "2024-10-04 02:52:00",
  "source": "213450",
  "userNote": "user note"
}
```

## Response

```json
{
  "data": {
    "createSpamReport": {
      "channelType": "RCS",
      "createdAt": null,
      "destination": "1",
      "fromNumber": "213450",
      "id": "00000000-0000-4000-8000-000000000001",
      "issueType": "SCAM",
      "messageContent": "message content",
      "metadata": {
        "test": "value"
      },
      "reportedAt": "2026-01-15T09:00:00.000000",
      "source": "213450",
      "status": "SUBMITTED",
      "timestamp": "2026-01-15T09:00:00.000000",
      "toNumber": "1",
      "updatedAt": "2026-01-15T09:00:01.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "userNote": "user note"
    }
  }
}
```

---

# 007\_groups

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups.md
Last updated: 2026-09-09T03:10:23.000Z

- [Search Groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/001__search_groups.md)
- [Get Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/002__get_group.md)
- [List User's Groups](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/003__list_users_groups.md)
- [List User Groups (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/004__list_paginated_user_groups.md)
- [List Group Members (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/005__list_user_group_members.md)
- [Create Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/006__create_group.md)
- [Update Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/007__update_group.md)
- [Leave Group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/008__leave_group.md)
- [Update group member role](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/009__update_group_user_member_role.md)
- [Remove group member](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/010__remove_group_user_member.md)
- [Invite a user to join a group](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/011__create_group_user_member_invite.md)
- [Respond to a group member invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/012__respond_group_user_member_invite.md)
- [List pending group member invites](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/013__list_pending_group_user_member_invites.md)
- [List Pending Group User Member Invites (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/014__list_paginated_pending_group_user_member_invites.md)
- [List received group member invites](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/015__list_received_group_user_member_invites.md)
- [List Received Group User Member Invites (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/016__list_paginated_received_group_user_member_invites.md)
- [Revoke a group member invite](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/017__revoke_group_user_member_invite.md)
- [Create a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/018__create_group_user_member_join_request.md)
- [List received group join requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/019__list_received_group_user_member_join_requests.md)
- [List Received Group User Member Join Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/020__list_paginated_received_group_user_member_join_requests.md)
- [List pending group join requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/021__list_pending_group_user_member_join_requests.md)
- [List Pending Group User Member Join Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/022__list_paginated_pending_group_user_member_join_requests.md)
- [Revoke a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/023__revoke_group_user_member_join_request.md)
- [Respond to a group join request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/024__respond_group_user_member_join_request.md)

---

# Search Groups

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/001__search_groups
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/001__search_groups.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Search for groups. This returns only the groups the user can see, public groups or the groups the user is a member of.

## Query

```graphql
query (
  $name: String
  $limit: Int
  $metadata: JSON
) {
  groups (
    name: $name
    limit: $limit
    metadata: $metadata
  ) {
    id
    name
    metadata
    logo_url
    visibility
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "groups": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "logo_url": "logo_url",
        "metadata": {
          "test": "value"
        },
        "name": "test group",
        "visibility": [
          "PUBLIC"
        ]
      },
      {
        "id": "00000000-0000-4000-8000-000000000002",
        "logo_url": "logo_url",
        "metadata": {
          "test": "value"
        },
        "name": "test group",
        "visibility": [
          "PUBLIC"
        ]
      },
      {
        "id": "00000000-0000-4000-8000-000000000003",
        "logo_url": "logo_url",
        "metadata": {
          "test": "value"
        },
        "name": "test group",
        "visibility": [
          "PUBLIC"
        ]
      },
      {
        "id": "00000000-0000-4000-8000-000000000004",
        "logo_url": "logo_url",
        "metadata": {
          "test": "value"
        },
        "name": "test group",
        "visibility": [
          "PUBLIC"
        ]
      },
      {
        "id": "00000000-0000-4000-8000-000000000005",
        "logo_url": "logo_url",
        "metadata": {
          "test": "value"
        },
        "name": "test group",
        "visibility": [
          "PUBLIC"
        ]
      }
    ]
  }
}
```

---

# Get Group

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/002__get_group
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/002__get_group.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Fetches a single group by id. The group's visibility settings determine who can view it, and `secretStorage` is only returned to members of the group.

## Query

```graphql
query ($id: ID!) {
  group(id: $id) {
    id
    name
    logoUrl
    visibility
    metadata
    secretStorage
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "group": {
      "id": "00000000-0000-4000-8000-000000000001",
      "logoUrl": "logo_url",
      "metadata": {
        "foo": "bar"
      },
      "name": "Acme",
      "secretStorage": {
        "key": "value"
      },
      "visibility": [
        "PUBLIC"
      ]
    }
  }
}
```

---

# List User's Groups

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/003__list_users_groups
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/003__list_users_groups.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the user's groups. This returns the groups the current user is a member of.

## Query

```graphql
query (
  $limit: Int
) {
  userGroups (
    limit: $limit
  ) {
    role
    group {
    id
    name
    metadata
    logo_url
    visibility
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "userGroups": [
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001",
          "logo_url": "logo_url",
          "metadata": {
            "test": "value"
          },
          "name": "test group",
          "visibility": [
            "PUBLIC"
          ]
        },
        "role": "MEMBER"
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000002",
          "logo_url": "logo_url",
          "metadata": {
            "test": "value"
          },
          "name": "test group",
          "visibility": [
            "PUBLIC"
          ]
        },
        "role": "MEMBER"
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000003",
          "logo_url": "logo_url",
          "metadata": {
            "test": "value"
          },
          "name": "test group",
          "visibility": [
            "PUBLIC"
          ]
        },
        "role": "MEMBER"
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000004",
          "logo_url": "logo_url",
          "metadata": {
            "test": "value"
          },
          "name": "test group",
          "visibility": [
            "PUBLIC"
          ]
        },
        "role": "MEMBER"
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000005",
          "logo_url": "logo_url",
          "metadata": {
            "test": "value"
          },
          "name": "test group",
          "visibility": [
            "PUBLIC"
          ]
        },
        "role": "MEMBER"
      }
    ]
  }
}
```

---

# List User Groups (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/004__list_paginated_user_groups
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/004__list_paginated_user_groups.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the groups the calling user is a member of, most recent first, including the user's role in each group. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedUserGroups(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      role
      group {
        id
        name
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedUserGroups": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "group": {
            "id": "00000000-0000-4000-8000-000000000001",
            "name": "test group"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "role": "MEMBER"
        },
        {
          "group": {
            "id": "00000000-0000-4000-8000-000000000003",
            "name": "test group"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "role": "MEMBER"
        },
        {
          "group": {
            "id": "00000000-0000-4000-8000-000000000005",
            "name": "test group"
          },
          "id": "00000000-0000-4000-8000-000000000006",
          "role": "MEMBER"
        }
      ]
    }
  }
}
```

---

# List Group Members (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/005__list_user_group_members
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/005__list_user_group_members.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the members of a group, with each member's role. The group's member list is only visible to callers allowed to view it (for example, members of the group). Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($groupId: ID!, $limit: Int, $cursor: String) {
  userGroupMembers(groupId: $groupId, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      role
      user {
        id
      }
    }
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000005"
}
```

## Response

```json
{
  "data": {
    "userGroupMembers": {
      "paginationInfo": {
        "limit": 10,
        "nextCursor": null
      },
      "records": [
        {
          "role": "MEMBER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000001"
          }
        },
        {
          "role": "MEMBER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000002"
          }
        },
        {
          "role": "MEMBER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "role": "MEMBER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        }
      ]
    }
  }
}
```

---

# Create Group

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/006__create_group
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/006__create_group.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Creates a new group. The user creating the group automatically becomes an admin member. Groups can have different visibility settings to control who can see and join them.

## Query

```graphql
mutation (
  $name: String!
  $metadata: JSON
  $visibility: [GroupVisibilityType!]
) {
  createGroup (
    name: $name
    metadata: $metadata
    visibility: $visibility
  ) {
    id
    }
  }

```

## Variables

```json
{
  "metadata": {
    "test": "value"
  },
  "name": "test group",
  "visibility": [
    "PRIVATE"
  ]
}
```

## Response

```json
{
  "data": {
    "createGroup": {
      "id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

---

# Update Group

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/007__update_group
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/007__update_group.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates an existing group's information. Only group admins can update group settings. You can update the name, metadata, secret storage, and visibility settings.

## Query

```graphql
mutation (
  $groupId: ID!
  $name: String
  $metadata: JSON
  $secretStorage: JSON
  $visibility: [GroupVisibilityType!]
) {
  updateGroup (
    groupId: $groupId
    name: $name
    metadata: $metadata
    secretStorage: $secretStorage
    visibility: $visibility
  ) {
    id
    name
    metadata
    secretStorage
    visibility
    }
  }

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000001",
  "metadata": {
    "test": "updated-value"
  },
  "name": "updated-groupname",
  "secretStorage": {
    "secret-key": "secret-value"
  },
  "visibility": [
    "CONNECTIONS"
  ]
}
```

## Response

```json
{
  "data": {
    "updateGroup": {
      "id": "00000000-0000-4000-8000-000000000001",
      "metadata": {
        "test": "updated-value"
      },
      "name": "updated-groupname",
      "secretStorage": {
        "secret-key": "secret-value"
      },
      "visibility": [
        "CONNECTIONS"
      ]
    }
  }
}
```

---

# Leave Group

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/008__leave_group
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/008__leave_group.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Removes the calling user's own membership from a group they belong to. The last remaining admin of a group cannot leave it.

## Query

```graphql
mutation ($groupId: ID!) {
  leaveGroup(groupId: $groupId) {
    status
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "leaveGroup": {
      "status": "OK"
    }
  }
}
```

---

# Update group member role

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/009__update_group_user_member_role
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/009__update_group_user_member_role.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Changes a group member's role (MEMBER or ADMIN). Only group admins can change roles, and the last remaining admin cannot be demoted.

## Query

```graphql
mutation ($groupId: ID!, $userId: ID!, $role: GroupRoleType!) {
  updateGroupUserMemberRole(groupId: $groupId, userId: $userId, role: $role) {
    status
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000002",
  "role": "ADMIN",
  "userId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "updateGroupUserMemberRole": {
      "status": "OK"
    }
  }
}
```

---

# Remove group member

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/010__remove_group_user_member
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/010__remove_group_user_member.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Removes a member from a group. Only group admins can remove members, and the last remaining admin cannot be removed.

## Query

```graphql
mutation ($groupId: ID!, $userId: ID!) {
  removeGroupUserMember(groupId: $groupId, userId: $userId) {
    status
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000002",
  "userId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeGroupUserMember": {
      "status": "OK"
    }
  }
}
```

---

# Invite a user to join a group

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/011__create_group_user_member_invite
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/011__create_group_user_member_invite.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Invites a user to join a group. Only group admins can invite new members. The invited user receives a pending invite that they can accept or reject.

## Query

```graphql
mutation (
  $groupId: ID!
  $invitedUserId: ID!
  $role: GroupRoleType!
) {
  createGroupUserMemberInvite (
    groupId: $groupId
    invitedUserId: $invitedUserId
    role: $role
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000001",
  "invitedUserId": "00000000-0000-4000-8000-000000000003",
  "role": "MEMBER"
}
```

## Response

```json
{
  "data": {
    "createGroupUserMemberInvite": {
      "group": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": null,
      "role": "MEMBER",
      "status": "PENDING",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000004"
      }
    }
  }
}
```

---

# Respond to a group member invite

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/012__respond_group_user_member_invite
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/012__respond_group_user_member_invite.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Responds to a group membership invite. The invited user can accept by setting response = "ACCEPTED" or reject the invitation via response = "REJECTED". When accepted, the user becomes a member of the group with the specified role.

## Query

```graphql
mutation (
  $inviteId: ID!
  $response: GroupInviteResponse!
) {
  respondGroupUserMemberInvite(
    inviteId: $inviteId
    response: $response
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "inviteId": "00000000-0000-4000-8000-000000000002",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondGroupUserMemberInvite": {
      "group": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "role": "MEMBER",
      "status": "ACCEPTED",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000004"
      }
    }
  }
}
```

---

# List pending group member invites

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/013__list_pending_group_user_member_invites
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/013__list_pending_group_user_member_invites.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all pending group membership invites that the current user has sent. You can filter by group ID or invited user ID, and limit the number of results.

## Query

```graphql
query (
  $groupId: ID
  $invitedUserId: ID
  $limit: Int
) {
  pendingGroupUserMemberInvites (
    groupId: $groupId
    invitedUserId: $invitedUserId
    limit: $limit
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingGroupUserMemberInvites": [
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000007"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000013"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000016"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000019"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000022"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000023"
        },
        "id": "00000000-0000-4000-8000-000000000024",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000025"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000026"
        },
        "id": "00000000-0000-4000-8000-000000000027",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000028"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000029"
        },
        "id": "00000000-0000-4000-8000-000000000030",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000031"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      }
    ]
  }
}
```

---

# List Pending Group User Member Invites (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/014__list_paginated_pending_group_user_member_invites
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/014__list_paginated_pending_group_user_member_invites.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the group membership invites the calling user has sent that are still PENDING; invites that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingGroupUserMemberInvites(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      role
      status
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingGroupUserMemberInvites": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "role": "MEMBER",
          "status": "PENDING"
        }
      ]
    }
  }
}
```

---

# List received group member invites

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/015__list_received_group_user_member_invites
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/015__list_received_group_user_member_invites.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all pending group membership invites that the current user has received. You can filter by the inviting user ID and limit the number of results.

## Query

```graphql
query (
  $invitingUserId: ID
  $limit: Int
) {
  receivedGroupUserMemberInvites (
    invitingUserId: $invitingUserId
    limit: $limit
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedGroupUserMemberInvites": [
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000010"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000016"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000022"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000023"
        },
        "id": "00000000-0000-4000-8000-000000000024",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000025"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000026"
        },
        "id": "00000000-0000-4000-8000-000000000027",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000028"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000029"
        },
        "id": "00000000-0000-4000-8000-000000000030",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000031"
        }
      }
    ]
  }
}
```

---

# List Received Group User Member Invites (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/016__list_paginated_received_group_user_member_invites
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/016__list_paginated_received_group_user_member_invites.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the group membership invites the calling user has received that are still PENDING; invites that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedReceivedGroupUserMemberInvites(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      role
      status
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedGroupUserMemberInvites": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "role": "MEMBER",
          "status": "PENDING"
        }
      ]
    }
  }
}
```

---

# Revoke a group member invite

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/017__revoke_group_user_member_invite
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/017__revoke_group_user_member_invite.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Revokes a pending group membership invite that you sent. Only the user who sent the invite can revoke it, and the invite must still be pending.

## Query

```graphql
mutation (
  $inviteId: ID!
) {
  revokeGroupUserMemberInvite(
    inviteId: $inviteId
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "inviteId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "revokeGroupUserMemberInvite": {
      "group": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "role": "MEMBER",
      "status": "REVOKED",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000004"
      }
    }
  }
}
```

---

# Create a group join request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/018__create_group_user_member_join_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/018__create_group_user_member_join_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Requests to join a group. The request is sent to the group admins for approval. Once approved, the user becomes a member of the group.

## Query

```graphql
mutation (
  $groupId: ID!
) {
  createGroupUserMemberJoinRequest (
    groupId: $groupId
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "createGroupUserMemberJoinRequest": {
      "group": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "respondedAt": null,
      "role": "MEMBER",
      "status": "PENDING",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# List received group join requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/019__list_received_group_user_member_join_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/019__list_received_group_user_member_join_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all pending join requests for a group that you administer. Only group admins can view join requests. You can limit the number of results.

## Query

```graphql
query (
  $groupId: ID!
  $limit: Int
) {
  receivedGroupUserMemberJoinRequests (
    groupId: $groupId
    limit: $limit
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "receivedGroupUserMemberJoinRequests": [
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000004",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000005"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000009"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000010",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000011"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000015"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000017"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000021"
        }
      }
    ]
  }
}
```

---

# List Received Group User Member Join Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/020__list_paginated_received_group_user_member_join_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/020__list_paginated_received_group_user_member_join_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists a group's PENDING join requests; the calling user must be an admin of the group. Requests that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($groupId: ID!, $limit: Int, $cursor: String) {
  paginatedReceivedGroupUserMemberJoinRequests(groupId: $groupId, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      role
      status
      group {
        id
      }
    }
  }
}

```

## Variables

```json
{
  "groupId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "paginatedReceivedGroupUserMemberJoinRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "group": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "group": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "group": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "role": "MEMBER",
          "status": "PENDING"
        }
      ]
    }
  }
}
```

---

# List pending group join requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/021__list_pending_group_user_member_join_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/021__list_pending_group_user_member_join_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists all pending join requests that the current user has sent to groups. This shows the status of your requests to join various groups.

## Query

```graphql
query (
  $limit: Int
) {
  pendingGroupUserMemberJoinRequests (
    limit: $limit
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingGroupUserMemberJoinRequests": [
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000004"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "id": "00000000-0000-4000-8000-000000000007",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "id": "00000000-0000-4000-8000-000000000013",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000016"
        },
        "id": "00000000-0000-4000-8000-000000000017",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000018"
        },
        "id": "00000000-0000-4000-8000-000000000019",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "group": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "respondedAt": null,
        "role": "MEMBER",
        "status": "PENDING",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      }
    ]
  }
}
```

---

# List Pending Group User Member Join Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/022__list_paginated_pending_group_user_member_join_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/022__list_paginated_pending_group_user_member_join_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the group join requests the calling user has sent that are still PENDING. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingGroupUserMemberJoinRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      role
      status
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingGroupUserMemberJoinRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "role": "MEMBER",
          "status": "PENDING"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "role": "MEMBER",
          "status": "PENDING"
        }
      ]
    }
  }
}
```

---

# Revoke a group join request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/023__revoke_group_user_member_join_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/023__revoke_group_user_member_join_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Revokes a pending join request that you sent to a group. Only the user who sent the request can revoke it, and the request must still be pending.

## Query

```graphql
mutation (
  $joinRequestId: ID!
) {
  revokeGroupUserMemberJoinRequest(
    joinRequestId: $joinRequestId
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
  }
}

```

## Variables

```json
{
  "joinRequestId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "revokeGroupUserMemberJoinRequest": {
      "group": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "respondedAt": "2026-01-15T09:00:01.000000",
      "role": "MEMBER",
      "status": "REVOKED",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# Respond to a group join request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/024__respond_group_user_member_join_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/007_groups/024__respond_group_user_member_join_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Responds to a group join request as a group admin. You can accept or reject the request. When accepted, the requesting user becomes a member of the group.

## Query

```graphql
mutation (
  $joinRequestId: ID!
  $response: GroupInviteResponse!
) {
  respondGroupUserMemberJoinRequest(
    joinRequestId: $joinRequestId
    response: $response
  ) {
    id
    status
    role
    insertedAt
    respondedAt
    updatedAt
    group {
      id
    }
    user {
      id
    }
  }
}

```

## Variables

```json
{
  "joinRequestId": "00000000-0000-4000-8000-000000000002",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondGroupUserMemberJoinRequest": {
      "group": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "respondedAt": "2026-01-15T09:00:01.000000",
      "role": "MEMBER",
      "status": "ACCEPTED",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# 008\_c2b\_connections

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/001__create_c2b_connection_request.md)
- [List pending C2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/002__list_pending_c2b_connection_requests.md)
- [List Pending C2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/003__list_paginated_pending_c2b_connection_requests.md)
- [List received B2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/004__list_received_b2c_connection_requests.md)
- [List Received B2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/005__list_paginated_received_b2c_connection_requests.md)
- [Respond to B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/006__respond_b2c_connection_request.md)
- [Revoke C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/007__revoke_c2b_connection_request.md)
- [Remove C2B connection](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/008__remove_c2b_connection.md)
- [List B2C connections (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/009__list_b2c_connections_as_user.md)
- [List B2C Connections (User, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/010__list_paginated_b2c_connections.md)

---

# Create C2B connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/001__create_c2b_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/001__create_c2b_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Sends a connection request from the authenticated user to a company (C2B - Consumer to Business) with the given connection type. The request stays PENDING until the company accepts or rejects it.

## Query

```graphql
mutation (
  $invitedCompanyId: ID!
  $connectionType: B2cConnectionType!
) {
  createC2bConnectionRequest (
    invitedCompanyId: $invitedCompanyId
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedCompany {
      id
    }
    respondedByUser {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionType": "CUSTOMER",
  "invitedCompanyId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "createC2bConnectionRequest": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "respondedAt": null,
      "respondedByUser": null,
      "status": "PENDING",
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# List pending C2B connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/002__list_pending_c2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/002__list_pending_c2b_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists the connection requests the authenticated user has sent to companies that have not yet been responded to. Only requests with status PENDING are returned. Results can optionally be filtered by connection type (includedType/excludedType) and capped with a limit.

## Query

```graphql
query (
  $includedType: B2cConnectionType
  $excludedType: B2cConnectionType
  $limit: Int
) {
  pendingC2bConnectionRequests (
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedCompany {
      id
    }
    respondedByUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingC2bConnectionRequests": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000004",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000007"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000009"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000010",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000013"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000015"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000019"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000021"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      }
    ]
  }
}
```

---

# List Pending C2B Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/003__list_paginated_pending_c2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/003__list_paginated_pending_c2b_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the connection requests the calling user has sent to companies that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingC2bConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      invitedCompany {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingC2bConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "invitedCompany": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "invitedCompany": {
            "id": "00000000-0000-4000-8000-000000000004"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000005",
          "invitedCompany": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "status": "PENDING",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# List received B2C connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/004__list_received_b2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/004__list_received_b2c_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists the connection requests from companies wanting to connect with the authenticated user. Only requests with status PENDING are returned. Results can optionally be filtered by connection type (includedType/excludedType) and capped with a limit. Use respondB2cConnectionRequest to accept or reject these requests.

## Query

```graphql
query (
  $includedType: B2cConnectionType
  $excludedType: B2cConnectionType
  $limit: Int
) {
  receivedB2cConnectionRequests (
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedB2cConnectionRequests": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000010"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000016"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000022"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000023"
        },
        "id": "00000000-0000-4000-8000-000000000024",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000025"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000026"
        },
        "id": "00000000-0000-4000-8000-000000000027",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000028"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000029"
        },
        "id": "00000000-0000-4000-8000-000000000030",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000031"
        }
      }
    ]
  }
}
```

---

# List Received B2C Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/005__list_paginated_received_b2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/005__list_paginated_received_b2c_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the connection requests companies have sent to the calling user that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedReceivedB2cConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      company {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedB2cConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000005"
          },
          "id": "00000000-0000-4000-8000-000000000006",
          "status": "PENDING",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# Respond to B2C connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/006__respond_b2c_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/006__respond_b2c_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Accepts or rejects a connection request received from a company. If accepted, a B2C connection is created between the user and the company. If rejected, no connection is created and the request is marked as rejected.

## Query

```graphql
mutation (
  $requestId: ID!
  $response: ConnectionRequestResponse!
) {
  respondB2cConnectionRequest (
    requestId: $requestId
    response: $response
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    company {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000002",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondB2cConnectionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "ACCEPTED",
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000004"
      }
    }
  }
}
```

---

# Revoke C2B connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/007__revoke_c2b_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/007__revoke_c2b_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Cancels a pending connection request the user sent to a company, before the company responds. Only pending requests can be revoked; the request status changes to REVOKED.

## Query

```graphql
mutation (
  $requestId: ID!
) {
  revokeC2bConnectionRequest (
    requestId: $requestId
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    invitedCompany {
      id
    }
    user {
      id
    }
    respondedByUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "revokeC2bConnectionRequest": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "respondedByUser": null,
      "status": "REVOKED",
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# Remove C2B connection

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/008__remove_c2b_connection
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/008__remove_c2b_connection.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Removes an existing connection between the user and a company. The connection is permanently removed and both parties will no longer see each other in their connections list. This action cannot be undone.

## Query

```graphql
mutation (
  $connectionId: ID!
) {
  removeC2bConnection (
    connectionId: $connectionId
  ) {
    id
    type
    insertedAt
    updatedAt
    startedAt
    company {
      id
    }
    connectedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "removeC2bConnection": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "connectedUser": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "id": "00000000-0000-4000-8000-000000000003",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "startedAt": null,
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:00.000000"
    }
  }
}
```

---

# List B2C connections (user)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/009__list_b2c_connections_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/009__list_b2c_connections_as_user.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists the B2C (Business to Consumer) connections of the authenticated user. B2C connections represent relationships between the user and companies. Results can optionally be filtered by connection type (includedType/excludedType) and capped with a limit.

## Query

```graphql
query (
  $includedType: B2cConnectionType
  $excludedType: B2cConnectionType
  $limit: Int
) {
  b2cConnections (
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    type
    insertedAt
    updatedAt
    startedAt
    company {
      id
    }
    connectedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "b2cConnections": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000003",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000004"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000007",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000013",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000016"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000017",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000018"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000019",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000"
      }
    ]
  }
}
```

---

# List B2C Connections (User, Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/010__list_paginated_b2c_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/008_c2b_connections/010__list_paginated_b2c_connections.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the calling user's connections to companies. Results can be filtered by connection type (`includedTypes`) or by the company's legal name (`legalName`), and are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query (
  $includedTypes: [B2cConnectionType!]
  $legalName: String
  $limit: Int
  $cursor: String
) {
  paginatedB2cConnections (
    includedTypes: $includedTypes
    legalName: $legalName
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      company {
        id
        legalName
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedB2cConnections": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001",
            "legalName": "1legal-name"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000003",
            "legalName": "2legal-name"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000005",
            "legalName": "3legal-name"
          },
          "id": "00000000-0000-4000-8000-000000000006",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# 009\_subscriptions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions.md
Last updated: 2026-09-09T03:10:23.000Z

- [Respond to B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/001__respond_b2c_subscription_request.md)
- [Remove B2C subscription (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/002__remove_b2c_subscription_as_user.md)
- [List B2C subscriptions (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/003__list_b2c_subscriptions_as_user.md)
- [List pending B2C subscription requests (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/004__list_pending_b2c_subscription_requests_as_user.md)
- [List Pending B2C Subscription Requests (User, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/005__list_paginated_pending_b2c_subscription_requests.md)
- [Upsert B2C subscription](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/006__upsert_b2c_subscription.md)

---

# Respond to B2C subscription request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/001__respond_b2c_subscription_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/001__respond_b2c_subscription_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Accepts or rejects a subscription request received from a company. If accepted, a B2C subscription is created and the user will receive communications from the company according to the subscription type (EMAIL, SMS, VOICE). If rejected, no subscription is created and the request is marked as rejected.

## Query

```graphql
mutation (
  $requestId: ID!
  $response: SubscriptionRequestResponse!
) {
  respondB2cSubscriptionRequest (
    requestId: $requestId
    response: $response
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    company {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000002",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondB2cSubscriptionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "ACCEPTED",
      "type": "EMAIL",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": null
    }
  }
}
```

---

# Remove B2C subscription (user)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/002__remove_b2c_subscription_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/002__remove_b2c_subscription_as_user.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Removes an existing B2C subscription the user has with a company, unsubscribing the user from communications of that type. The subscription is permanently removed; the user can create a new subscription to resubscribe.

## Query

```graphql
mutation (
  $subscriptionId: ID!
) {
  removeB2cSubscription (
    subscriptionId: $subscriptionId
  ) {
    ... on B2cEmailSubscription {
      id
      insertedAt
      updatedAt
      type
      subscriptionTopics
      expirationDate
      notificationStartTime
      notificationEndTime
      email
      company {
        id
      }
      user {
        id
      }
    }

    ... on B2cSmsSubscription {
      id
      insertedAt
      updatedAt
      type
      subscriptionTopics
      expirationDate
      notificationStartTime
      notificationEndTime
      telephoneNumber
      company {
        id
      }
      user {
        id
      }
    }

    ... on B2cVoiceSubscription {
      id
      insertedAt
      updatedAt
      type
      subscriptionTopics
      expirationDate
      notificationStartTime
      notificationEndTime
      telephoneNumber
      company {
        id
      }
      user {
        id
      }
    }
  }
}

```

## Variables

```json
{
  "subscriptionId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "removeB2cSubscription": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "email": "test1@email.com",
      "expirationDate": null,
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "notificationEndTime": "20:00:00",
      "notificationStartTime": "08:00:00",
      "subscriptionTopics": [
        "topic_2",
        "topic_3"
      ],
      "type": "EMAIL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# List B2C subscriptions (user)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/003__list_b2c_subscriptions_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/003__list_b2c_subscriptions_as_user.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists the B2C subscriptions of the authenticated user. B2C subscriptions represent the user's consent to receive communications from companies via email, SMS, or voice. Results can be filtered by company, topic, expiration date, and subscription types, and are paginated with a limit and cursor. Each record includes topics and contact info.

## Query

```graphql
query (
  $userId: ID
  $companyId: ID
  $includedTopic: String
  $excludedTopic: String
  $expirationDateBefore: Date
  $expirationDateAfter: Date
  $types: [B2cSubscriptionType!]
  $limit: Int
  $cursor: String
) {
  b2cSubscriptions (
    userId: $userId
    companyId: $companyId
    includedTopic: $includedTopic
    excludedTopic: $excludedTopic
    expirationDateBefore: $expirationDateBefore
    expirationDateAfter: $expirationDateAfter
    types: $types
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }

    records {
      ... on B2cEmailSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        email
        company {
          id
        }
        user {
          id
        }
      }

      ... on B2cSmsSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }

      ... on B2cVoiceSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "b2cSubscriptions": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "email": "test1@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000002",
          "insertedAt": "2026-01-15T09:00:04.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_2",
            "topic_3"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:04.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000004"
          },
          "email": "test4@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000005",
          "insertedAt": "2026-01-15T09:00:03.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_5",
            "topic_6"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:03.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "email": "test7@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000007",
          "insertedAt": "2026-01-15T09:00:02.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_8",
            "topic_9"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:02.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000008"
          },
          "email": "test10@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000009",
          "insertedAt": "2026-01-15T09:00:01.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_11",
            "topic_12"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:01.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000010"
          },
          "email": "test13@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000011",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_14",
            "topic_15"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:00.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        }
      ]
    }
  }
}
```

---

# List pending B2C subscription requests (user)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/004__list_pending_b2c_subscription_requests_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/004__list_pending_b2c_subscription_requests_as_user.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists the subscription requests from companies asking for the authenticated user's consent to receive communications. Only requests with status PENDING are returned; accepted, rejected, or revoked requests are not included. Use respondB2cSubscriptionRequest to accept or reject these requests.

## Query

```graphql
query {
  pendingB2cSubscriptionRequests {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingB2cSubscriptionRequests": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000010"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000016"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000022"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000023"
        },
        "id": "00000000-0000-4000-8000-000000000024",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000025"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000026"
        },
        "id": "00000000-0000-4000-8000-000000000027",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000028"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000029"
        },
        "id": "00000000-0000-4000-8000-000000000030",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000031"
        }
      }
    ]
  }
}
```

---

# List Pending B2C Subscription Requests (User, Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/005__list_paginated_pending_b2c_subscription_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/005__list_paginated_pending_b2c_subscription_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the subscription requests companies have sent to the calling user that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingB2cSubscriptionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      company {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingB2cSubscriptionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "status": "PENDING",
          "type": "EMAIL"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "status": "PENDING",
          "type": "EMAIL"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000005"
          },
          "id": "00000000-0000-4000-8000-000000000006",
          "status": "PENDING",
          "type": "EMAIL"
        }
      ]
    }
  }
}
```

---

# Upsert B2C subscription

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/006__upsert_b2c_subscription
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/009_subscriptions/006__upsert_b2c_subscription.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Creates or updates a B2C subscription directly, without going through the request/response flow. The subscription type (EMAIL, SMS, VOICE) determines the required contact reference: emailId for EMAIL, telephoneNumberId for SMS/VOICE. Optionally accepts an expiration date and a notification time window. If a subscription already exists for this company/type combination it is updated; otherwise a new one is created.

## Query

```graphql
mutation (
  $companyId: ID!
  $type: B2cSubscriptionType!
  $emailId: ID
  $telephoneNumberId: ID
  $subscriptionTopicIds: [ID!]!
  $expirationDate: Date
  $notificationStartTime: Time
  $notificationEndTime: Time
) {
  upsertB2cSubscription (
    companyId: $companyId
    type: $type
    emailId: $emailId
    telephoneNumberId: $telephoneNumberId
    subscriptionTopicIds: $subscriptionTopicIds
    expirationDate: $expirationDate
    notificationStartTime: $notificationStartTime
    notificationEndTime: $notificationEndTime
    ) {
      ... on B2cEmailSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        email
        company {
          id
        }
        user {
          id
        }
      }

      ... on B2cSmsSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }

      ... on B2cVoiceSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
    }
  }

```

## Variables

```json
{
  "companyId": "00000000-0000-4000-8000-000000000001",
  "emailId": "00000000-0000-4000-8000-000000000004",
  "expirationDate": "2030-12-31",
  "notificationEndTime": "16:00:00",
  "notificationStartTime": "08:00:00",
  "subscriptionTopicIds": [
    "00000000-0000-4000-8000-000000000005",
    "00000000-0000-4000-8000-000000000006"
  ],
  "type": "EMAIL"
}
```

## Response

```json
{
  "data": {
    "upsertB2cSubscription": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "email": "test1@email.com",
      "expirationDate": "2030-12-31",
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "notificationEndTime": "16:00:00",
      "notificationStartTime": "08:00:00",
      "subscriptionTopics": [
        "topic_2",
        "topic_3"
      ],
      "type": "EMAIL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# 010\_company\_management

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create company](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/001__create_company.md)
- [Create company client secret](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/002__create_company_client_secret.md)
- [Delete Company](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/003__delete_company.md)
- [Set Up Invitation From Token](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/004__setup_invitation_from_token.md)
- [List Switchable Companies](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/005__list_switchable_companies.md)

---

# Create company

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/001__create_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/001__create_company.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Creates a new company profile as a user, registering the business on the platform. Requires a legal name and a unique profile name; optionally accepts brand name, tax IDs, contact information (emails, telephone numbers, addresses), online presence (webpages, social networks), trusted domains, subscription topics and settings, industry classification, visibility settings, and metadata. Setting provisionCompanyClientSecret creates API credentials on company creation. The user creating the company is automatically connected with the given connectionType (OWNER, ADMIN or EXTERNAL\_ADMIN).

## Query

```graphql
mutation (
  $legalName: String!
  $brandName: String
  $profileName: String!
  $yearFounded: Int
  $aboutUs: String
  $metadata: JSON
  $emails: [CompanyEmailInput!]
  $telephoneNumbers: [CompanyTelephoneNumberInput!]
  $addresses: [CompanyAddressInput!]
  $webpages: [CompanyWebpageInput!]
  $socialNetworks: [CompanySocialMediaInput!]
  $trustedDomains: [TrustedDomainInput!]
  $subscriptionTopics: [B2cSubscriptionTopicInput!]
  $subscriptionSettings: CompanySubscriptionSettingsInput
  $taxIds: [CompanyTaxIdInput!]
  $verticalTypeId: ID
  $organizationTypeId: ID
  $companySpecialties: [ID]
  $legalNameVisibility: [CompanyVisibilityType!]
  $brandNameVisibility: [CompanyVisibilityType!]
  $logoUrlVisibility: [CompanyVisibilityType!]
  $aboutUsVisibility: [CompanyVisibilityType!]
  $yearFoundedVisibility: [CompanyVisibilityType!]
  $verticalTypeVisibility: [CompanyVisibilityType!]
  $organizationTypeVisibility: [CompanyVisibilityType!]
  $specialtiesVisibility: [CompanyVisibilityType!]
  $b2cVisibility: [CompanyVisibilityType!]
  $metadataVisibility: [CompanyVisibilityType!]
  $provisionCompanyClientSecret: Boolean
  $connectionType: AdminB2cConnectionType
) {
  createCompany (
    legalName: $legalName
    brandName: $brandName
    profileName: $profileName
    yearFounded: $yearFounded
    aboutUs: $aboutUs
    metadata: $metadata
    emails: $emails
    telephoneNumbers: $telephoneNumbers
    addresses: $addresses
    webpages: $webpages
    socialNetworks: $socialNetworks
    trustedDomains: $trustedDomains
    subscriptionTopics: $subscriptionTopics
    subscriptionSettings: $subscriptionSettings
    taxIds: $taxIds
    verticalTypeId: $verticalTypeId
    organizationTypeId: $organizationTypeId
    companySpecialties: $companySpecialties
    legalNameVisibility: $legalNameVisibility
    brandNameVisibility: $brandNameVisibility
    logoUrlVisibility: $logoUrlVisibility
    aboutUsVisibility: $aboutUsVisibility
    yearFoundedVisibility: $yearFoundedVisibility
    verticalTypeVisibility: $verticalTypeVisibility
    organizationTypeVisibility: $organizationTypeVisibility
    specialtiesVisibility: $specialtiesVisibility
    b2cVisibility: $b2cVisibility
    metadataVisibility: $metadataVisibility
    provisionCompanyClientSecret: $provisionCompanyClientSecret
    connectionType: $connectionType
  ) {
    id
    clientSecret {
    clientId
    clientSecret
    description
    }
  }
}

```

## Variables

```json
{
  "aboutUs": "about us content",
  "aboutUsVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "addresses": [
    {
      "city": "test city",
      "country": "United States",
      "state": "Alabama",
      "street": "test street 3",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ],
      "zipCode": "12345"
    },
    {
      "city": "test city",
      "country": "United States",
      "state": "Alabama",
      "street": "test street 4",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ],
      "zipCode": "12345"
    }
  ],
  "b2cVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "brandName": "2brand-name",
  "brandNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "companySpecialties": [
    "00000000-0000-4000-8000-000000000005"
  ],
  "emails": [
    {
      "email": "test1@email.com",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "email": "test2@email.com",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "legalName": "1legal-name",
  "legalNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "logoUrlVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "metadata": {
    "test": "value"
  },
  "metadataVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "organizationTypeId": "00000000-0000-4000-8000-000000000004",
  "organizationTypeVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "profileName": "3profile-name",
  "provisionCompanyClientSecret": true,
  "socialNetworks": [
    {
      "type": "FACEBOOK",
      "url": "https://test-sm9.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "type": "FACEBOOK",
      "url": "https://test-sm10.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "specialtiesVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "subscriptionSettings": {
    "enable_email": false,
    "enable_sms": false,
    "enable_voice": false
  },
  "subscriptionTopics": [
    {
      "description": "description_12",
      "enableEmail": false,
      "enableSms": false,
      "enableVoice": false,
      "name": "topic_11",
      "type": "CRITICAL"
    },
    {
      "description": "description_14",
      "enableEmail": false,
      "enableSms": false,
      "enableVoice": false,
      "name": "topic_13",
      "type": "CRITICAL"
    }
  ],
  "taxIdVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "taxIds": [
    {
      "type": "EIN",
      "usState": null,
      "value": "100000136",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "telephoneNumbers": [
    {
      "country_code": "1",
      "number": "7",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "country_code": "1",
      "number": "8",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "trustedDomains": [
    {
      "domain": "test123.com"
    },
    {
      "domain": "test456.com"
    }
  ],
  "verticalTypeId": "00000000-0000-4000-8000-000000000003",
  "verticalTypeVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "webpages": [
    {
      "type": "WEBPAGE",
      "url": "https://test-webpage5.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "type": "WEBPAGE",
      "url": "https://test-webpage6.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "yearFounded": 2000,
  "yearFoundedVisibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "createCompany": {
      "clientSecret": {
        "clientId": "00000000-0000-4000-8000-000000000001",
        "clientSecret": "06WJQkWsVfcT5gOyCRmjdQ",
        "description": null
      },
      "id": "00000000-0000-4000-8000-000000000002"
    }
  }
}
```

---

# Create company client secret

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/002__create_company_client_secret
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/002__create_company_client_secret.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Creates API credentials (client ID and secret) for a company, which can be used to authenticate as the company and access the Company API. Requires an admin-level connection (ADMIN, OWNER, EXTERNAL\_ADMIN) with the company. An optional description helps manage multiple secrets. The clientSecret is only shown once at creation time — store it securely.

## Query

```graphql
mutation (
  $companyId: ID!
  $description: String
) {
  createCompanyClientSecret (
    companyId: $companyId
    description: $description
  ) {
    clientId
    clientSecret
    description
  }
}

```

## Variables

```json
{
  "companyId": "00000000-0000-4000-8000-000000000002",
  "description": "nice client secret"
}
```

## Response

```json
{
  "data": {
    "createCompanyClientSecret": {
      "clientId": "00000000-0000-4000-8000-000000000001",
      "clientSecret": "LAJC+hWwiu6ZGuX2L/ybwA",
      "description": "nice client secret"
    }
  }
}
```

---

# Delete Company

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/003__delete_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/003__delete_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Deletes a company. Only users with a privileged connection to the company (owner, admin, or external admin) may delete it.

## Query

```graphql
mutation ($companyId: ID!) {
  deleteCompany(companyId: $companyId) {
    status
  }
}

```

## Variables

```json
{
  "companyId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteCompany": {
      "status": "OK"
    }
  }
}
```

---

# Set Up Invitation From Token

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/004__setup_invitation_from_token
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/004__setup_invitation_from_token.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Materializes the requests an authenticated user can act on for an invitation link: a company connection request, a user-to-user connection request when the link carries a connection type, and one subscription request per channel the link asks for. Revisiting the same token returns the existing rows instead of duplicating them.

## Query

```graphql
mutation ($token: String!) {
  setupInvitationFromToken(token: $token) {
    b2cConnectionRequest { id status type }
    c2cConnectionRequest { id status type }
    b2cSubscriptionRequests { id status type }
  }
}

```

## Variables

```json
{
  "token": "token_1"
}
```

## Response

```json
{
  "data": {
    "setupInvitationFromToken": {
      "b2cConnectionRequest": {
        "id": "00000000-0000-4000-8000-000000000001",
        "status": "PENDING",
        "type": "CUSTOMER"
      },
      "b2cSubscriptionRequests": [
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "status": "PENDING",
          "type": "EMAIL"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "status": "PENDING",
          "type": "SMS"
        },
        {
          "id": "00000000-0000-4000-8000-000000000004",
          "status": "PENDING",
          "type": "VOICE"
        }
      ],
      "c2cConnectionRequest": {
        "id": "00000000-0000-4000-8000-000000000005",
        "status": "PENDING",
        "type": "FRIEND"
      }
    }
  }
}
```

---

# List Switchable Companies

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/005__list_switchable_companies
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/010_company_management/005__list_switchable_companies.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the companies the current user can switch to, i.e. those where they hold an owner, admin, or external admin connection. Results can be filtered by legal name via the search argument.

## Query

```graphql
query($limit: Int, $search: String) {
  switchableCompanies(limit: $limit, search: $search) {
    id
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "switchableCompanies": [
      {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    ]
  }
}
```

---

# 011\_users\_and\_search

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search.md
Last updated: 2026-09-09T03:10:23.000Z

- [Get User](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/001__get_user.md)
- [Get User By Username](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/002__get_user_by_username.md)
- [Search For Users (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/003__search_for_users_as_user.md)
- [Global Search (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/004__global_search_as_user.md)

---

# Get User

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/001__get_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/001__get_user.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Fetches a user profile by id. Each profile field is filtered by the owner's visibility settings and the relationship between the viewer and the user; the owner always sees all of their own fields.

## Query

```graphql
query ($id: ID!) {
  user(id: $id) {
    id
    username
    firstName
    middleName
    lastName
    birthdate
    aboutMe
    timezone
    metadata
    secretStorage
    addresses {
      city
      country
      state
      street
      types
      zipCode
      visibility
    }
    emails {
      email
      types
      visibility
    }
    telephoneNumbers {
      number
      types
      visibility
    }
    socialNetworks {
      type
      url
      visibility
    }
    webpages {
      type
      url
      visibility
    }
    interests {
      description
      title
    }
    nameVisibility
    aboutMeVisibility
    birthdateVisibility
    interestsVisibility
    timezoneVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "user": {
      "aboutMe": "this is my generic intro",
      "aboutMeVisibility": [
        "PUBLIC"
      ],
      "addresses": [
        {
          "city": "test city",
          "country": "United States",
          "state": "Alabama",
          "street": "test street 1",
          "types": [
            "HOME"
          ],
          "visibility": [
            "PUBLIC"
          ],
          "zipCode": "12345"
        }
      ],
      "birthdate": "1990-01-15",
      "birthdateVisibility": [
        "PUBLIC"
      ],
      "emails": [
        {
          "email": "test2@email.com",
          "types": [
            "OTHER"
          ],
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "firstName": "1john",
      "id": "00000000-0000-4000-8000-000000000001",
      "interests": [
        {
          "description": null,
          "title": "Interest 3"
        }
      ],
      "interestsVisibility": [
        "PUBLIC"
      ],
      "lastName": "2doe",
      "metadata": {
        "test": "value"
      },
      "metadataVisibility": [
        "PUBLIC"
      ],
      "middleName": "ray",
      "nameVisibility": [
        "PUBLIC"
      ],
      "secretStorage": {},
      "socialNetworks": [
        {
          "type": "FACEBOOK",
          "url": "https://test-sm4.not",
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "telephoneNumbers": [
        {
          "number": "5",
          "types": [
            "OTHER"
          ],
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "timezone": "UTC",
      "timezoneVisibility": [
        "PUBLIC"
      ],
      "username": "username6",
      "webpages": [
        {
          "type": "WEBPAGE",
          "url": "https://test-webpage7.not",
          "visibility": [
            "PUBLIC"
          ]
        }
      ]
    }
  }
}
```

---

# Get User By Username

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/002__get_user_by_username
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/002__get_user_by_username.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Fetches a user profile by username. Profile fields are filtered by the owner's visibility settings and the viewer's relationship to the user, exactly like fetching a user by id.

## Query

```graphql
query ($username: String!) {
  userByUsername(username: $username) {
    id
    username
    firstName
    middleName
    lastName
    aboutMe
    emails {
      email
      visibility
    }
    telephoneNumbers {
      number
      visibility
    }
    nameVisibility
    aboutMeVisibility
  }
}

```

## Variables

```json
{
  "username": "username3"
}
```

## Response

```json
{
  "data": {
    "userByUsername": {
      "aboutMe": "this is my generic intro",
      "aboutMeVisibility": [
        "PUBLIC"
      ],
      "emails": [
        {
          "email": "test1@email.com",
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "firstName": "1john",
      "id": "00000000-0000-4000-8000-000000000001",
      "lastName": "2doe",
      "middleName": "ray",
      "nameVisibility": [
        "PUBLIC"
      ],
      "telephoneNumbers": [
        {
          "number": "2",
          "visibility": [
            "PUBLIC"
          ]
        }
      ],
      "username": "username3"
    }
  }
}
```

---

# Search For Users (User)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/003__search_for_users_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/003__search_for_users_as_user.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Searches for users by name (username or full name), email, telephone number, or metadata. Only users whose matched field is visible to the caller are returned, and each returned profile is filtered by the same visibility rules.

## Query

```graphql
query (
  $name: String
  $email: String
  $telephoneNumber: String
  $limit: Int
  $metadata: JSON
) {
  users (
    name: $name
    email: $email
    telephoneNumber: $telephoneNumber
    limit: $limit
    metadata: $metadata
  ) {
    id
    username
    firstName
    middleName
    lastName
    birthdate
    aboutMe
    timezone
    metadata
    addresses {
      city
      country
      state
      street
      types
      zipCode
      visibility
    }
    emails {
      email
      types
      visibility
    }
    telephoneNumbers {
      number
      types
      visibility
    }
    socialNetworks {
      type
      url
      visibility
    }
    webpages {
      type
      url
      visibility
    }
    interests {
      description
      title
    }
    nameVisibility
    aboutMeVisibility
    birthdateVisibility
    interestsVisibility
    timezoneVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{
  "name": "1john 2doe"
}
```

## Response

```json
{
  "data": {
    "users": [
      {
        "aboutMe": "this is my generic intro",
        "aboutMeVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 1",
            "types": [
              "HOME"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "birthdate": "1990-01-15",
        "birthdateVisibility": null,
        "emails": [
          {
            "email": "test2@email.com",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "firstName": "1john",
        "id": "00000000-0000-4000-8000-000000000001",
        "interests": [
          {
            "description": null,
            "title": "Interest 3"
          }
        ],
        "interestsVisibility": null,
        "lastName": "2doe",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "middleName": "ray",
        "nameVisibility": null,
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm4.not",
            "visibility": null
          }
        ],
        "telephoneNumbers": [
          {
            "number": "5",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "timezone": "UTC",
        "timezoneVisibility": null,
        "username": "username6",
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage7.not",
            "visibility": null
          }
        ]
      }
    ]
  }
}
```

---

# Global Search (User)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/004__global_search_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/011_users_and_search/004__global_search_as_user.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Searches across users, companies, and groups in a single mixed list. Matches against display name and, when the query looks like an email or phone number, contact fields. Queries shorter than 3 characters return an empty list.

## Query

```graphql
query ($query: String!, $limit: Int, $showSensitiveData: Boolean) {
  globalSearch(query: $query, limit: $limit, showSensitiveData: $showSensitiveData) {
    id
    type
    label
    username
    image
    relation
    emails {
      id
      email
      visibility
    }
    telephoneNumbers {
      id
      number
      visibility
    }
    addresses {
      id
      street
      city
      state
      country
      zipCode
      visibility
    }
  }
}

```

## Variables

```json
{
  "query": "Acme"
}
```

## Response

```json
{
  "data": {
    "globalSearch": [
      {
        "addresses": [],
        "emails": [],
        "id": "00000000-0000-4000-8000-000000000001",
        "image": "http://localhost:4566/test_profile_image_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "label": "Acmeperson Searchable",
        "relation": [],
        "telephoneNumbers": [],
        "type": "USER",
        "username": "username1"
      },
      {
        "addresses": [],
        "emails": [],
        "id": "00000000-0000-4000-8000-000000000002",
        "image": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "label": "Acmecorp Industries",
        "relation": [],
        "telephoneNumbers": [],
        "type": "COMPANY",
        "username": ""
      },
      {
        "addresses": [],
        "emails": [],
        "id": "00000000-0000-4000-8000-000000000003",
        "image": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "label": "Acmegroup Society",
        "relation": null,
        "telephoneNumbers": [],
        "type": "GROUP",
        "username": ""
      }
    ]
  },
  "errors": [
    {
      "locations": [
        {
          "column": 5,
          "line": 8
        }
      ],
      "message": "Cannot return null for non-nullable field",
      "path": [
        "globalSearch",
        2,
        "relation",
        0
      ]
    }
  ]
}
```

---

# 012\_documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents.md
Last updated: 2026-09-09T03:10:23.000Z

- [Prepare File Upload (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/001__prepare_file_upload_as_user.md)
- [Prepare document upload (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/002__prepare_document_upload_as_user.md)
- [Confirm Document Upload (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/003__confirm_document_upload_as_user.md)
- [Accept User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/004__accept_user_documents.md)
- [Get User Document](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/005__get_user_document.md)
- [List user documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/006__list_paginated_user_documents.md)
- [Update User Document](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/007__update_user_document.md)
- [Move User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/008__move_user_documents.md)
- [Delete User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/009__delete_user_documents.md)
- [Restore User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/010__restore_user_documents.md)
- [Permanently Delete User Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/011__permanently_delete_user_documents.md)
- [Empty User Trash](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/012__empty_user_trash.md)
- [Ask A Question Of Your Documents](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/013__ask_user_document_question.md)
- [Create User Folder](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/014__create_user_folder.md)
- [Update User Folder](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/015__update_user_folder.md)
- [Move User Folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/016__move_user_folders.md)
- [Delete User Folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/017__delete_user_folders.md)
- [List user folders](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/018__list_user_folders.md)
- [Create User Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/019__create_user_tag.md)
- [Delete User Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/020__delete_user_tag.md)
- [List User Tags](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/021__list_user_tags.md)
- [Add User Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/022__add_user_document_tag.md)
- [Remove User Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/023__remove_user_document_tag.md)
- [List User AI Tasks](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/024__list_paginated_user_ai_tasks.md)
- [Get One User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/025__get_user_ai_task.md)
- [List A User AI Task's Answers](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/026__list_paginated_user_ai_task_runs.md)
- [Create A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/027__create_user_ai_task.md)
- [Update A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/028__update_user_ai_task.md)
- [Run A User AI Task Again](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/029__run_user_ai_task.md)
- [Delete A User AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/030__delete_user_ai_task.md)

---

# Prepare File Upload (User)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/001__prepare_file_upload_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/001__prepare_file_upload_as_user.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Prepares a file upload for the calling user. Returns a presigned upload URL to PUT the file to and the file key to save; the key is randomized per request.

## Query

```graphql
mutation (
  $fileName: String!
  $contentType: String!
) {
  prepareFileUpload(
    fileName: $fileName
    contentType: $contentType
  ) {
    uploadUrl
    fileKey
  }
}

```

## Variables

```json
{
  "contentType": "image/jpeg",
  "fileName": "avatar.jpg"
}
```

## Response

```json
{
  "data": {
    "prepareFileUpload": {
      "fileKey": "user_uploads/2026-01-15_examplekey1_avatar.jpg",
      "uploadUrl": "http://localhost:4566/tnid-v2-uploads-local/user_uploads/2026-01-15_examplekey1_avatar.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=900&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
```

---

# Prepare document upload (user)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/002__prepare_document_upload_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/002__prepare_document_upload_as_user.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Reserves space in the calling user's document repository and returns a presigned POST policy to upload the file with. The reservation holds the declared bytes against the quota but stays invisible until `confirmDocumentUpload` claims it; an upload that never completes is reclaimed by the sweeper.

## Query

```graphql
mutation ($fileName: String!, $contentType: String!, $byteSize: String!) {
  prepareDocumentUpload(fileName: $fileName, contentType: $contentType, byteSize: $byteSize) {
    documentId
    url
    fields
  }
}

```

## Variables

```json
{
  "byteSize": "1024",
  "contentType": "application/pdf",
  "fileName": "invoice.pdf"
}
```

## Response

```json
{
  "data": {
    "prepareDocumentUpload": {
      "documentId": "00000000-0000-4000-8000-000000000001",
      "fields": {
        "Content-Type": "application/pdf",
        "Policy": "eyJjb25kaXRpb25zIjpbeyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiU09NRV9SQU5ET01fQUNDRVNTX0tFWS8yMDI2MDkyMy91cy1lYXN0LTEvczMvYXdzNF9yZXF1ZXN0In0seyJYLUFtei1EYXRlIjoiMjAyNjA5MjNUMDMyMDM5WiJ9LHsiYnVja2V0IjoidG5pZC12Mi1kb2N1bWVudHMtbG9jYWwifSx7ImtleSI6InVzZXIvN2Q0ZmQ3N2MtN2ExNC00N2EwLWI2MWYtZWNhNDM1MjQ0MGI2LzIwMjYtMDktMjNfNjRQRno2Ry1obW80X2ludm9pY2UucGRmIn0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDI0XSxbImVxIiwiJENvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL3BkZiJdXSwiZXhwaXJhdGlvbiI6IjIwMjYtMDktMjNUMDM6MjU6MzkuNDk1MzcxWiJ9",
        "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
        "X-Amz-Credential": "SOME_RANDOM_ACCESS_KEY/20260115/us-east-1/s3/aws4_request",
        "X-Amz-Date": "20260115T090000Z",
        "X-Amz-Signature": "45152115a9f6130fe2f8fadb9f74099ba0c97ac8cc81e222258a83c44d653d7a",
        "key": "user/00000000-0000-4000-8000-000000000002/2026-09-23_64PFz6G-hmo4_invoice.pdf"
      },
      "url": "http://localhost:4566/tnid-v2-documents-local"
    }
  }
}
```

---

# Confirm Document Upload (User)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/003__confirm_document_upload_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/003__confirm_document_upload_as_user.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Claims an upload prepared by prepareDocumentUpload. The server reads the stored object's real size — not the one declared up front — moves the reservation into the repository and queues the document for AI tagging.

## Query

```graphql
mutation ($id: ID!) {
  confirmDocumentUpload(id: $id) { id fileName byteSize status folderId }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "confirmDocumentUpload": {
      "byteSize": "640",
      "fileName": "invoice.pdf",
      "folderId": null,
      "id": "00000000-0000-4000-8000-000000000001",
      "status": "ACCEPTED"
    }
  }
}
```

---

# Accept User Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/004__accept_user_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/004__accept_user_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Accepts documents that arrived over a channel (SMS, MMS or email) into the calling user's repository. Accepted documents become visible in the main list and are queued for AI tagging.

## Query

```graphql
mutation ($ids: [ID!]!) {
  acceptUserDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "acceptUserDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Get User Document

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/005__get_user_document
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/005__get_user_document.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Fetches one of the calling user's documents by id, including a short-lived download URL. Returns null if the document doesn't exist or belongs to another user.

## Query

```graphql
query ($id: ID!) {
  document(id: $id) {
    id
    fileName
    summary
    url
    taggingError
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "document": {
      "fileName": "invoice.pdf",
      "id": "00000000-0000-4000-8000-000000000001",
      "summary": "Q2 supplier invoice.",
      "taggingError": null,
      "url": "http://localhost:4566/tnid-v2-documents-local/user/uploads/1.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
```

---

# List user documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/006__list_paginated_user_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/006__list_paginated_user_documents.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/user`

Lists the calling user's documents, most recent first, cursor-paginated. Supports filtering by status (defaults to accepted documents), folder, file-name search and tag ids. Pass paginationInfo.nextCursor back as the cursor argument to fetch the next page.

## Query

```graphql
query ($search: String, $limit: Int, $cursor: String) {
  documents(search: $search, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      fileName
    }
  }
}

```

## Variables

```json
{
  "limit": 2
}
```

## Response

```json
{
  "data": {
    "documents": {
      "paginationInfo": {
        "limit": 2,
        "nextCursor": "MjAyNi0wOS0yM1QwMzoyMDo0Mi42NDE1NjB8fGEzODZjYWY5LWUwMzEtNGU2OC05NTU3LTE2YjcxODc1MGQxNQ=="
      },
      "records": [
        {
          "fileName": "document-1.pdf",
          "id": "00000000-0000-4000-8000-000000000001"
        },
        {
          "fileName": "document-2.pdf",
          "id": "00000000-0000-4000-8000-000000000002"
        }
      ]
    }
  }
}
```

---

# Update User Document

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/007__update_user_document
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/007__update_user_document.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates one of the calling user's documents — the file name and summary. The stored file itself is untouched.

## Query

```graphql
mutation ($id: ID!, $fileName: String, $summary: String) {
  updateUserDocument(id: $id, fileName: $fileName, summary: $summary) {
    id
    fileName
    summary
  }
}

```

## Variables

```json
{
  "fileName": "contract-v2.pdf",
  "id": "00000000-0000-4000-8000-000000000001",
  "summary": "Two-year TV warranty."
}
```

## Response

```json
{
  "data": {
    "updateUserDocument": {
      "fileName": "contract-v2.pdf",
      "id": "00000000-0000-4000-8000-000000000001",
      "summary": "Two-year TV warranty."
    }
  }
}
```

---

# Move User Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/008__move_user_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/008__move_user_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Moves documents into one of the calling user's folders. Pass a null folderId to move them back to the repository root.

## Query

```graphql
mutation ($ids: [ID!]!, $folderId: ID) {
  moveUserDocuments(ids: $ids, folderId: $folderId) {
    status
    count
  }
}

```

## Variables

```json
{
  "folderId": "00000000-0000-4000-8000-000000000003",
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "moveUserDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Delete User Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/009__delete_user_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/009__delete_user_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Moves documents to the calling user's trash. They stay recoverable with restoreUserDocuments until the trash is emptied or they are permanently deleted.

## Query

```graphql
mutation ($ids: [ID!]!) {
  deleteUserDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "deleteUserDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Restore User Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/010__restore_user_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/010__restore_user_documents.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Restores documents from the calling user's trash. A restored document returns to the repository root with its tags and summary intact.

## Query

```graphql
mutation ($ids: [ID!]!) {
  restoreUserDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001"
  ]
}
```

## Response

```json
{
  "data": {
    "restoreUserDocuments": {
      "count": 1,
      "status": "OK"
    }
  }
}
```

---

# Permanently Delete User Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/011__permanently_delete_user_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/011__permanently_delete_user_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Removes documents from the calling user's trash for good, deleting the stored files as well. Only documents already in the trash can be deleted this way.

## Query

```graphql
mutation ($ids: [ID!]!) {
  permanentlyDeleteUserDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "permanentlyDeleteUserDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Empty User Trash

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/012__empty_user_trash
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/012__empty_user_trash.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Permanently deletes everything in the calling user's trash. Takes no arguments — it always covers the whole trash rather than a filtered view of it — and the files leave storage as well.

## Query

```graphql
mutation {
  emptyUserTrash {
    status
    count
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "emptyUserTrash": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Ask A Question Of Your Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/013__ask_user_document_question
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/013__ask_user_document_question.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Answers a natural-language question from the calling user's documents and names the documents the answer drew on. Only accepted documents are searched, and only the passages that matched are sent to the model.

The answer shown here comes from a stubbed model, so the wording is illustrative rather than something the service guarantees.

## Query

```graphql
mutation ($question: String!) {
  askUserDocumentQuestion(question: $question) {
    answer
    citations {
      id
      fileName
    }
  }
}

```

## Variables

```json
{
  "question": "when does my tv warranty end"
}
```

## Response

```json
{
  "data": {
    "askUserDocumentQuestion": {
      "answer": "Your TV warranty ends on 2027-01-01.",
      "citations": [
        {
          "fileName": "tv-warranty.pdf",
          "id": "00000000-0000-4000-8000-000000000001"
        }
      ]
    }
  }
}
```

---

# Create User Folder

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/014__create_user_folder
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/014__create_user_folder.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Creates a document folder for the calling user. Pass parentId to nest it under an existing folder; omit it for a folder at the repository root.

## Query

```graphql
mutation { createUserFolder(name: "Contracts") { id name parentId } }

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "createUserFolder": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "Contracts",
      "parentId": null
    }
  }
}
```

---

# Update User Folder

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/015__update_user_folder
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/015__update_user_folder.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates one of the calling user's document folders — currently the name only.

## Query

```graphql
mutation ($id: ID!) { updateUserFolder(id: $id, name: "New") { id name } }

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "updateUserFolder": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "New"
    }
  }
}
```

---

# Move User Folders

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/016__move_user_folders
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/016__move_user_folders.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Re-parents folders within the calling user's repository. Pass a null parentId to move them to the top level. A folder cannot be moved inside itself or its own descendants.

## Query

```graphql
mutation ($ids: [ID!]!, $parentId: ID) {
  moveUserFolders(ids: $ids, parentId: $parentId) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ],
  "parentId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "moveUserFolders": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Delete User Folders

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/017__delete_user_folders
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/017__delete_user_folders.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Deletes folders from the calling user's repository for good. Each subtree is removed and every document inside moves to the trash; a document restored later lands at the repository root.

## Query

```graphql
mutation ($ids: [ID!]!) { deleteUserFolders(ids: $ids) { status count } }

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001"
  ]
}
```

## Response

```json
{
  "data": {
    "deleteUserFolders": {
      "count": 1,
      "status": "OK"
    }
  }
}
```

---

# List user folders

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/018__list_user_folders
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/018__list_user_folders.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Lists every document folder of the calling user. Each record references its parent folder via parentId, so the full folder tree can be reconstructed.

## Query

```graphql
query {
  folders {
    records { id name parentId }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "folders": {
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "name": "Top",
          "parentId": null
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "name": "Child",
          "parentId": "00000000-0000-4000-8000-000000000001"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "name": "Grandchild",
          "parentId": "00000000-0000-4000-8000-000000000002"
        }
      ]
    }
  }
}
```

---

# Create User Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/019__create_user_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/019__create_user_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Creates a tag in the calling user's document repository. Tag names are lowercased, and creating a case-insensitive duplicate returns the existing tag.

## Query

```graphql
mutation ($name: String!) {
  createUserTag(name: $name) {
    id
    name
  }
}

```

## Variables

```json
{
  "name": "Taxes"
}
```

## Response

```json
{
  "data": {
    "createUserTag": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "taxes"
    }
  }
}
```

---

# Delete User Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/020__delete_user_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/020__delete_user_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Deletes one of the calling user's tags, removing it from every document it is attached to.

## Query

```graphql
mutation ($id: ID!) {
  deleteUserTag(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteUserTag": {
      "status": "OK"
    }
  }
}
```

---

# List User Tags

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/021__list_user_tags
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/021__list_user_tags.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the calling user's document tags, ordered by name.

## Query

```graphql
query {
  tags {
    id
    name
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "tags": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "name": "apple"
      },
      {
        "id": "00000000-0000-4000-8000-000000000002",
        "name": "Zebra"
      }
    ]
  }
}
```

---

# Add User Document Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/022__add_user_document_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/022__add_user_document_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Attaches one of the calling user's tags to one of their documents. Adding a suggested tag confirms the suggestion, moving it from the document's tagSuggestions into its tags.

## Query

```graphql
mutation ($documentId: ID!, $tagId: ID!) {
  addUserDocumentTag(documentId: $documentId, tagId: $tagId) {
    status
  }
}

```

## Variables

```json
{
  "documentId": "00000000-0000-4000-8000-000000000001",
  "tagId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "addUserDocumentTag": {
      "status": "OK"
    }
  }
}
```

---

# Remove User Document Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/023__remove_user_document_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/023__remove_user_document_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Detaches a tag from one of the calling user's documents. Removing a suggested tag rejects the suggestion, so it no longer appears in tagSuggestions.

## Query

```graphql
mutation ($documentId: ID!, $tagId: ID!) {
  removeUserDocumentTag(documentId: $documentId, tagId: $tagId) {
    status
  }
}

```

## Variables

```json
{
  "documentId": "00000000-0000-4000-8000-000000000001",
  "tagId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "removeUserDocumentTag": {
      "status": "OK"
    }
  }
}
```

---

# List User AI Tasks

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/024__list_paginated_user_ai_tasks
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/024__list_paginated_user_ai_tasks.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Lists the calling user's AI tasks. `documentCount` is how many documents each task covers, which is what running it will run against. `inFlightCount` is how many of its runs are still queued or running.

## Query

```graphql
query {
  aiTasks {
    records { id name documentCount inFlightCount }
    paginationInfo { nextCursor }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "aiTasks": {
      "paginationInfo": {
        "nextCursor": null
      },
      "records": [
        {
          "documentCount": 2,
          "id": "00000000-0000-4000-8000-000000000001",
          "inFlightCount": 0,
          "name": "task-2"
        }
      ]
    }
  }
}
```

---

# Get One User AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/025__get_user_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/025__get_user_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

A single task by id, for a client that has one and nothing else — a link to a task's runs, say. Null when the id isn't the caller's, which reads the same as one that doesn't exist.

## Query

```graphql
query ($id: ID!) {
  aiTask(id: $id) {
    id
    name
    runOnRoot
    folders { id name }
    prompt
    outputShape
    documentCount
    inFlightCount
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "aiTask": {
      "documentCount": 1,
      "folders": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "inFlightCount": 0,
      "name": "task-8",
      "outputShape": {
        "total": "number"
      },
      "prompt": "Extract the invoice details from this document.",
      "runOnRoot": true
    }
  }
}
```

---

# List A User AI Task's Answers

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/026__list_paginated_user_ai_task_runs
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/026__list_paginated_user_ai_task_runs.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Lists every run of one task, newest first — including runs still `QUEUED` or `RUNNING`, and answers superseded by a later run, so a document appears once per run rather than once in total. `result` and `ranAt` are null while a run is still going, and stay null on one that ended without reaching the model — `error` says why. `prompt` and `outputShape` are what was asked when the run was published, so an older answer stays interpretable after the task is edited.

## Query

```graphql
query ($taskId: ID!) {
  aiTaskRuns(taskId: $taskId) {
    records {
      documentId
      fileName
      status
      result
      error
      ranAt
      prompt
      outputShape
    }
    paginationInfo { nextCursor }
  }
}

```

## Variables

```json
{
  "taskId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "aiTaskRuns": {
      "paginationInfo": {
        "nextCursor": null
      },
      "records": [
        {
          "documentId": "00000000-0000-4000-8000-000000000001",
          "error": null,
          "fileName": "acme-jan.pdf",
          "outputShape": {
            "total": "number"
          },
          "prompt": "Extract the invoice details from this document.",
          "ranAt": "2026-01-15T09:00:00.000000Z",
          "result": {
            "total": 420
          },
          "status": "COMPLETED"
        }
      ]
    }
  }
}
```

---

# Create A User AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/027__create_user_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/027__create_user_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Creates a task the calling user runs against their documents. Naming folders in `folderIds` covers each of them and everything beneath it; `runOnRoot` covers the whole repository instead. A task given neither runs against the documents a run names. Creating a task stores it — use `runUserAiTask` to run it. Documents uploaded afterwards are run against it as they become readable.

## Query

```graphql
mutation ($name: String!, $prompt: String!, $runOnRoot: Boolean, $folderIds: [ID!], $outputShape: JSON!) {
  createUserAiTask(name: $name, prompt: $prompt, runOnRoot: $runOnRoot, folderIds: $folderIds, outputShape: $outputShape) {
    id
    name
    prompt
    runOnRoot
    folders { id name }
    outputShape
    documentCount
    inFlightCount
  }
}

```

## Variables

```json
{
  "name": "Invoice details",
  "outputShape": {
    "total": "number"
  },
  "prompt": "Extract the total."
}
```

## Response

```json
{
  "data": {
    "createUserAiTask": {
      "documentCount": 0,
      "folders": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "inFlightCount": 0,
      "name": "Invoice details",
      "outputShape": {
        "total": "number"
      },
      "prompt": "Extract the total.",
      "runOnRoot": false
    }
  }
}
```

---

# Update A User AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/028__update_user_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/028__update_user_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Updates a task. Existing answers are left as they are; each one keeps the prompt that produced it, so an answer from before the change stays readable. Nothing is run again — use `runUserAiTask` for that.

## Query

```graphql
mutation ($id: ID!, $prompt: String, $name: String, $runOnRoot: Boolean, $folderIds: [ID!], $outputShape: JSON) {
  updateUserAiTask(id: $id, prompt: $prompt, name: $name, runOnRoot: $runOnRoot, folderIds: $folderIds, outputShape: $outputShape) {
    id
    name
    prompt
    runOnRoot
    folders { id name }
    outputShape
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "prompt": "Extract the vendor too."
}
```

## Response

```json
{
  "data": {
    "updateUserAiTask": {
      "folders": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "task-0",
      "outputShape": {
        "total": "number"
      },
      "prompt": "Extract the vendor too.",
      "runOnRoot": true
    }
  }
}
```

---

# Run A User AI Task Again

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/029__run_user_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/029__run_user_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Runs a task over the documents named in `ids`, or — with `ids` omitted — over what the task watches: its folders and everything beneath them, or the whole repository when it runs on the root. A task watching neither covers nothing, so omitting `ids` for one queues no runs.

A named document runs whether or not the task watches the folder it sits in; ids naming something the caller doesn't hold, or a document that isn't accepted, are left out. Runs are kept rather than replaced, so a previous answer stays available beside the new one. `count` is how many runs were queued, not how many have finished.

## Query

```graphql
mutation ($taskId: ID!, $ids: [ID!]) {
  runUserAiTask(taskId: $taskId, ids: $ids) { status count }
}

```

## Variables

```json
{
  "taskId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "runUserAiTask": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Delete A User AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/030__delete_user_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/012_documents/030__delete_user_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Deletes a task and every answer it produced. The answers describe a question that no longer exists, so they are not kept.

## Query

```graphql
mutation ($id: ID!) {
  deleteUserAiTask(id: $id) { status }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteUserAiTask": {
      "status": "OK"
    }
  }
}
```

---

# 013\_notifications

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications.md
Last updated: 2026-09-09T03:10:23.000Z

- [List notifications (user)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/001__list_notifications_as_user.md)
- [Get Recent Notifications](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/002__get_recent_notifications.md)
- [Get Unread Notification Count (User)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/003__get_unread_notification_count_as_user.md)
- [Mark Notification As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/004__mark_notification_as_read.md)
- [Mark Notifications As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/005__mark_notifications_as_read.md)
- [Mark All Notifications As Read](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/006__mark_all_notifications_as_read.md)
- [Get Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/007__get_notification_settings.md)
- [Update Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/008__update_notification_settings.md)
- [Get B2C Connection Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/009__get_b2c_connection_notification_settings.md)
- [Update B2C Connection Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/010__update_b2c_connection_notification_settings.md)
- [Get Group Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/011__get_group_notification_settings.md)
- [Update Group Notification Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/012__update_group_notification_settings.md)
- [Get Notification](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/013__get_notification.md)

---

# List notifications (user)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/001__list_notifications_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/001__list_notifications_as_user.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Returns the calling user's notifications as a cursor-paginated list. Results can optionally be filtered by read/unread status.

## Query

```graphql
query (
  $limit: Int
  $cursor: String
  $status: NotificationStatus
) {
  notifications (
    limit: $limit
    cursor: $cursor
    status: $status
  ) {
    paginationInfo {
      limit
      nextCursor
    }

    records {
      id
      text
      kind
      subjectId
      subjectStatus
      context
      status
      insertedAt
      updatedAt
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "notifications": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "context": {},
          "id": "00000000-0000-4000-8000-000000000001",
          "insertedAt": "2026-01-15T09:00:02.000000",
          "kind": null,
          "status": "UNREAD",
          "subjectId": null,
          "subjectStatus": null,
          "text": "test notification",
          "updatedAt": "2026-01-15T09:00:02.000000"
        },
        {
          "context": {},
          "id": "00000000-0000-4000-8000-000000000002",
          "insertedAt": "2026-01-15T09:00:01.000000",
          "kind": null,
          "status": "UNREAD",
          "subjectId": null,
          "subjectStatus": null,
          "text": "test notification",
          "updatedAt": "2026-01-15T09:00:01.000000"
        },
        {
          "context": {},
          "id": "00000000-0000-4000-8000-000000000003",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "kind": null,
          "status": "UNREAD",
          "subjectId": null,
          "subjectStatus": null,
          "text": "test notification",
          "updatedAt": "2026-01-15T09:00:00.000000"
        }
      ]
    }
  }
}
```

---

# Get Recent Notifications

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/002__get_recent_notifications
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/002__get_recent_notifications.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Returns the top N notifications ordered unread-first, then most recent within each group, so unread items stay visible even when read items are newer. The limit defaults to 5 when omitted.

## Query

```graphql
query ($limit: Int) {
  recentNotifications(limit: $limit) {
    id
    status
  }
}

```

## Variables

```json
{
  "limit": 5
}
```

## Response

```json
{
  "data": {
    "recentNotifications": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "status": "UNREAD"
      },
      {
        "id": "00000000-0000-4000-8000-000000000002",
        "status": "UNREAD"
      },
      {
        "id": "00000000-0000-4000-8000-000000000003",
        "status": "READ"
      }
    ]
  }
}
```

---

# Get Unread Notification Count (User)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/003__get_unread_notification_count_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/003__get_unread_notification_count_as_user.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Returns the number of the calling user's notifications that are still unread.

## Query

```graphql
query {
  unreadNotificationCount
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "unreadNotificationCount": 3
  }
}
```

---

# Mark Notification As Read

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/004__mark_notification_as_read
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/004__mark_notification_as_read.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Marks a single notification belonging to the caller as read. Notifications owned by someone else are left untouched.

## Query

```graphql
mutation ($id: ID!) {
  markNotificationAsRead(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "markNotificationAsRead": {
      "status": "OK"
    }
  }
}
```

---

# Mark Notifications As Read

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/005__mark_notifications_as_read
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/005__mark_notifications_as_read.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Marks the notifications with the supplied ids as read. Ids that belong to another owner are ignored.

## Query

```graphql
mutation ($ids: [ID!]!) {
  markNotificationsAsRead(ids: $ids) {
    status
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "markNotificationsAsRead": {
      "status": "OK"
    }
  }
}
```

---

# Mark All Notifications As Read

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/006__mark_all_notifications_as_read
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/006__mark_all_notifications_as_read.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Marks every unread notification belonging to the caller as read.

## Query

```graphql
mutation {
  markAllNotificationsAsRead {
    status
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "markAllNotificationsAsRead": {
      "status": "OK"
    }
  }
}
```

---

# Get Notification Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/007__get_notification_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/007__get_notification_settings.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Returns the calling user's notification preferences, one boolean per event/channel pair (in-app notification and email). All preferences default to enabled.

## Query

```graphql
query {
  notificationSettings {
    c2cConnRequestReceivedNotification
    c2cConnRequestReceivedEmail
    c2cConnRequestResponseNotification
    c2cConnRequestResponseEmail
    b2cConnRequestReceivedNotification
    b2cConnRequestReceivedEmail
    c2bConnRequestResponseNotification
    c2bConnRequestResponseEmail
    b2cSubRequestReceivedNotification
    b2cSubRequestReceivedEmail
    b2cFormInstanceRequestReceivedNotification
    b2cFormInstanceRequestReceivedEmail
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "notificationSettings": {
      "b2cConnRequestReceivedEmail": true,
      "b2cConnRequestReceivedNotification": true,
      "b2cFormInstanceRequestReceivedEmail": true,
      "b2cFormInstanceRequestReceivedNotification": true,
      "b2cSubRequestReceivedEmail": true,
      "b2cSubRequestReceivedNotification": true,
      "c2bConnRequestResponseEmail": true,
      "c2bConnRequestResponseNotification": true,
      "c2cConnRequestReceivedEmail": true,
      "c2cConnRequestReceivedNotification": true,
      "c2cConnRequestResponseEmail": true,
      "c2cConnRequestResponseNotification": true
    }
  }
}
```

---

# Update Notification Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/008__update_notification_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/008__update_notification_settings.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Updates the calling user's notification preferences and returns the full settings object. Only the arguments provided are changed; omitted preferences keep their current values.

## Query

```graphql
mutation (
  $c2cConnRequestReceivedNotification: Boolean
  $c2cConnRequestReceivedEmail: Boolean
  $c2cConnRequestResponseNotification: Boolean
  $c2cConnRequestResponseEmail: Boolean
  $b2cConnRequestReceivedNotification: Boolean
  $b2cConnRequestReceivedEmail: Boolean
  $c2bConnRequestResponseNotification: Boolean
  $c2bConnRequestResponseEmail: Boolean
  $b2cSubRequestReceivedNotification: Boolean
  $b2cSubRequestReceivedEmail: Boolean
  $b2cFormInstanceRequestReceivedNotification: Boolean
  $b2cFormInstanceRequestReceivedEmail: Boolean
) {
  updateNotificationSettings (
    c2cConnRequestReceivedNotification: $c2cConnRequestReceivedNotification
    c2cConnRequestReceivedEmail: $c2cConnRequestReceivedEmail
    c2cConnRequestResponseNotification: $c2cConnRequestResponseNotification
    c2cConnRequestResponseEmail: $c2cConnRequestResponseEmail
    b2cConnRequestReceivedNotification: $b2cConnRequestReceivedNotification
    b2cConnRequestReceivedEmail: $b2cConnRequestReceivedEmail
    c2bConnRequestResponseNotification: $c2bConnRequestResponseNotification
    c2bConnRequestResponseEmail: $c2bConnRequestResponseEmail
    b2cSubRequestReceivedNotification: $b2cSubRequestReceivedNotification
    b2cSubRequestReceivedEmail: $b2cSubRequestReceivedEmail
    b2cFormInstanceRequestReceivedNotification: $b2cFormInstanceRequestReceivedNotification
    b2cFormInstanceRequestReceivedEmail: $b2cFormInstanceRequestReceivedEmail
  ) {
    c2cConnRequestReceivedNotification
    c2cConnRequestReceivedEmail
    c2cConnRequestResponseNotification
    c2cConnRequestResponseEmail
    b2cConnRequestReceivedNotification
    b2cConnRequestReceivedEmail
    c2bConnRequestResponseNotification
    c2bConnRequestResponseEmail
    b2cSubRequestReceivedNotification
    b2cSubRequestReceivedEmail
    b2cFormInstanceRequestReceivedNotification
    b2cFormInstanceRequestReceivedEmail
  }
}

```

## Variables

```json
{
  "b2cConnRequestReceivedEmail": false,
  "b2cConnRequestReceivedNotification": false,
  "b2cFormInstanceRequestReceivedEmail": false,
  "b2cFormInstanceRequestReceivedNotification": false,
  "b2cSubRequestReceivedEmail": false,
  "b2cSubRequestReceivedNotification": false,
  "c2bConnRequestResponseEmail": false,
  "c2bConnRequestResponseNotification": false,
  "c2cConnRequestReceivedEmail": false,
  "c2cConnRequestReceivedNotification": false,
  "c2cConnRequestResponseEmail": false,
  "c2cConnRequestResponseNotification": false
}
```

## Response

```json
{
  "data": {
    "updateNotificationSettings": {
      "b2cConnRequestReceivedEmail": false,
      "b2cConnRequestReceivedNotification": false,
      "b2cFormInstanceRequestReceivedEmail": false,
      "b2cFormInstanceRequestReceivedNotification": false,
      "b2cSubRequestReceivedEmail": false,
      "b2cSubRequestReceivedNotification": false,
      "c2bConnRequestResponseEmail": false,
      "c2bConnRequestResponseNotification": false,
      "c2cConnRequestReceivedEmail": false,
      "c2cConnRequestReceivedNotification": false,
      "c2cConnRequestResponseEmail": false,
      "c2cConnRequestResponseNotification": false
    }
  }
}
```

---

# Get B2C Connection Notification Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/009__get_b2c_connection_notification_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/009__get_b2c_connection_notification_settings.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Returns the per-connection email notification preferences for one of the calling user's B2C connections.

## Query

```graphql
query ($b2cConnectionId: ID!) {
  b2cConnectionNotificationSettings(b2cConnectionId: $b2cConnectionId) {
    id
    b2bConnRequestReceivedEmail
    b2bConnRequestResponseEmail
    b2cConnRequestResponseEmail
    c2bConnRequestReceivedEmail
    b2cSubRequestResponseEmail
    companySocialNetworkStatusChangeEmail
    b2bFormInstanceSubmissionRequestReceivedEmail
  }
}

```

## Variables

```json
{
  "b2cConnectionId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "b2cConnectionNotificationSettings": {
      "b2bConnRequestReceivedEmail": true,
      "b2bConnRequestResponseEmail": true,
      "b2bFormInstanceSubmissionRequestReceivedEmail": true,
      "b2cConnRequestResponseEmail": true,
      "b2cSubRequestResponseEmail": true,
      "c2bConnRequestReceivedEmail": true,
      "companySocialNetworkStatusChangeEmail": true,
      "id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

---

# Update B2C Connection Notification Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/010__update_b2c_connection_notification_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/010__update_b2c_connection_notification_settings.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates the email notification preferences for one of the calling user's B2C connections and returns the updated settings. Only the arguments provided are changed; omitted preferences keep their current values.

## Query

```graphql
mutation (
  $b2cConnectionId: ID!
  $b2bConnRequestReceivedEmail: Boolean
  $b2bConnRequestResponseEmail: Boolean
  $b2cConnRequestResponseEmail: Boolean
  $c2bConnRequestReceivedEmail: Boolean
  $b2cSubRequestResponseEmail: Boolean
  $companySocialNetworkStatusChangeEmail: Boolean
  $b2bFormInstanceSubmissionRequestReceivedEmail: Boolean
) {
  updateB2cConnectionNotificationSettings (
    b2cConnectionId: $b2cConnectionId
    b2bConnRequestReceivedEmail: $b2bConnRequestReceivedEmail
    b2bConnRequestResponseEmail: $b2bConnRequestResponseEmail
    b2cConnRequestResponseEmail: $b2cConnRequestResponseEmail
    c2bConnRequestReceivedEmail: $c2bConnRequestReceivedEmail
    b2cSubRequestResponseEmail: $b2cSubRequestResponseEmail
    companySocialNetworkStatusChangeEmail: $companySocialNetworkStatusChangeEmail
    b2bFormInstanceSubmissionRequestReceivedEmail: $b2bFormInstanceSubmissionRequestReceivedEmail
  ) {
    id
    b2bConnRequestReceivedEmail
    b2bConnRequestResponseEmail
    b2cConnRequestResponseEmail
    c2bConnRequestReceivedEmail
    b2cSubRequestResponseEmail
    companySocialNetworkStatusChangeEmail
    b2bFormInstanceSubmissionRequestReceivedEmail
  }
}

```

## Variables

```json
{
  "b2bConnRequestReceivedEmail": false,
  "b2bConnRequestResponseEmail": false,
  "b2bFormInstanceSubmissionRequestReceivedEmail": false,
  "b2cConnRequestResponseEmail": false,
  "b2cConnectionId": "00000000-0000-4000-8000-000000000001",
  "b2cSubRequestResponseEmail": false,
  "c2bConnRequestReceivedEmail": false,
  "companySocialNetworkStatusChangeEmail": false
}
```

## Response

```json
{
  "data": {
    "updateB2cConnectionNotificationSettings": {
      "b2bConnRequestReceivedEmail": false,
      "b2bConnRequestResponseEmail": false,
      "b2bFormInstanceSubmissionRequestReceivedEmail": false,
      "b2cConnRequestResponseEmail": false,
      "b2cSubRequestResponseEmail": false,
      "c2bConnRequestReceivedEmail": false,
      "companySocialNetworkStatusChangeEmail": false,
      "id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

---

# Get Group Notification Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/011__get_group_notification_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/011__get_group_notification_settings.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Returns the notification preferences attached to one of the calling user's group memberships.

## Query

```graphql
query ($groupUserMemberId: ID!) {
  groupNotificationSettings (groupUserMemberId: $groupUserMemberId) {
    id
    groupUserMemberJoinRequestReceivedNotification
    groupUserMemberJoinRequestReceivedEmail
  }
}

```

## Variables

```json
{
  "groupUserMemberId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "groupNotificationSettings": {
      "groupUserMemberJoinRequestReceivedEmail": true,
      "groupUserMemberJoinRequestReceivedNotification": true,
      "id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

---

# Update Group Notification Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/012__update_group_notification_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/012__update_group_notification_settings.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Updates the notification preferences attached to one of the calling user's group memberships and returns the updated settings. Only the arguments provided are changed.

## Query

```graphql
mutation (
  $groupUserMemberId: ID!
  $groupUserMemberJoinRequestReceivedNotification: Boolean
  $groupUserMemberJoinRequestReceivedEmail: Boolean
) {
  updateGroupNotificationSettings (
    groupUserMemberId: $groupUserMemberId
    groupUserMemberJoinRequestReceivedNotification: $groupUserMemberJoinRequestReceivedNotification
    groupUserMemberJoinRequestReceivedEmail: $groupUserMemberJoinRequestReceivedEmail
  ) {
    id
    groupUserMemberJoinRequestReceivedNotification
    groupUserMemberJoinRequestReceivedEmail
  }
}

```

## Variables

```json
{
  "groupUserMemberId": "00000000-0000-4000-8000-000000000001",
  "groupUserMemberJoinRequestReceivedEmail": false,
  "groupUserMemberJoinRequestReceivedNotification": false
}
```

## Response

```json
{
  "data": {
    "updateGroupNotificationSettings": {
      "groupUserMemberJoinRequestReceivedEmail": false,
      "groupUserMemberJoinRequestReceivedNotification": false,
      "id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

---

# Get Notification

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/013__get_notification
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/013_notifications/013__get_notification.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

A single notification of the current user's, by id — for resolving one already known by id rather than reading a list. Null when the id isn't the caller's, which reads the same as one that never existed.

`kind` says what happened and `subjectId` names what it happened to. `subjectStatus` is that subject's status as it stood when the notification was written, not as it stands now, so read the subject itself before acting on it. `context` carries any further id needed to reach the subject.

## Query

```graphql
query ($id: ID!) {
  notification (id: $id) {
    id
    text
    kind
    subjectId
    subjectStatus
    context
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "notification": {
      "context": {
        "group_id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "kind": "GROUP_USER_MEMBER_JOIN_REQUEST",
      "status": "UNREAD",
      "subjectId": "00000000-0000-4000-8000-000000000003",
      "subjectStatus": "pending",
      "text": "Someone asked to join your group"
    }
  }
}
```

---

# 014\_forms

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms.md
Last updated: 2026-09-09T03:10:23.000Z

- [List Received Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/001__list_received_form_submission_requests.md)
- [List Received Form Submission Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/002__list_paginated_received_form_submission_requests.md)
- [Reject Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/003__reject_form_submission_request.md)

---

# List Received Form Submission Requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/001__list_received_form_submission_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/001__list_received_form_submission_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the form submission requests companies have sent to the calling user, optionally filtered by the form instance's status. Results are page-paginated via `page` and `limit`, with the total record count included in the response.

## Query

```graphql
query (
  $formInstanceStatus: FormBuilderFormInstanceStatus
  $page: Int
  $limit: Int
) {
  receivedFormSubmissionRequests(
    formInstanceStatus: $formInstanceStatus
    page: $page
    limit: $limit
  ) {
    records {
      id
      requester {
        id
      }
      form {
        id
        title
      }
      formInstance {
        id
        status
      }
    }
    page
    totalRecords
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedFormSubmissionRequests": {
      "page": 1,
      "records": [
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000001",
            "title": "Test Form 1"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000002",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        },
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000005",
            "title": "Test Form 2"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000006",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000007",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000008"
          }
        }
      ],
      "totalRecords": 2
    }
  }
}
```

---

# List Received Form Submission Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/002__list_paginated_received_form_submission_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/002__list_paginated_received_form_submission_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Lists the form submission requests companies have sent to the calling user, optionally filtered by a search query or the form instance's status. Results are cursor-paginated: pass `limit` and the previous page's `nextCursor` as `cursor` to fetch the next page.

## Query

```graphql
query (
  $searchQuery: String
  $formInstanceStatus: FormBuilderFormInstanceStatus
  $limit: Int
  $cursor: String
) {
  paginatedReceivedFormSubmissionRequests(
    searchQuery: $searchQuery
    formInstanceStatus: $formInstanceStatus
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      requester {
        id
      }
      form {
        id
        title
      }
      formInstance {
        id
        status
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedFormSubmissionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000001",
            "title": "Test Form 1"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000002",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        },
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000005",
            "title": "Test Form 2"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000006",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000007",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000008"
          }
        }
      ]
    }
  }
}
```

---

# Reject Form Submission Request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/003__reject_form_submission_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/014_forms/003__reject_form_submission_request.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Rejects a form submission request that was sent to the calling user. The associated form instance is marked REJECTED and any data entered into it is cleared.

## Query

```graphql
mutation ($id: ID!) {
  rejectFormSubmissionRequest(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "rejectFormSubmissionRequest": {
      "status": "OK"
    }
  }
}
```

---

# 015\_account

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account.md
Last updated: 2026-09-09T03:10:23.000Z

- [Get Current User Settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/001__get_current_user_settings.md)
- [Update user settings](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/002__update_user_settings.md)
- [Get Dashboard Stats](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/003__get_dashboard_stats.md)
- [Get Onboarding Status](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/004__get_onboarding_status.md)
- [Complete Onboarding Step](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/005__complete_onboarding_step.md)
- [Create Support Request](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/006__create_support_request.md)
- [List Interests](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/007__list_interests.md)
- [Get Pending Action Counts](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/008__get_pending_action_counts.md)

---

# Get Current User Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/001__get_current_user_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/001__get_current_user_settings.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Returns the authenticated user's settings, including secret storage and the per-field visibility preferences that control who can see each profile field.

## Query

```graphql
query {
  currentUserSettings {
    id
    secretStorage
    nameVisibility
    profileImageUrlVisibility
    aboutMeVisibility
    birthdateVisibility
    interestsVisibility
    timezoneVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "currentUserSettings": {
      "aboutMeVisibility": [
        "PUBLIC"
      ],
      "birthdateVisibility": [
        "PUBLIC"
      ],
      "id": "00000000-0000-4000-8000-000000000001",
      "interestsVisibility": [
        "PUBLIC"
      ],
      "metadataVisibility": [
        "PUBLIC"
      ],
      "nameVisibility": [
        "PUBLIC"
      ],
      "profileImageUrlVisibility": [
        "PUBLIC"
      ],
      "secretStorage": {},
      "timezoneVisibility": [
        "PUBLIC"
      ]
    }
  }
}
```

---

# Update user settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/002__update_user_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/002__update_user_settings.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/user`

Updates the authenticated user's settings: secret storage, the dashboard layout, and the per-field visibility lists that control who can see each profile field. Only the arguments provided are changed.

## Query

```graphql
mutation (
  $secretStorage: JSON
  $dashboardLayout: JSON
  $nameVisibility: [UserVisibilityType!]
  $profileImageUrlVisibility: [UserVisibilityType!]
  $aboutMeVisibility: [UserVisibilityType!]
  $birthdateVisibility: [UserVisibilityType!]
  $interestsVisibility: [UserVisibilityType!]
  $timezoneVisibility: [UserVisibilityType!]
  $metadataVisibility: [UserVisibilityType!]
) {
  updateUserSettings (
    secretStorage: $secretStorage
    dashboardLayout: $dashboardLayout
    nameVisibility: $nameVisibility
    profileImageUrlVisibility: $profileImageUrlVisibility
    aboutMeVisibility: $aboutMeVisibility
    birthdateVisibility: $birthdateVisibility
    interestsVisibility: $interestsVisibility
    timezoneVisibility: $timezoneVisibility
    metadataVisibility: $metadataVisibility
  ) {
    id
    secretStorage
    dashboardLayout
  }
}

```

## Variables

```json
{
  "aboutMeVisibility": [
    "FAMILY"
  ],
  "birthdateVisibility": [
    "FAMILY"
  ],
  "dashboardLayout": {
    "version": 1,
    "widgets": [
      "profile",
      "my-companies"
    ]
  },
  "interestsVisibility": [
    "FAMILY"
  ],
  "metadataVisibility": [
    "FAMILY"
  ],
  "nameVisibility": [
    "FAMILY"
  ],
  "profileImageUrlVisibility": [
    "FAMILY"
  ],
  "secretStorage": {
    "secret_test": "secret-value"
  },
  "timezoneVisibility": [
    "FAMILY"
  ]
}
```

## Response

```json
{
  "data": {
    "updateUserSettings": {
      "dashboardLayout": {
        "version": 1,
        "widgets": [
          "profile",
          "my-companies"
        ]
      },
      "id": "00000000-0000-4000-8000-000000000001",
      "secretStorage": {
        "secret_test": "secret-value"
      }
    }
  }
}
```

---

# Get Dashboard Stats

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/003__get_dashboard_stats
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/003__get_dashboard_stats.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Returns summary counts for the calling user's dashboard: companies they own or administer, established C2C and B2C connections, and pending connection requests awaiting their response.

## Query

```graphql
query {
  dashboardStats {
    companiesCount
    pendingC2cConnectionRequestsCount
    c2cConnectionsCount
    pendingB2cConnectionRequestsCount
    b2cConnectionsCount
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "dashboardStats": {
      "b2cConnectionsCount": 3,
      "c2cConnectionsCount": 0,
      "companiesCount": 2,
      "pendingB2cConnectionRequestsCount": 0,
      "pendingC2cConnectionRequestsCount": 0
    }
  }
}
```

---

# Get Onboarding Status

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/004__get_onboarding_status
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/004__get_onboarding_status.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Returns the per-step onboarding status for the current user, plus a `fullyOnboarded` flag that becomes true once every *required* step is completed or skipped. `invitedContactsStep` is reported but doesn't count towards it, so `fullyOnboarded` can be true while that step is still pending — don't derive it from the steps yourself.

## Query

```graphql
query {
  onboardingStatus {
    initialLoginStep
    personalInformationStep
    contactInformationStep
    interestsInformationStep
    socialNetworkInformationStep
    companyRegisteredStep
    invitedContactsStep
    fullyOnboarded
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "onboardingStatus": {
      "companyRegisteredStep": "INCOMPLETE",
      "contactInformationStep": "INCOMPLETE",
      "fullyOnboarded": false,
      "initialLoginStep": "INCOMPLETE",
      "interestsInformationStep": "INCOMPLETE",
      "invitedContactsStep": "COMPLETED",
      "personalInformationStep": "COMPLETED",
      "socialNetworkInformationStep": "INCOMPLETE"
    }
  }
}
```

---

# Complete Onboarding Step

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/005__complete_onboarding_step
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/005__complete_onboarding_step.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/user`

Marks a single onboarding step as COMPLETED or SKIPPED and returns the updated onboarding status. A step that is already completed stays completed.

## Query

```graphql
mutation ($step: OnboardingStep!, $status: OnboardingStepStatus!) {
  completeOnboardingStep(step: $step, status: $status) {
    personalInformationStep
    contactInformationStep
    interestsInformationStep
    socialNetworkInformationStep
    companyRegisteredStep
    fullyOnboarded
  }
}

```

## Variables

```json
{
  "status": "COMPLETED",
  "step": "PERSONAL_INFORMATION_STEP"
}
```

## Response

```json
{
  "data": {
    "completeOnboardingStep": {
      "companyRegisteredStep": "INCOMPLETE",
      "contactInformationStep": "INCOMPLETE",
      "fullyOnboarded": false,
      "interestsInformationStep": "INCOMPLETE",
      "personalInformationStep": "COMPLETED",
      "socialNetworkInformationStep": "INCOMPLETE"
    }
  }
}
```

---

# Create Support Request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/006__create_support_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/006__create_support_request.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Submits a support request with the caller's message and a reply-to email address, to be handled by the support team.

## Query

```graphql
mutation (
  $email: String!
  $message: String!
) {
  createSupportRequest (
    email: $email
    message: $message
  ) {
    status
  }
}

```

## Variables

```json
{
  "email": "test1@email.com",
  "message": "I need help with something"
}
```

## Response

```json
{
  "data": {
    "createSupportRequest": {
      "status": "OK"
    }
  }
}
```

---

# List Interests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/007__list_interests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/007__list_interests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Returns the full catalog of interests that users can attach to their profile.

## Query

```graphql
query
  {
  interests
    {
    id
    title
    description
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "interests": [
      {
        "description": null,
        "id": "00000000-0000-4000-8000-000000000001",
        "title": "Interest 1"
      },
      {
        "description": null,
        "id": "00000000-0000-4000-8000-000000000002",
        "title": "Interest 2"
      },
      {
        "description": null,
        "id": "00000000-0000-4000-8000-000000000003",
        "title": "Interest 3"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000004",
        "title": "IT"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000005",
        "title": "Crypto"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000006",
        "title": "Blockchain"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000007",
        "title": "Telecom"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000008",
        "title": "Marketing"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000009",
        "title": "Sales"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000010",
        "title": "Artificial Intelligence (AI)"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000011",
        "title": "Machine Learning (ML)"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000012",
        "title": "Finance"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000013",
        "title": "E-commerce"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000014",
        "title": "Design (UI/UX)"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000015",
        "title": "Health & Wellness"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000016",
        "title": "Environment & Sustainability"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000017",
        "title": "Personal Development"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000018",
        "title": "Gaming"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000019",
        "title": "Travel"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000020",
        "title": "Photography"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000021",
        "title": "Cooking"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000022",
        "title": "Entrepreneurship"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000023",
        "title": "Geopolitics"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000024",
        "title": "Psychology"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000025",
        "title": "Education"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000026",
        "title": "History"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000027",
        "title": "Law"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000028",
        "title": "Music"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000029",
        "title": "Film & Television"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000030",
        "title": "Literature"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000031",
        "title": "Creative Writing"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000032",
        "title": "Astronomy"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000033",
        "title": "Physics"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000034",
        "title": "Chemistry"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000035",
        "title": "Biology"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000036",
        "title": "Foreign Languages"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000037",
        "title": "Animation"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000038",
        "title": "Robotics"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000039",
        "title": "Data Analysis"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000040",
        "title": "Project Management"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000041",
        "title": "Leadership"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000042",
        "title": "Public Speaking"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000043",
        "title": "Social Media Marketing"
      }
    ]
  }
}
```

---

# Get Pending Action Counts

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/008__get_pending_action_counts
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/015_account/008__get_pending_action_counts.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/user`

Returns how many items are waiting on the current user's response, one count per kind: connection requests received from people and from companies, subscription requests, group invites, form submission requests, and documents received over a message channel awaiting confirmation.

Every kind is always present and always an integer — a kind with nothing waiting is `0`, never null or absent.

Each count resolves independently, so selecting a subset of the fields runs only those counts.

## Query

```graphql
query {
  pendingActionCounts {
    peopleConnectionRequests
    companyConnectionRequests
    subscriptionRequests
    groupInvites
    formRequests
    pendingDocuments
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingActionCounts": {
      "companyConnectionRequests": 3,
      "formRequests": 1,
      "groupInvites": 2,
      "pendingDocuments": 1,
      "peopleConnectionRequests": 2,
      "subscriptionRequests": 1
    }
  }
}
```

---

# 016\_assistant

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant.md
Last updated: 2026-09-09T03:10:23.000Z

- [Ask A Question About Using Tnid](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant/001__ask_docs_question_as_user.md)

---

# Ask A Question About Using Tnid

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant/001__ask_docs_question_as_user
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/016_assistant/001__ask_docs_question_as_user.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/user`

Answers a natural-language question from the published documentation and names the pages the answer drew on. Supplying `navigation` also lets the answer point at where to go: it is answered against exactly the entries supplied, so it never names somewhere the caller wasn't offered.

The answer shown here comes from a stubbed model, so the wording is illustrative rather than something the service guarantees.

## Query

```graphql
mutation ($question: String!, $navigation: [NavigationEntryInput!]) {
  askDocsQuestion(question: $question, navigation: $navigation) {
    answer
    citations {
      path
      title
    }
    destination {
      label
      path
    }
  }
}

```

## Variables

```json
{
  "navigation": [
    {
      "label": "Documents Repository",
      "path": "/docs",
      "section": "Docs"
    },
    {
      "label": "Client Secrets",
      "path": "/client-secrets",
      "section": "Home"
    }
  ],
  "question": "how do I run a user ai task again"
}
```

## Response

```json
{
  "data": {
    "askDocsQuestion": {
      "answer": "Call runUserAiTask with the task id. Omit ids to run it over everything the task watches.",
      "citations": [
        {
          "path": "user/documents/run-user-ai-task",
          "title": "Run a user AI task again"
        }
      ],
      "destination": null
    }
  }
}
```

---

# 017\_user\_events

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events.md
Last updated: 2026-11-06T10:11:36.615Z

- [Create user event](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/001__create_user_event.md)
- [List user events](https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/002__list_user_events.md)

---

# Create user event

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/001__create_user_event
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/001__create_user_event.md
Last updated: 2026-11-06T10:11:36.615Z

GraphQL endpoint: `/user`

Records an event about the calling user in their event ledger, on behalf of a partner application.

The partner's backend, authenticated as its company, first mints an `event_token` for the user with `POST /auth/user-event-token`; its frontend then calls this mutation with the user's own session and that token. The token is valid for an hour and for any number of requests by that user.

Every event has a fixed envelope — `type`, `externalRef` and `occurredAt` — and a free-form JSON object `payload` whose shape is defined by the type. `type` must start with the prefix TNID granted the company (e.g. `hoozit.`); the event is always about, and recorded by, the calling user.

Posting the same `externalRef` again returns the event already recorded under it, unchanged. The ledger is append-only: events cannot be changed or deleted, and a correction is recorded as a new event.

## Query

```graphql
mutation (
  $eventToken: String!
  $type: String!
  $externalRef: String!
  $occurredAt: DateTime!
  $payload: JSON!
  $subjectUserId: ID
) {
  createUserEvent(
    eventToken: $eventToken
    type: $type
    externalRef: $externalRef
    occurredAt: $occurredAt
    payload: $payload
    subjectUserId: $subjectUserId
  ) {
    id
    type
    payload
    externalRef
    occurredAt
    recordedAt
    subjectUserId
    actorUserId
  }
}

```

## Variables

```json
{
  "eventToken": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "externalRef": "order-1001",
  "occurredAt": "2026-01-15T09:00:01Z",
  "payload": {
    "orderId": "1001",
    "total": {
      "amount": 2599,
      "currency": "USD"
    }
  },
  "type": "hoozit.order.completed"
}
```

## Response

```json
{
  "data": {
    "createUserEvent": {
      "actorUserId": "00000000-0000-4000-8000-000000000001",
      "externalRef": "order-1001",
      "id": "00000000-0000-4000-8000-000000000002",
      "occurredAt": "2026-01-15T09:00:00.000000Z",
      "payload": {
        "orderId": "1001",
        "total": {
          "amount": 2599,
          "currency": "USD"
        }
      },
      "recordedAt": "2026-01-15T09:00:02.000000",
      "subjectUserId": "00000000-0000-4000-8000-000000000001",
      "type": "hoozit.order.completed"
    }
  }
}
```

---

# List user events

Source: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/002__list_user_events
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/001_user/017_user_events/002__list_user_events.md
Last updated: 2026-11-06T10:11:36.615Z

GraphQL endpoint: `/user`

Lists the events a partner application recorded about the calling user, most recently recorded first, cursor-paginated. Called with the user's own session and an `event_token` minted by the partner's backend (`POST /auth/user-event-token`); only events under that company's prefix are returned.

Filter with `typePrefix` (which must start with the company's prefix, e.g. `hoozit.order`) and with `occurredFrom` (inclusive) and `occurredTo` (exclusive). Pass paginationInfo.nextCursor back as the cursor argument to fetch the next page.

## Query

```graphql
query (
  $eventToken: String!
  $typePrefix: String
  $occurredFrom: DateTime
  $occurredTo: DateTime
  $limit: Int
  $cursor: String
) {
  userEvents(
    eventToken: $eventToken
    typePrefix: $typePrefix
    occurredFrom: $occurredFrom
    occurredTo: $occurredTo
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo { limit nextCursor }
    records { id type payload externalRef occurredAt recordedAt subjectUserId actorUserId }
  }
}

```

## Variables

```json
{
  "eventToken": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "limit": 2
}
```

## Response

```json
{
  "data": {
    "userEvents": {
      "paginationInfo": {
        "limit": 2,
        "nextCursor": "MjAyNi0xMS0wNVQwOToyNjozOS42MTI2MjR8fDY0MTU0MTAzLWM0M2YtNDgyZi1hNzMzLTczZWE5NzFlOGVmYQ=="
      },
      "records": [
        {
          "actorUserId": "00000000-0000-4000-8000-000000000001",
          "externalRef": "ref-2",
          "id": "00000000-0000-4000-8000-000000000002",
          "occurredAt": "2026-01-15T09:00:02.000000Z",
          "payload": {
            "n": 3
          },
          "recordedAt": "2026-01-15T09:00:03.000000",
          "subjectUserId": "00000000-0000-4000-8000-000000000001",
          "type": "hoozit.thing.happened"
        },
        {
          "actorUserId": "00000000-0000-4000-8000-000000000001",
          "externalRef": "ref-1",
          "id": "00000000-0000-4000-8000-000000000003",
          "occurredAt": "2026-01-15T09:00:00.000000Z",
          "payload": {
            "n": 2
          },
          "recordedAt": "2026-01-15T09:00:01.000000",
          "subjectUserId": "00000000-0000-4000-8000-000000000001",
          "type": "hoozit.thing.happened"
        }
      ]
    }
  }
}
```

---

# 002\_company

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company.md
Last updated: 2026-09-09T03:10:23.000Z

- [Authenticate Company](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001__authenticate.md)
- [Refresh Authentication (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002__refresh_authentication_as_company.md)
- [001\_companies](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies.md)
- [Search companies](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/001__search_companies.md)
- [Invite company to join platform](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/002__invite_company_to_join_platform.md)
- [Update company](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/003__update_company.md)
- [001\_profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile.md)
- [Update Company Profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/001__update_company_profile.md)
- [Get Current Company Profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/002__get_current_company.md)
- [002\_email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email.md)
- [Create Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/001__create_company_email.md)
- [Create company email verification code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/002__create_company_email_verification_code.md)
- [Verify Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/003__verify_company_email.md)
- [Update Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/004__update_company_email.md)
- [Remove Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/005__remove_company_email.md)
- [002\_ten\_dlc](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc.md)
- [List 10DLC API keys](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/001__list_api_keys.md)
- [Register 10DLC Api Key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/002__register_api_key.md)
- [Update 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/003__update_api_key.md)
- [Delete 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/004__delete_api_key.md)
- [List 10DLC API key authorizations](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/005__list_api_key_authorizations.md)
- [Authorize 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/006__authorize_api_key.md)
- [Revoke 10DLC Api Key Authorization](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/007__revoke_api_key_authorization.md)
- [List 10DLC brands](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/008__list_brands.md)
- [Get 10DLC brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/009__get_brand.md)
- [Save 10DLC Brand As Draft](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/010__save_brand_as_draft.md)
- [Update Draft 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/011__update_draft_brand.md)
- [Register 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/012__register_brand.md)
- [Update and submit 10DLC brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/013__update_and_submit_brand.md)
- [List 10DLC campaigns](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/014__list_campaigns.md)
- [Get 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/015__get_campaign.md)
- [Get 10DLC campaign with telephone numbers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/016__get_campaign_with_telephone_numbers.md)
- [Save 10DLC campaign as draft](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/017__save_campaign_as_draft.md)
- [Update draft 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/018__update_campaign_draft.md)
- [Register and submit 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/019__register_and_submit_campaign.md)
- [Submit 10DLC campaign when brand is ready](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/020__submit_campaign_when_ready.md)
- [Update submitted 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/021__update_submitted_campaign.md)
- [Delete 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/022__delete_brand.md)
- [Delete 10DLC Campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/023__delete_campaign.md)
- [003\_address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address.md)
- [Create Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/001__create_company_address.md)
- [Update Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/002__update_company_address.md)
- [Remove Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/003__remove_company_address.md)
- [003\_message\_sentiment\_analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis.md)
- [Report communication for analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/001__report_communication_for_analysis.md)
- [Confirm Unsubscribe Based On Analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/002__confirm_unsubscribe_based_on_analysis.md)
- [List Sentiment Analysis Results](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/003__list_sentiment_analysis_results.md)
- [List Sentiment Analysis Results (Cursor-paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/004__list_paginated_sentiment_analysis_results.md)
- [Get Sentiment Analysis Result](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/005__get_sentiment_analysis_result.md)
- [004\_misc](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc.md)
- [List Organization Types](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/001__list_organization_types.md)
- [List Vertical Types](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/002__list_vertical_types.md)
- [List Specialties](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/003__list_specialties.md)
- [004\_telephone\_number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number.md)
- [Create Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/001__create_company_telephone_number.md)
- [Create company telephone number verification code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/002__create_company_telephone_number_verification_code.md)
- [Verify Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/003__verify_company_telephone_number.md)
- [Update Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/004__update_company_telephone_number.md)
- [Remove Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/005__remove_company_telephone_number.md)
- [005\_b2b\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections.md)
- [Create B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/001__create_b2b_connection_request.md)
- [List B2B connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/002__list_b2b_connections.md)
- [List B2B connections (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/003__list_paginated_b2b_connections.md)
- [Remove B2B connection](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/004__remove_b2b_connection.md)
- [List pending B2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/005__list_pending_b2b_connection_requests.md)
- [List Pending B2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/006__list_paginated_pending_b2b_connection_requests.md)
- [Revoke B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/007__revoke_b2b_connection_request.md)
- [List received B2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/008__list_received_b2b_connection_requests.md)
- [List Received B2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/009__list_paginated_received_b2b_connection_requests.md)
- [Respond to B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/010__respond_b2b_connection_request.md)
- [006\_b2c\_connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections.md)
- [Create B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/001__create_b2c_connection_request.md)
- [List B2C connections (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/002__list_b2c_connections_as_company.md)
- [List B2C Connections (Company, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/003__list_paginated_b2c_connections_as_company.md)
- [List pending B2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/004__list_pending_b2c_connection_requests.md)
- [List Pending B2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/005__list_paginated_pending_b2c_connection_requests.md)
- [List received C2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/006__list_received_c2b_connection_requests.md)
- [List Received C2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/007__list_paginated_received_c2b_connection_requests.md)
- [Respond to C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/008__respond_c2b_connection_request.md)
- [Remove B2C connection](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/009__remove_b2c_connection.md)
- [Revoke B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/010__revoke_b2c_connection_request.md)
- [Create B2C invite](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/011__create_b2c_invite.md)
- [007\_b2c\_subscriptions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions.md)
- [List B2C subscriptions (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/001__list_b2c_subscriptions_as_company.md)
- [List pending B2C subscription requests (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/002__list_pending_b2c_subscription_requests_as_company.md)
- [List Pending B2C Subscription Requests (Company, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/003__list_paginated_pending_b2c_subscription_requests_as_company.md)
- [Create B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/004__create_b2c_subscription_request.md)
- [Revoke B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/005__revoke_b2c_subscription_request.md)
- [Remove B2C subscription (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/006__remove_b2c_subscription_as_company.md)
- [List B2C Subscription Topics](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/007__list_b2c_subscription_topics.md)
- [Create B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/008__create_b2c_subscription_topic.md)
- [Update B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/009__update_b2c_subscription_topic.md)
- [Remove B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/010__remove_b2c_subscription_topic.md)
- [008\_opt\_out](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out.md)
- [List Opt-Out Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/001__list_opt_out_requests.md)
- [Create Opt-Out Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/002__create_opt_out_request.md)
- [009\_sms\_opt\_in](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in.md)
- [Generate SMS Opt-In QR Code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in/001__generate_sms_opt_in_qr_code.md)
- [010\_users\_and\_search](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search.md)
- [Get User (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/001__get_user_as_company.md)
- [Get User By Username (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/002__get_user_by_username_as_company.md)
- [Search For Users (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/003__search_for_users_as_company.md)
- [Global Search (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/004__global_search_as_company.md)
- [011\_documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents.md)
- [Prepare File Upload (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/001__prepare_file_upload_as_company.md)
- [Prepare document upload (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/002__prepare_document_upload_as_company.md)
- [Confirm Document Upload (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/003__confirm_document_upload_as_company.md)
- [Accept Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/004__accept_company_documents.md)
- [Get Company Document](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/005__get_company_document.md)
- [List Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/006__list_paginated_company_documents.md)
- [Update Company Document](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/007__update_company_document.md)
- [Move Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/008__move_company_documents.md)
- [Delete Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/009__delete_company_documents.md)
- [Restore Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/010__restore_company_documents.md)
- [Permanently Delete Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/011__permanently_delete_company_documents.md)
- [Empty Company Trash](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/012__empty_company_trash.md)
- [Ask A Question Of The Company's Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/013__ask_company_document_question.md)
- [Create Company Folder](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/014__create_company_folder.md)
- [Update Company Folder](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/015__update_company_folder.md)
- [Move Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/016__move_company_folders.md)
- [Delete Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/017__delete_company_folders.md)
- [List Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/018__list_company_folders.md)
- [Create Company Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/019__create_company_tag.md)
- [Delete Company Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/020__delete_company_tag.md)
- [List Company Tags](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/021__list_company_tags.md)
- [Add Company Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/022__add_company_document_tag.md)
- [Remove Company Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/023__remove_company_document_tag.md)
- [List Company AI Tasks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/024__list_paginated_company_ai_tasks.md)
- [Get One Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/025__get_company_ai_task.md)
- [List A Company AI Task's Answers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/026__list_paginated_company_ai_task_runs.md)
- [Create A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/027__create_company_ai_task.md)
- [Update A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/028__update_company_ai_task.md)
- [Run A Company AI Task Again](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/029__run_company_ai_task.md)
- [Delete A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/030__delete_company_ai_task.md)
- [012\_notifications](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications.md)
- [List notifications (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/001__list_notifications_as_company.md)
- [Get Unread Notification Count (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/002__get_unread_notification_count_as_company.md)
- [Mark Notification As Read (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/003__mark_notification_as_read_as_company.md)
- [Mark All Notifications As Read (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/004__mark_all_notifications_as_read_as_company.md)
- [013\_forms](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms.md)
- [List company forms](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/001__list_company_forms.md)
- [Get company form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/002__get_company_form.md)
- [Create Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/003__create_form.md)
- [Update Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/004__update_form.md)
- [Delete Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/005__delete_form.md)
- [Create Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/006__create_form_version.md)
- [Update Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/007__update_form_version.md)
- [Publish Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/008__publish_form_version.md)
- [List form versions (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/009__list_paginated_form_versions.md)
- [Create B2C Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/010__create_b2c_form_submission_request.md)
- [Create B2B Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/011__create_b2b_form_submission_request.md)
- [List Received B2B Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/012__list_received_b2b_form_submission_requests.md)
- [List Received B2B Form Submission Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/013__list_paginated_received_b2b_form_submission_requests.md)
- [Reject B2B Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/014__reject_b2b_form_submission_request.md)
- [List Sent B2C Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/015__list_sent_b2c_form_submission_requests.md)
- [List Sent B2B Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/016__list_sent_b2b_form_submission_requests.md)
- [List form submissions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/017__list_form_submissions.md)
- [Get Form Submission](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/018__get_form_submission.md)
- [014\_webhooks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks.md)
- [List Company Webhooks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/001__list_company_webhooks.md)
- [Create Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/002__create_company_webhook.md)
- [Update Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/003__update_company_webhook.md)
- [Remove Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/004__remove_company_webhook.md)
- [015\_invitation\_links](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links.md)
- [List company invitation links](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/001__list_company_invitation_links.md)
- [List company invitation links (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/002__list_paginated_company_invitation_links.md)
- [Create company invitation link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/003__create_company_invitation_link.md)
- [Update Company Invitation Link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/004__update_company_invitation_link.md)
- [Delete Company Invitation Link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/005__delete_company_invitation_link.md)
- [016\_client\_secrets](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets.md)
- [List client secrets](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/001__list_client_secrets.md)
- [List Client Secrets (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/002__list_paginated_client_secrets.md)
- [Create client secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/003__create_client_secret.md)
- [Update Client Secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/004__update_client_secret.md)
- [Delete Client Secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/005__delete_client_secret.md)
- [017\_user\_imports](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports.md)
- [Import users from CSV](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/001__import_users_from_csv.md)
- [List user imports](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/002__list_user_imports.md)
- [Get user import](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/003__get_user_import.md)
- [018\_rcs\_and\_ai\_suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions.md)
- [Get company RCS information](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/001__get_company_rcs_information.md)
- [Upsert Company RCS Information](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/002__upsert_company_rcs_information.md)
- [Get AI Company Profile Suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/003__get_ai_company_profile_suggestions.md)
- [Get AI RCS Suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/004__get_ai_rcs_suggestions.md)
- [Get AI Form Suggestions From Url](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/005__get_ai_form_suggestions_from_url.md)
- [Get AI Form Suggestions From File](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/006__get_ai_form_suggestions_from_file.md)
- [019\_settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings.md)
- [Get Company Settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/001__get_current_company_settings.md)
- [Update company settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/002__update_company_settings.md)
- [Get company dashboard stats](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/003__get_company_dashboard_stats.md)
- [Get Company Pending Action Counts](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/004__get_company_pending_action_counts.md)
- [020\_assistant](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant.md)
- [Ask A Question About Using Tnid](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant/001__ask_docs_question_as_company.md)
- [021\_user\_events](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events.md)
- [Create user event token](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events/001__create_user_event_token.md)

---

# Authenticate Company

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001__authenticate
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001__authenticate.md
Last updated: 2026-08-25T03:27:07.791Z

HTTP API `POST` `/auth/token`

To start using the API as a company you need to have a registered company and provision a client secret for the company.

The prerequisites for that are first registering onto the platform as a user, after that you need to register your company via the app and then create a client secret for the company.

## Request

```json
{
  "client_id": "client_id",
  "client_secret": "client_secret_1"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "access_token": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "refresh_token": "eyJERAMPLE.PAYLOAD2.SIGNATURE"
}
```

---

# Refresh Authentication (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002__refresh_authentication_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002__refresh_authentication_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

HTTP API `POST` `/auth/refresh-token`

Access tokens have a limited lifetime, after which they expire and can no longer be used to access protected resources. To continue accessing these resources without requiring re-authentication, refresh tokens are used. A refresh token is a long-lived token that can be exchanged for a new access token.

## Request

```json
{
  "refresh_token": "eyJERAMPLE.PAYLOAD3.SIGNATURE"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "access_token": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "refresh_token": "eyJERAMPLE.PAYLOAD2.SIGNATURE"
}
```

---

# 001\_companies

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies.md
Last updated: 2026-09-09T03:10:23.000Z

- [Search companies](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/001__search_companies.md)
- [Invite company to join platform](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/002__invite_company_to_join_platform.md)
- [Update company](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/003__update_company.md)

---

# Search companies

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/001__search_companies
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/001__search_companies.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Search for companies registered on the platform.

## Query

```graphql
query (
  $id: ID
  $name: String
  $taxId: String
  $email: String
  $telephoneNumber: String
  $webpage: String
  $limit: Int
  $metadata: JSON
) {
  companies (
    id: $id
    name: $name
    taxId: $taxId
    email: $email
    telephoneNumber: $telephoneNumber
    webpage: $webpage
    limit: $limit
    metadata: $metadata
  ) {
    id
    legalName
    brandName
    profileName
    yearFounded
    aboutUs
    metadata
    verified
    logoUrl
    verticalType {
      id
      displayName
      description
    }
    organizationType {
      id
      displayName
    }
    addresses {
      city
      country
      state
      street
      types
      zipCode
      visibility
    }
    emails {
      email
      types
      visibility
    }
    telephoneNumbers {
      number
      types
      visibility
    }
    socialNetworks {
      type
      url
      visibility
    }
    webpages {
      type
      url
      visibility
    }
    specialties {
      description
      title
    }
    trustedDomains {
      domain
    }
    subscriptionTopics {
      id
      name
    }
    subscriptionSettings {
      enable_email
      enable_sms
      enable_voice
    }
    taxIds {
      id
      type
      value
      usState
      visibility
    }
    legalNameVisibility
    brandNameVisibility
    aboutUsVisibility
    yearFoundedVisibility
    verticalTypeVisibility
    organizationTypeVisibility
    specialtiesVisibility
    b2cVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companies": [
      {
        "aboutUs": "about us content",
        "aboutUsVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 1",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "b2cVisibility": null,
        "brandName": "1brand-name",
        "brandNameVisibility": null,
        "emails": [
          {
            "email": "test2@email.com",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "id": "00000000-0000-4000-8000-000000000001",
        "legalName": "2legal-name",
        "legalNameVisibility": null,
        "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "organizationType": {
          "displayName": "display_name_3",
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "organizationTypeVisibility": null,
        "profileName": "3profile-name",
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm4.not",
            "visibility": null
          }
        ],
        "specialties": [
          {
            "description": null,
            "title": "Telecommunications"
          }
        ],
        "specialtiesVisibility": null,
        "subscriptionSettings": null,
        "subscriptionTopics": [
          {
            "id": "00000000-0000-4000-8000-000000000003",
            "name": "topic_5"
          },
          {
            "id": "00000000-0000-4000-8000-000000000004",
            "name": "topic_6"
          }
        ],
        "taxIds": [],
        "telephoneNumbers": [
          {
            "number": "7",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "trustedDomains": null,
        "verified": true,
        "verticalType": {
          "description": "description_8",
          "displayName": "display_name_9",
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "verticalTypeVisibility": null,
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage10.not",
            "visibility": null
          }
        ],
        "yearFounded": 2000,
        "yearFoundedVisibility": null
      },
      {
        "aboutUs": "about us content",
        "aboutUsVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 11",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "b2cVisibility": null,
        "brandName": "4brand-name",
        "brandNameVisibility": null,
        "emails": [
          {
            "email": "test12@email.com",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "id": "00000000-0000-4000-8000-000000000006",
        "legalName": "5legal-name",
        "legalNameVisibility": null,
        "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "organizationType": {
          "displayName": "display_name_13",
          "id": "00000000-0000-4000-8000-000000000007"
        },
        "organizationTypeVisibility": null,
        "profileName": "6profile-name",
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm14.not",
            "visibility": null
          }
        ],
        "specialties": [
          {
            "description": null,
            "title": "Telecommunications"
          }
        ],
        "specialtiesVisibility": null,
        "subscriptionSettings": null,
        "subscriptionTopics": [
          {
            "id": "00000000-0000-4000-8000-000000000008",
            "name": "topic_15"
          },
          {
            "id": "00000000-0000-4000-8000-000000000009",
            "name": "topic_16"
          }
        ],
        "taxIds": [],
        "telephoneNumbers": [
          {
            "number": "17",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "trustedDomains": null,
        "verified": true,
        "verticalType": {
          "description": "description_18",
          "displayName": "display_name_19",
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "verticalTypeVisibility": null,
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage20.not",
            "visibility": null
          }
        ],
        "yearFounded": 2000,
        "yearFoundedVisibility": null
      },
      {
        "aboutUs": "about us content",
        "aboutUsVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 21",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "b2cVisibility": null,
        "brandName": "7brand-name",
        "brandNameVisibility": null,
        "emails": [
          {
            "email": "test22@email.com",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "id": "00000000-0000-4000-8000-000000000011",
        "legalName": "8legal-name",
        "legalNameVisibility": null,
        "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "organizationType": {
          "displayName": "display_name_23",
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "organizationTypeVisibility": null,
        "profileName": "9profile-name",
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm24.not",
            "visibility": null
          }
        ],
        "specialties": [
          {
            "description": null,
            "title": "Telecommunications"
          }
        ],
        "specialtiesVisibility": null,
        "subscriptionSettings": null,
        "subscriptionTopics": [
          {
            "id": "00000000-0000-4000-8000-000000000013",
            "name": "topic_25"
          },
          {
            "id": "00000000-0000-4000-8000-000000000014",
            "name": "topic_26"
          }
        ],
        "taxIds": [],
        "telephoneNumbers": [
          {
            "number": "27",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "trustedDomains": null,
        "verified": true,
        "verticalType": {
          "description": "description_28",
          "displayName": "display_name_29",
          "id": "00000000-0000-4000-8000-000000000015"
        },
        "verticalTypeVisibility": null,
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage30.not",
            "visibility": null
          }
        ],
        "yearFounded": 2000,
        "yearFoundedVisibility": null
      },
      {
        "aboutUs": "about us content",
        "aboutUsVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 31",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "b2cVisibility": null,
        "brandName": "10brand-name",
        "brandNameVisibility": null,
        "emails": [
          {
            "email": "test32@email.com",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "id": "00000000-0000-4000-8000-000000000016",
        "legalName": "11legal-name",
        "legalNameVisibility": null,
        "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "organizationType": {
          "displayName": "display_name_33",
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "organizationTypeVisibility": null,
        "profileName": "12profile-name",
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm34.not",
            "visibility": null
          }
        ],
        "specialties": [
          {
            "description": null,
            "title": "Telecommunications"
          }
        ],
        "specialtiesVisibility": null,
        "subscriptionSettings": null,
        "subscriptionTopics": [
          {
            "id": "00000000-0000-4000-8000-000000000018",
            "name": "topic_35"
          },
          {
            "id": "00000000-0000-4000-8000-000000000019",
            "name": "topic_36"
          }
        ],
        "taxIds": [],
        "telephoneNumbers": [
          {
            "number": "37",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "trustedDomains": null,
        "verified": true,
        "verticalType": {
          "description": "description_38",
          "displayName": "display_name_39",
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "verticalTypeVisibility": null,
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage40.not",
            "visibility": null
          }
        ],
        "yearFounded": 2000,
        "yearFoundedVisibility": null
      },
      {
        "aboutUs": "about us content",
        "aboutUsVisibility": [
          "PUBLIC"
        ],
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 41",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": [
              "PUBLIC"
            ],
            "zipCode": "12345"
          }
        ],
        "b2cVisibility": [
          "PUBLIC"
        ],
        "brandName": "13brand-name",
        "brandNameVisibility": [
          "PUBLIC"
        ],
        "emails": [
          {
            "email": "test42@email.com",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": [
              "PUBLIC"
            ]
          }
        ],
        "id": "00000000-0000-4000-8000-000000000021",
        "legalName": "14legal-name",
        "legalNameVisibility": [
          "PUBLIC"
        ],
        "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": [
          "PUBLIC"
        ],
        "organizationType": {
          "displayName": "display_name_43",
          "id": "00000000-0000-4000-8000-000000000022"
        },
        "organizationTypeVisibility": [
          "PUBLIC"
        ],
        "profileName": "15profile-name",
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm44.not",
            "visibility": [
              "PUBLIC"
            ]
          }
        ],
        "specialties": [
          {
            "description": null,
            "title": "Telecommunications"
          }
        ],
        "specialtiesVisibility": [
          "PUBLIC"
        ],
        "subscriptionSettings": {
          "enable_email": true,
          "enable_sms": true,
          "enable_voice": true
        },
        "subscriptionTopics": [
          {
            "id": "00000000-0000-4000-8000-000000000023",
            "name": "topic_45"
          },
          {
            "id": "00000000-0000-4000-8000-000000000024",
            "name": "topic_46"
          }
        ],
        "taxIds": [
          {
            "id": "00000000-0000-4000-8000-000000000025",
            "type": "EIN",
            "usState": null,
            "value": "100000645",
            "visibility": [
              "PRIVATE"
            ]
          }
        ],
        "telephoneNumbers": [
          {
            "number": "47",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": [
              "PUBLIC"
            ]
          }
        ],
        "trustedDomains": [],
        "verified": true,
        "verticalType": {
          "description": "description_48",
          "displayName": "display_name_49",
          "id": "00000000-0000-4000-8000-000000000026"
        },
        "verticalTypeVisibility": [
          "PUBLIC"
        ],
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage50.not",
            "visibility": [
              "PUBLIC"
            ]
          }
        ],
        "yearFounded": 2000,
        "yearFoundedVisibility": [
          "PUBLIC"
        ]
      },
      {
        "aboutUs": "about us content",
        "aboutUsVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 51",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "b2cVisibility": null,
        "brandName": "16brand-name",
        "brandNameVisibility": null,
        "emails": [
          {
            "email": "test52@email.com",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "id": "00000000-0000-4000-8000-000000000027",
        "legalName": "17legal-name",
        "legalNameVisibility": null,
        "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "organizationType": {
          "displayName": "display_name_53",
          "id": "00000000-0000-4000-8000-000000000028"
        },
        "organizationTypeVisibility": null,
        "profileName": "18profile-name",
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm54.not",
            "visibility": null
          }
        ],
        "specialties": [
          {
            "description": null,
            "title": "Telecommunications"
          }
        ],
        "specialtiesVisibility": null,
        "subscriptionSettings": null,
        "subscriptionTopics": [
          {
            "id": "00000000-0000-4000-8000-000000000029",
            "name": "topic_55"
          },
          {
            "id": "00000000-0000-4000-8000-000000000030",
            "name": "topic_56"
          }
        ],
        "taxIds": [],
        "telephoneNumbers": [
          {
            "number": "57",
            "types": [
              "HEADQUARTERS"
            ],
            "visibility": null
          }
        ],
        "trustedDomains": null,
        "verified": true,
        "verticalType": {
          "description": "description_58",
          "displayName": "display_name_59",
          "id": "00000000-0000-4000-8000-000000000031"
        },
        "verticalTypeVisibility": null,
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage60.not",
            "visibility": null
          }
        ],
        "yearFounded": 2000,
        "yearFoundedVisibility": null
      }
    ]
  }
}
```

---

# Invite company to join platform

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/002__invite_company_to_join_platform
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/002__invite_company_to_join_platform.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Use the `createB2bInvite` mutation to invite other companies to join the platform.

## Query

```graphql
mutation (
  $company: CompanyInput!
  $representatives: [InviteUserInput!]!
  $connectionType: B2bConnectionType!
) {
  createB2bInvite (
    company: $company
    representatives: $representatives
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id,
      profileName
    }
  }
}

```

## Variables

```json
{
  "company": {
    "aboutUs": "we are a nice company",
    "addresses": [
      {
        "city": "nice city",
        "country": "United States",
        "state": "Alabama",
        "street": "nice street",
        "types": [
          "SUPPORT"
        ],
        "zipCode": "123"
      }
    ],
    "brandName": "2brand-name",
    "legalName": "1legal-name",
    "yearFounded": 1900
  },
  "connectionType": "PARTNER",
  "representatives": [
    {
      "email": "test1@email.com",
      "firstName": "3john",
      "lastName": "4doe",
      "sendInviteEmail": true,
      "telephoneNumber": "2"
    }
  ]
}
```

## Response

```json
{
  "data": {
    "createB2bInvite": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000003",
        "profileName": "1legal-name-okcx"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": null
    }
  }
}
```

---

# Update company

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/003__update_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_companies/003__update_company.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Update company information.

## Query

```graphql
mutation (
  $legalName: String
  $brandName: String
  $profileName: String
  $yearFounded: Int
  $aboutUs: String
  $metadata: JSON
  $secretStorage: JSON
  $emails: [CompanyEmailInput]
  $telephoneNumbers: [CompanyTelephoneNumberInput]
  $addresses: [CompanyAddressInput]
  $webpages: [CompanyWebpageInput]
  $socialNetworks: [CompanySocialMediaInput]
  $trustedDomains: [TrustedDomainInput]
  $subscriptionTopics: [B2cSubscriptionTopicInput]
  $subscriptionSettings: CompanySubscriptionSettingsInput
  $taxIds: [CompanyTaxIdInput!]
  $verticalTypeId: ID
  $organizationTypeId: ID
  $companySpecialties: [ID]
  $legalNameVisibility: [CompanyVisibilityType!]
  $brandNameVisibility: [CompanyVisibilityType!]
  $logoUrlVisibility: [CompanyVisibilityType!]
  $aboutUsVisibility: [CompanyVisibilityType!]
  $yearFoundedVisibility: [CompanyVisibilityType!]
  $verticalTypeVisibility: [CompanyVisibilityType!]
  $organizationTypeVisibility: [CompanyVisibilityType!]
  $specialtiesVisibility: [CompanyVisibilityType!]
  $b2cVisibility: [CompanyVisibilityType!]
  $metadataVisibility: [CompanyVisibilityType!]
) {
  updateCompany (
    legalName: $legalName
    brandName: $brandName
    profileName: $profileName
    yearFounded: $yearFounded
    aboutUs: $aboutUs
    metadata: $metadata
    secretStorage: $secretStorage
    emails: $emails
    telephoneNumbers: $telephoneNumbers
    addresses: $addresses
    webpages: $webpages
    socialNetworks: $socialNetworks
    trustedDomains: $trustedDomains
    subscriptionTopics: $subscriptionTopics
    subscriptionSettings: $subscriptionSettings
    taxIds: $taxIds
    verticalTypeId: $verticalTypeId
    organizationTypeId: $organizationTypeId
    companySpecialties: $companySpecialties
    legalNameVisibility: $legalNameVisibility
    brandNameVisibility: $brandNameVisibility
    logoUrlVisibility: $logoUrlVisibility
    aboutUsVisibility: $aboutUsVisibility
    yearFoundedVisibility: $yearFoundedVisibility
    verticalTypeVisibility: $verticalTypeVisibility
    organizationTypeVisibility: $organizationTypeVisibility
    specialtiesVisibility: $specialtiesVisibility
    b2cVisibility: $b2cVisibility
    metadataVisibility: $metadataVisibility
  ) {
    id
    metadata
    secretStorage
  }
}

```

## Variables

```json
{
  "aboutUs": "updated about us",
  "aboutUsVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "addresses": [
    {
      "city": "test city",
      "country": "United States",
      "state": "Alabama",
      "street": "test street 3",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ],
      "zipCode": "12345"
    },
    {
      "city": "test city",
      "country": "United States",
      "state": "Alabama",
      "street": "test street 4",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ],
      "zipCode": "12345"
    }
  ],
  "b2cVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "brandName": "updated-brand_name",
  "brandNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "companySpecialties": [
    "00000000-0000-4000-8000-000000000008"
  ],
  "emails": [
    {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000002",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "email": "test2@email.com",
      "id": null,
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "legalName": "updated-legal_name",
  "legalNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "logoUrlVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "metadata": {
    "test": "updated-value"
  },
  "metadataVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "organizationTypeId": "00000000-0000-4000-8000-000000000007",
  "organizationTypeVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "profileName": "updated-profile-name",
  "secretStorage": {
    "secret_test": "secret-value"
  },
  "socialNetworks": [
    {
      "type": "FACEBOOK",
      "url": "https://test-sm9.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "type": "FACEBOOK",
      "url": "https://test-sm10.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "specialtiesVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "subscriptionSettings": {
    "enable_email": false,
    "enable_sms": false,
    "enable_voice": false
  },
  "subscriptionTopics": [
    {
      "enable_email": false,
      "enable_sms": false,
      "enable_voice": false,
      "id": "00000000-0000-4000-8000-000000000004",
      "name": "topic_11",
      "type": "CRITICAL"
    },
    {
      "enable_email": false,
      "enable_sms": false,
      "enable_voice": false,
      "name": "new topic",
      "type": "CRITICAL"
    }
  ],
  "taxIds": [
    {
      "id": "00000000-0000-4000-8000-000000000005",
      "type": "EIN",
      "value": "112233445",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "type": "SALES_TAX_ID",
      "usState": "NY",
      "value": "987654321",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "telephoneNumbers": [
    {
      "country_code": "1",
      "id": "00000000-0000-4000-8000-000000000003",
      "number": "7",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "country_code": "1",
      "number": "8",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "trustedDomains": [
    {
      "domain": "test123.com"
    },
    {
      "domain": "test456.com"
    }
  ],
  "verticalTypeId": "00000000-0000-4000-8000-000000000006",
  "verticalTypeVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "webpages": [
    {
      "type": "WEBPAGE",
      "url": "https://test-webpage5.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    },
    {
      "type": "WEBPAGE",
      "url": "https://test-webpage6.not",
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  ],
  "yearFounded": 2000,
  "yearFoundedVisibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "updateCompany": {
      "id": "00000000-0000-4000-8000-000000000001",
      "metadata": {
        "test": "updated-value"
      },
      "secretStorage": {
        "secret_test": "secret-value"
      }
    }
  }
}
```

---

# 001\_profile

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile.md
Last updated: 2026-09-09T03:10:23.000Z

- [Update Company Profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/001__update_company_profile.md)
- [Get Current Company Profile](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/002__get_current_company.md)

---

# Update Company Profile

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/001__update_company_profile
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/001__update_company_profile.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Update the company's profile information including basic details and visibility settings. This mutation allows comprehensive updates to company profile data.

## Query

```graphql
mutation (
  $legalName: String
  $brandName: String
  $profileName: String
  $yearFounded: Int
  $aboutUs: String
  $metadata: JSON
  $legalNameVisibility: [CompanyVisibilityType!]
  $brandNameVisibility: [CompanyVisibilityType!]
  $aboutUsVisibility: [CompanyVisibilityType!]
  $yearFoundedVisibility: [CompanyVisibilityType!]
  $metadataVisibility: [CompanyVisibilityType!]
) {
  updateCompany (
    legalName: $legalName
    brandName: $brandName
    profileName: $profileName
    yearFounded: $yearFounded
    aboutUs: $aboutUs
    metadata: $metadata
    legalNameVisibility: $legalNameVisibility
    brandNameVisibility: $brandNameVisibility
    aboutUsVisibility: $aboutUsVisibility
    yearFoundedVisibility: $yearFoundedVisibility
    metadataVisibility: $metadataVisibility
  ) {
    id
    legalName
    brandName
    profileName
    yearFounded
    aboutUs
    metadata
  }
}

```

## Variables

```json
{
  "aboutUs": "Updated company description",
  "aboutUsVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "brandName": "Updated Brand",
  "brandNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "legalName": "Updated Legal Name Inc",
  "legalNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "metadata": {
    "updated_key": "updated_value"
  },
  "metadataVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "profileName": "updated-profile",
  "yearFounded": 2015,
  "yearFoundedVisibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "updateCompany": {
      "aboutUs": "Updated company description",
      "brandName": "Updated Brand",
      "id": "00000000-0000-4000-8000-000000000001",
      "legalName": "Updated Legal Name Inc",
      "metadata": {
        "updated_key": "updated_value"
      },
      "profileName": "updated-profile",
      "yearFounded": 2015
    }
  }
}
```

---

# Get Current Company Profile

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/002__get_current_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/001_profile/002__get_current_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Retrieves the authenticated company's own profile information for the current session.

## Query

```graphql
query {
  currentCompany {
    id
    profileName
    documentRepositoryEmailAddress
    legalName
    brandName
    logoUrl
    verified
    aboutUs
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "currentCompany": {
      "aboutUs": "about us content",
      "brandName": "1brand-name",
      "documentRepositoryEmailAddress": "2profile-name@parse.tnid.test",
      "id": "00000000-0000-4000-8000-000000000001",
      "legalName": "3legal-name",
      "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
      "profileName": "2profile-name",
      "verified": true
    }
  }
}
```

---

# 002\_email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/001__create_company_email.md)
- [Create company email verification code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/002__create_company_email_verification_code.md)
- [Verify Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/003__verify_company_email.md)
- [Update Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/004__update_company_email.md)
- [Remove Company Email](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/005__remove_company_email.md)

---

# Create Company Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/001__create_company_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/001__create_company_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Create a new email address for the company. The email will be added to the company's profile with the specified types and visibility settings.

## Query

```graphql
mutation (
  $email: String!
  $types: [CompanyEmailType!]
  $visibility: [CompanyVisibilityType!]
) {
  createCompanyEmail (
    email: $email
    types: $types
    visibility: $visibility
  ) {
    id
    email
    types
    visibility
  }
}

```

## Variables

```json
{
  "email": "test1@email.com",
  "types": [
    "SUPPORT"
  ],
  "visibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "createCompanyEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  }
}
```

---

# Create company email verification code

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/002__create_company_email_verification_code
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/002__create_company_email_verification_code.md
Last updated: 2026-10-27T19:42:33.091Z

GraphQL endpoint: `/company`

Sends a one-time verification code to the given company email address. The response reports the OTP status, its expiry, and the remaining verification attempts.

A partner company whose application the user is in can pass a `brandingToken` its backend minted (`POST /auth/otp-branding-token`, bound to this user or to the destination): the email then names that company as what the code is for. Without it the plain TNID message is sent.

## Query

```graphql
mutation (
  $emailId: ID!
) {
  createCompanyEmailVerificationCode (
    emailId: $emailId
  ) {
    expiresAt
    remainingOtpAttempts
    nextOtpAt
    otpStatus
  }
}

```

## Variables

```json
{
  "emailId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "createCompanyEmailVerificationCode": {
      "expiresAt": "2026-01-15T09:00:00.000000",
      "nextOtpAt": "2026-01-15T09:00:01.000000",
      "otpStatus": "OTP sent",
      "remainingOtpAttempts": 5
    }
  }
}
```

---

# Verify Company Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/003__verify_company_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/003__verify_company_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Verifies a company email address using the one-time code previously sent to it. On success the email is marked as verified and an OK status is returned.

## Query

```graphql
mutation (
  $emailId: ID!
  $code: String!
) {
  verifyCompanyEmail (
    emailId: $emailId
    code: $code
  ) {
    status
  }
}

```

## Variables

```json
{
  "code": "1",
  "emailId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "verifyCompanyEmail": {
      "status": "OK"
    }
  }
}
```

---

# Update Company Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/004__update_company_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/004__update_company_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Update the types and visibility settings of an existing company email. The email address itself cannot be changed, only its metadata like types and visibility.

## Query

```graphql
mutation (
  $id: ID!
  $types: [CompanyEmailType!]
  $visibility: [CompanyVisibilityType!]
) {
  updateCompanyEmail (
    id: $id
    types: $types
    visibility: $visibility
  ) {
    id
    email
    types
    visibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "types": [
    "SUPPORT"
  ],
  "visibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "updateCompanyEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  }
}
```

---

# Remove Company Email

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/005__remove_company_email
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_email/005__remove_company_email.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Remove an email address from the company's profile. This permanently deletes the email record.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeCompanyEmail (
    id: $id
  ) {
    id
    email
    types
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeCompanyEmail": {
      "email": "test1@email.com",
      "id": "00000000-0000-4000-8000-000000000001",
      "types": [
        "HEADQUARTERS"
      ]
    }
  }
}
```

---

# 002\_ten\_dlc

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc.md
Last updated: 2026-09-09T03:10:23.000Z

- [List 10DLC API keys](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/001__list_api_keys.md)
- [Register 10DLC Api Key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/002__register_api_key.md)
- [Update 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/003__update_api_key.md)
- [Delete 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/004__delete_api_key.md)
- [List 10DLC API key authorizations](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/005__list_api_key_authorizations.md)
- [Authorize 10DLC API key](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/006__authorize_api_key.md)
- [Revoke 10DLC Api Key Authorization](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/007__revoke_api_key_authorization.md)
- [List 10DLC brands](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/008__list_brands.md)
- [Get 10DLC brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/009__get_brand.md)
- [Save 10DLC Brand As Draft](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/010__save_brand_as_draft.md)
- [Update Draft 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/011__update_draft_brand.md)
- [Register 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/012__register_brand.md)
- [Update and submit 10DLC brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/013__update_and_submit_brand.md)
- [List 10DLC campaigns](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/014__list_campaigns.md)
- [Get 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/015__get_campaign.md)
- [Get 10DLC campaign with telephone numbers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/016__get_campaign_with_telephone_numbers.md)
- [Save 10DLC campaign as draft](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/017__save_campaign_as_draft.md)
- [Update draft 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/018__update_campaign_draft.md)
- [Register and submit 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/019__register_and_submit_campaign.md)
- [Submit 10DLC campaign when brand is ready](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/020__submit_campaign_when_ready.md)
- [Update submitted 10DLC campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/021__update_submitted_campaign.md)
- [Delete 10DLC Brand](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/022__delete_brand.md)
- [Delete 10DLC Campaign](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/023__delete_campaign.md)

---

# List 10DLC API keys

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/001__list_api_keys
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/001__list_api_keys.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

List all 10DLC API keys that the company can use.

## Query

```graphql
query ($apiKeyType: TenDlcApiKeyType) {
  tenDlcApiKeys(apiKeyType: $apiKeyType) {
    name
    apiKeyId
    apiKeySecret
    companyId
    company {
      id
      legalName
      brandName
      profileName
    }
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "tenDlcApiKeys": [
      {
        "apiKeyId": "test_key_IXGVHK5QGN4YBUPW",
        "apiKeySecret": "test_secret_OKHG4YPMDY3MU6EFUE7VRV6UEMUKNREF",
        "company": {
          "brandName": "1brand-name",
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "profileName": "3profile-name"
        },
        "companyId": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:00",
        "name": "Owned Key 1",
        "updatedAt": "2026-01-15T09:00:00"
      },
      {
        "apiKeyId": "test_key_4JFXU6BZ5BHEAO2T",
        "apiKeySecret": "test_secret_XTZUKUAU2MXIF3PGEANP2ZOFVJJNFKXN",
        "company": {
          "brandName": "1brand-name",
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "profileName": "3profile-name"
        },
        "companyId": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:00",
        "name": "Owned Key 2",
        "updatedAt": "2026-01-15T09:00:00"
      },
      {
        "apiKeyId": "test_key_LCA34A5K3XE4WOID",
        "apiKeySecret": "test_secret_VOP7TDZA5BKBDWNSATMWFIOCPZN5PR4J",
        "company": {
          "brandName": "1brand-name",
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "profileName": "3profile-name"
        },
        "companyId": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:00",
        "name": "Owned Key 3",
        "updatedAt": "2026-01-15T09:00:00"
      },
      {
        "apiKeyId": "test_key_KB4CO76LBW4WVVOC",
        "apiKeySecret": "test_secret_ELUVXXJH6HFQNSVW2UTV4VD4NCI2JCIY",
        "company": {
          "brandName": "4brand-name",
          "id": "00000000-0000-4000-8000-000000000002",
          "legalName": "Shared From Co",
          "profileName": "5profile-name"
        },
        "companyId": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00",
        "name": "Shared Key",
        "updatedAt": "2026-01-15T09:00:00"
      }
    ]
  }
}
```

---

# Register 10DLC Api Key

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/002__register_api_key
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/002__register_api_key.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Register a new 10DLC API key for the company.

You must provision a new 10DLC API key, it MUST not be used for any other purpose and MUST not have any active subscriptions.

## Query

```graphql
mutation ($name: String!, $apiKey: String!, $apiKeySecret: String!) {
  addTenDlcApiKey(name: $name, apiKey: $apiKey, apiKeySecret: $apiKeySecret) {
    name
    apiKeyId
    apiKeySecret
    companyId
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{
  "apiKey": "test_api_key_12345",
  "apiKeySecret": "test_secret_67890",
  "name": "My Test API Key"
}
```

## Response

```json
{
  "data": {
    "addTenDlcApiKey": {
      "apiKeyId": "test_api_key_12345",
      "apiKeySecret": "test_secret_67890",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00",
      "name": "My Test API Key",
      "updatedAt": "2026-01-15T09:00:00"
    }
  }
}
```

---

# Update 10DLC API key

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/003__update_api_key
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/003__update_api_key.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Updates the name/label of a 10DLC API key owned by the company. Only keys owned by the company can be updated.

## Query

```graphql
mutation ($id: String!, $name: String!) {
  updateTenDlcApiKey(id: $id, name: $name) {
    id
    name
    apiKeyId
    apiKeyType
    companyId
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002",
  "name": "New Name"
}
```

## Response

```json
{
  "data": {
    "updateTenDlcApiKey": {
      "apiKeyId": "test_key_DZXBJ5OOR7AWVB6G",
      "apiKeyType": "OWNED",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00",
      "name": "New Name",
      "updatedAt": "2026-01-15T09:00:00"
    }
  }
}
```

---

# Delete 10DLC API key

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/004__delete_api_key
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/004__delete_api_key.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Delete an existing 10DLC API key for the company.

## Query

```graphql
mutation ($id: String!) {
  deleteTenDlcApiKey(id: $id) {
    name
    apiKeyId
    apiKeySecret
    companyId
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "deleteTenDlcApiKey": {
      "apiKeyId": "test_key_QNPJW2OQ33QFHGZJ",
      "apiKeySecret": "test_secret_GEQRVPTZH5UZPGINCVCTDOAI6P7HNTIO",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00",
      "name": "Key to Delete",
      "updatedAt": "2026-01-15T09:00:00"
    }
  }
}
```

---

# List 10DLC API key authorizations

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/005__list_api_key_authorizations
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/005__list_api_key_authorizations.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Lists the 10DLC API keys owned by the company that have been shared (authorized) for use by other companies. Each entry pairs the shared API key with the company it was authorized for.

## Query

```graphql
query {
  tenDlcApiKeyAuthorizations {
    authorizedAt
    company {
      id
      legalName
      brandName
    }
    apiKey {
      id
      name
      apiKeyId
      apiKeySecret
      insertedAt
      updatedAt
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "tenDlcApiKeyAuthorizations": [
      {
        "apiKey": {
          "apiKeyId": "test_key_MM5GABUDKWTX5Z4K",
          "apiKeySecret": "test_secret_CUFNTJ34RVGFKFHEQGIU274UGQ4LKXW2",
          "id": "00000000-0000-4000-8000-000000000001",
          "insertedAt": "2026-01-15T09:00:00",
          "name": "Shared API Key 1",
          "updatedAt": "2026-01-15T09:00:00"
        },
        "authorizedAt": "2026-01-15T09:00:00",
        "company": {
          "brandName": "1brand-name",
          "id": "00000000-0000-4000-8000-000000000002",
          "legalName": "Authorized Company 1"
        }
      },
      {
        "apiKey": {
          "apiKeyId": "test_key_DW6FBT677LHWBSCS",
          "apiKeySecret": "test_secret_ZZZX5CQ4AK6Z7TPBBKVIVMXDHZ4VT6WW",
          "id": "00000000-0000-4000-8000-000000000003",
          "insertedAt": "2026-01-15T09:00:00",
          "name": "Shared API Key 2",
          "updatedAt": "2026-01-15T09:00:00"
        },
        "authorizedAt": "2026-01-15T09:00:00",
        "company": {
          "brandName": "2brand-name",
          "id": "00000000-0000-4000-8000-000000000004",
          "legalName": "Authorized Company 2"
        }
      }
    ]
  }
}
```

---

# Authorize 10DLC API key

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/006__authorize_api_key
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/006__authorize_api_key.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Authorizes another company to use one of the company's own 10DLC API keys. Returns the created authorization record with the shared key and the authorized company.

## Query

```graphql
mutation ($apiKeyId: UUID!, $authorizedCompanyId: UUID!) {
  authorizeTenDlcApiKey(apiKeyId: $apiKeyId, authorizedCompanyId: $authorizedCompanyId) {
    id
    authorizedAt
    apiKey {
      id
      name
      apiKeyId
      apiKeySecret
      apiKeyType
      companyId
    }
    company {
      id
      legalName
      brandName
    }
  }
}

```

## Variables

```json
{
  "apiKeyId": "00000000-0000-4000-8000-000000000002",
  "authorizedCompanyId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "authorizeTenDlcApiKey": {
      "apiKey": {
        "apiKeyId": "test_key_LL2GSOX4JBN4YO6W",
        "apiKeySecret": "test_secret_NOVJ3OUPYDCAYTOKGJHJ7EGBEXPKPCHO",
        "apiKeyType": "OWNED",
        "companyId": "00000000-0000-4000-8000-000000000001",
        "id": "00000000-0000-4000-8000-000000000002",
        "name": "Shared Key"
      },
      "authorizedAt": "2026-01-15T09:00:00",
      "company": {
        "brandName": "Authorized Brand",
        "id": "00000000-0000-4000-8000-000000000003",
        "legalName": "Authorized Co"
      },
      "id": "00000000-0000-4000-8000-000000000004"
    }
  }
}
```

---

# Revoke 10DLC Api Key Authorization

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/007__revoke_api_key_authorization
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/007__revoke_api_key_authorization.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Revokes a previously granted 10DLC API key authorization, removing the other company's access to the key. Returns the ID of the revoked authorization. Only the company that owns the API key can revoke its authorizations.

## Query

```graphql
mutation ($authorizationId: UUID!) {
  revokeTenDlcApiKeyAuthorization(authorizationId: $authorizationId)
}

```

## Variables

```json
{
  "authorizationId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "revokeTenDlcApiKeyAuthorization": "00000000-0000-4000-8000-000000000001"
  }
}
```

---

# List 10DLC brands

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/008__list_brands
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/008__list_brands.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

List all the 10DLC Brands the company has access to.

The company has access to their own brands as well as any other brands from companies that have authorized 10DLC actions to the company.

## Query

```graphql
query($companyId: ID, $status: TenDlcBrandStatus, $workflowStatus: TenDlcBrandWorkflowStatus, $ownershipType: TenDlcOwnershipType, $page: Int, $pageSize: Int) {
  tenDlcBrands(companyId: $companyId, status: $status, workflowStatus: $workflowStatus, ownershipType: $ownershipType, page: $page, pageSize: $pageSize) {
    page
    totalRecords
    records {
      brandId
      companyId
      displayName
      entityType
      status
      workflowStatus
      phone
      email
      ownershipType
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "tenDlcBrands": {
      "page": 1,
      "records": [
        {
          "brandId": "BXOD4GD",
          "companyId": "00000000-0000-4000-8000-000000000001",
          "displayName": "Brand 1",
          "email": "test1@example.com",
          "entityType": "PRIVATE_PROFIT",
          "ownershipType": "DIRECT",
          "phone": "+14155551234",
          "status": "ACTIVE",
          "workflowStatus": "VERIFIED"
        },
        {
          "brandId": "BTVVJJD",
          "companyId": "00000000-0000-4000-8000-000000000001",
          "displayName": "Brand 2",
          "email": "test2@example.com",
          "entityType": "NON_PROFIT",
          "ownershipType": "DIRECT",
          "phone": "+14155555678",
          "status": "DRAFT",
          "workflowStatus": "DRAFT"
        },
        {
          "brandId": "BRWYXT7",
          "companyId": "00000000-0000-4000-8000-000000000001",
          "displayName": "Brand 2",
          "email": "test2@example.com",
          "entityType": "NON_PROFIT",
          "ownershipType": "PARTNER",
          "phone": "+14155555678",
          "status": "DRAFT",
          "workflowStatus": "DRAFT"
        }
      ],
      "totalRecords": 3
    }
  }
}
```

---

# Get 10DLC brand

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/009__get_brand
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/009__get_brand.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Get a single 10DLC Brand the company has access to.

The company has access to their own brands as well as any other brands from companies that have authorized 10DLC actions to the company.

## Query

```graphql
query($id: ID!) {
  tenDlcBrand(id: $id) {
    id
    brandId
    companyId
    displayName
    companyName
    entityType
    status
    phone
    email
    street
    city
    state
    postalCode
    country
    insertedAt
    updatedAt
    ownershipType
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "tenDlcBrand": {
      "brandId": "BXXJD7R",
      "city": "San Francisco",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "companyName": "Test Company Inc",
      "country": "US",
      "displayName": "Test Brand",
      "email": "test@example.com",
      "entityType": "PRIVATE_PROFIT",
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00",
      "ownershipType": "DIRECT",
      "phone": "+14155551234",
      "postalCode": "94105",
      "state": "CA",
      "status": "ACTIVE",
      "street": "123 Main St",
      "updatedAt": "2026-01-15T09:00:00"
    }
  }
}
```

---

# Save 10DLC Brand As Draft

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/010__save_brand_as_draft
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/010__save_brand_as_draft.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Save a new 10DLC brand as a draft. Draft means it is not yet submitted for approval. This is useful if you want to start preparing a brand before submitting it for approval.

## Query

```graphql
mutation($input: TenDlcRegisterBrandInput!) {
  registerTenDlcBrandAsDraft(input: $input) {
    id
    brandId
    companyId
    companyName
    displayName
    entityType
    status
    phone
    email
  }
}

```

## Variables

```json
{
  "input": {
    "brandRelationship": "BASIC_ACCOUNT",
    "city": "San Francisco",
    "companyId": "00000000-0000-4000-8000-000000000001",
    "companyName": "Test Company Inc",
    "country": "US",
    "displayName": "Test Brand",
    "ein": "12-3456789",
    "einIssuingCountry": "US",
    "email": "test@example.com",
    "entityType": "PRIVATE_PROFIT",
    "phone": "+14155551234",
    "postalCode": "94105",
    "state": "CA",
    "street": "123 Main St",
    "tenDlcApiKeyId": "00000000-0000-4000-8000-000000000003",
    "vertical": "PROFESSIONAL",
    "website": "https://example.com"
  }
}
```

## Response

```json
{
  "data": {
    "registerTenDlcBrandAsDraft": {
      "brandId": null,
      "companyId": "00000000-0000-4000-8000-000000000001",
      "companyName": "Test Company Inc",
      "displayName": "Test Brand",
      "email": "test@example.com",
      "entityType": "PRIVATE_PROFIT",
      "id": "00000000-0000-4000-8000-000000000002",
      "phone": "+14155551234",
      "status": "DRAFT"
    }
  }
}
```

---

# Update Draft 10DLC Brand

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/011__update_draft_brand
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/011__update_draft_brand.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Update an existing draft of 10DLC brand. Draft means it is not yet submitted for approval. This is useful if you want to start preparing a brand before submitting it for approval.

## Query

```graphql
mutation($id: String!, $input: TenDlcUpdateBrandInput!) {
  updateTenDlcBrandAsDraft(id: $id, input: $input) {
    brandId
    companyId
    companyName
    displayName
    entityType
    status
    phone
    email
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002",
  "input": {
    "displayName": "Updated Test Brand",
    "email": "updated@example.com",
    "phone": "+14155559999"
  }
}
```

## Response

```json
{
  "data": {
    "updateTenDlcBrandAsDraft": {
      "brandId": null,
      "companyId": "00000000-0000-4000-8000-000000000001",
      "companyName": "Test Company Inc",
      "displayName": "Updated Test Brand",
      "email": "updated@example.com",
      "entityType": "PRIVATE_PROFIT",
      "phone": "+14155559999",
      "status": "DRAFT"
    }
  }
}
```

---

# Register 10DLC Brand

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/012__register_brand
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/012__register_brand.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Register a new 10DLC brand. This action submits the brand for approval. Once the brand is submitted the status is "PENDING\_REVIEW", and once approved by TCR the status will change to "ACTIVE".

Valid brand statuses are: -ACTIVE -REJECTED -EXPIRED -DRAFT -PENDING\_REVIEW

## Query

```graphql
mutation($input: TenDlcRegisterBrandInput!) {
  registerAndSubmitTenDlcBrand(input: $input) {
    brandId
    companyId
    displayName
    companyName
    entityType
    status
    phone
    email
  }
}

```

## Variables

```json
{
  "input": {
    "brandRelationship": "BASIC_ACCOUNT",
    "city": "San Francisco",
    "companyId": "00000000-0000-4000-8000-000000000001",
    "companyName": "Test Company",
    "country": "US",
    "displayName": "Test Brand",
    "ein": "12-3456789",
    "einIssuingCountry": "US",
    "email": "test@example.com",
    "entityType": "PRIVATE_PROFIT",
    "phone": "+14155551234",
    "postalCode": "94105",
    "state": "CA",
    "street": "123 Main St",
    "tenDlcApiKeyId": "00000000-0000-4000-8000-000000000002",
    "vertical": "PROFESSIONAL",
    "website": "https://example.com"
  }
}
```

## Response

```json
{
  "data": {
    "registerAndSubmitTenDlcBrand": {
      "brandId": "brand_123",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "companyName": "Test Company",
      "displayName": "Test Brand",
      "email": "test@example.com",
      "entityType": "PRIVATE_PROFIT",
      "phone": "+14155551234",
      "status": "PENDING_REVIEW"
    }
  }
}
```

---

# Update and submit 10DLC brand

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/013__update_and_submit_brand
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/013__update_and_submit_brand.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Updates a draft 10DLC brand with the given parameters and submits it for registration. The returned brand reflects the updated fields and its post-submission status.

## Query

```graphql
mutation($id: ID!, $input: TenDlcUpdateBrandInput!) {
  updateAndSubmitTenDlcBrand(id: $id, input: $input) {
    brandId
    companyId
    displayName
    companyName
    entityType
    status
    phone
    email
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002",
  "input": {
    "displayName": "Updated Brand Name",
    "email": "updated@example.com",
    "phone": "+14155559999"
  }
}
```

## Response

```json
{
  "data": {
    "updateAndSubmitTenDlcBrand": {
      "brandId": "BBH4EHY",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "companyName": "Original Company Inc",
      "displayName": "Updated Brand Name",
      "email": "updated@example.com",
      "entityType": "PRIVATE_PROFIT",
      "phone": "+14155559999",
      "status": "PENDING_REVIEW"
    }
  }
}
```

---

# List 10DLC campaigns

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/014__list_campaigns
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/014__list_campaigns.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

List all the 10DLC Campaigns the company has access to.

The company has access to their own campaigns as well as any other campaigns from companies that have authorized 10DLC actions to the company.

## Query

```graphql
query($brandId: String, $companyId: ID, $status: TenDlcCampaignStatus, $workflowStatus: TenDlcCampaignWorkflowStatus, $usecase: String, $ownershipType: TenDlcOwnershipType, $page: Int, $pageSize: Int) {
  tenDlcCampaigns(brandId: $brandId, companyId: $companyId, status: $status, workflowStatus: $workflowStatus, usecase: $usecase, ownershipType: $ownershipType, page: $page, pageSize: $pageSize) {
    page
    totalRecords
    records {
      campaignId
      companyId
      brandId
      usecase
      workflowStatus
      status
      description
      autoRenewal
      ownershipType
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "tenDlcCampaigns": {
      "page": 1,
      "records": [
        {
          "autoRenewal": true,
          "brandId": "BTEST1",
          "campaignId": "CCRR25G",
          "companyId": "00000000-0000-4000-8000-000000000001",
          "description": "Test marketing campaign for product launches and promotions",
          "ownershipType": "DIRECT",
          "status": "ACTIVE",
          "usecase": "MARKETING",
          "workflowStatus": "VERIFIED"
        },
        {
          "autoRenewal": false,
          "brandId": "BTEST1",
          "campaignId": "CVSF76W",
          "companyId": "00000000-0000-4000-8000-000000000001",
          "description": "Test customer care campaign for support and inquiries",
          "ownershipType": "DIRECT",
          "status": "DRAFT",
          "usecase": "CUSTOMER_CARE",
          "workflowStatus": "DRAFT"
        },
        {
          "autoRenewal": false,
          "brandId": "BTEST2",
          "campaignId": "CKEM6W3",
          "companyId": "00000000-0000-4000-8000-000000000001",
          "description": "Test customer care campaign for support and inquiries",
          "ownershipType": "PARTNER",
          "status": "DRAFT",
          "usecase": "CUSTOMER_CARE",
          "workflowStatus": "DRAFT"
        }
      ],
      "totalRecords": 3
    }
  }
}
```

---

# Get 10DLC campaign

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/015__get_campaign
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/015__get_campaign.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Get a single 10DLC Campaign the company has access to.

The company has access to their own campaigns as well as any other campaigns from companies that have authorized 10DLC actions to the company.

## Query

```graphql
query($id: ID!) {
  tenDlcCampaign(id: $id) {
    id
    campaignId
    companyId
    brandId
    createDate
    billedDate
    usecase
    subUsecases
    status
    description
    messageFlow
    subscriberOptin
    subscriberOptout
    subscriberHelp
    autoRenewal
    expirationDate
    ownershipType
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "tenDlcCampaign": {
      "autoRenewal": true,
      "billedDate": "2026-01-15T09:00:01",
      "brandId": "BTEST123",
      "campaignId": "CH5A5GR",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "createDate": "2026-01-15T09:00:00",
      "description": "Test marketing campaign for product launches and promotions",
      "expirationDate": "2026-01-15T09:00:02",
      "id": "00000000-0000-4000-8000-000000000002",
      "messageFlow": "Users opt-in by texting JOIN. They receive updates about products.",
      "ownershipType": "DIRECT",
      "status": "ACTIVE",
      "subUsecases": [],
      "subscriberHelp": true,
      "subscriberOptin": true,
      "subscriberOptout": true,
      "usecase": "MARKETING"
    }
  }
}
```

---

# Get 10DLC campaign with telephone numbers

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/016__get_campaign_with_telephone_numbers
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/016__get_campaign_with_telephone_numbers.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Get a single 10DLC Campaign the company has access to, together with the telephone numbers associated with the campaign.

The company has access to their own campaigns as well as any other campaigns from companies that have authorized 10DLC actions to the company.

## Query

```graphql
query($id: ID!) {
  tenDlcCampaignWithTelephoneNumbers(id: $id) {
    campaign {
      id
      campaignId
      companyId
      brandId
      usecase
      status
      description
      messageFlow
      autoRenewal
      ownershipType
    }
    telephoneNumbers {
      id
      number
      campaignId
      internalCampaignId
      osrWorkflowStatus
      tmobileWorkflowStatus
      insertedAt
      updatedAt
    }
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "tenDlcCampaignWithTelephoneNumbers": {
      "campaign": {
        "autoRenewal": true,
        "brandId": "BTEST123",
        "campaignId": "CUAG5GA",
        "companyId": "00000000-0000-4000-8000-000000000001",
        "description": "Test marketing campaign for product launches and promotions",
        "id": "00000000-0000-4000-8000-000000000002",
        "messageFlow": "Users opt-in by texting JOIN. They receive updates about products.",
        "ownershipType": "DIRECT",
        "status": "ACTIVE",
        "usecase": "MARKETING"
      },
      "telephoneNumbers": [
        {
          "campaignId": "CUAG5GA",
          "id": "00000000-0000-4000-8000-000000000003",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "internalCampaignId": "00000000-0000-4000-8000-000000000002",
          "number": "14155550001",
          "osrWorkflowStatus": "DRAFT",
          "tmobileWorkflowStatus": "DRAFT",
          "updatedAt": "2026-01-15T09:00:00.000000"
        },
        {
          "campaignId": "CUAG5GA",
          "id": "00000000-0000-4000-8000-000000000004",
          "insertedAt": "2026-01-15T09:00:01.000000",
          "internalCampaignId": "00000000-0000-4000-8000-000000000002",
          "number": "14155550002",
          "osrWorkflowStatus": "DRAFT",
          "tmobileWorkflowStatus": "DRAFT",
          "updatedAt": "2026-01-15T09:00:01.000000"
        }
      ]
    }
  }
}
```

---

# Save 10DLC campaign as draft

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/017__save_campaign_as_draft
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/017__save_campaign_as_draft.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Save a new 10DLC campaign as a draft. Draft means it is not yet submitted for approval. This is useful if you want to start preparing a campaign before submitting it for approval.

## Query

```graphql
mutation($input: TenDlcRegisterCampaignInput!) {
  saveTenDlcCampaignAsDraft(input: $input) {
    id
    campaignId
    companyId
    brandId
    internalBrandId
    usecase
    status
    description
    messageFlow
  }
}

```

## Variables

```json
{
  "input": {
    "description": "Test marketing campaign for product launches and promotions",
    "internalBrandId": "00000000-0000-4000-8000-000000000003",
    "messageFlow": "Users opt-in by texting JOIN to our number. They receive updates about new products.",
    "nnid": "test-nnid-001",
    "resellerId": "CSP12345",
    "tenDlcApiKeyId": "00000000-0000-4000-8000-000000000004",
    "usecase": "MARKETING"
  }
}
```

## Response

```json
{
  "data": {
    "saveTenDlcCampaignAsDraft": {
      "brandId": "BMJ7SVX",
      "campaignId": null,
      "companyId": "00000000-0000-4000-8000-000000000001",
      "description": "Test marketing campaign for product launches and promotions",
      "id": "00000000-0000-4000-8000-000000000002",
      "internalBrandId": "00000000-0000-4000-8000-000000000003",
      "messageFlow": "Users opt-in by texting JOIN to our number. They receive updates about new products.",
      "status": "DRAFT",
      "usecase": "MARKETING"
    }
  }
}
```

---

# Update draft 10DLC campaign

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/018__update_campaign_draft
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/018__update_campaign_draft.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Update an existing draft 10DLC campaign. Draft means it is not yet submitted for approval. This is useful if you want to start preparing a campaign before submitting it for approval.

## Query

```graphql
mutation($id: ID!, $input: TenDlcUpdateCampaignInput!) {
  updateTenDlcCampaignAsDraft(id: $id, input: $input) {
    id
    campaignId
    companyId
    brandId
    internalBrandId
    usecase
    status
    description
    messageFlow
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002",
  "input": {
    "description": "Updated marketing campaign with better targeting",
    "messageFlow": "Updated flow: Users text START to subscribe. Weekly product updates sent."
  }
}
```

## Response

```json
{
  "data": {
    "updateTenDlcCampaignAsDraft": {
      "brandId": "BZSJGD7",
      "campaignId": null,
      "companyId": "00000000-0000-4000-8000-000000000001",
      "description": "Updated marketing campaign with better targeting",
      "id": "00000000-0000-4000-8000-000000000002",
      "internalBrandId": "00000000-0000-4000-8000-000000000003",
      "messageFlow": "Updated flow: Users text START to subscribe. Weekly product updates sent.",
      "status": "DRAFT",
      "usecase": "MARKETING"
    }
  }
}
```

---

# Register and submit 10DLC campaign

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/019__register_and_submit_campaign
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/019__register_and_submit_campaign.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Register a new 10DLC campaign and submit it for approval. This action submits the campaign directly to TCR for approval. Once the campaign is submitted its status is `PENDING`, and once approved by TCR it changes to `ACTIVE`.

A campaign's status is one of `DRAFT`, `PENDING`, `ACTIVE`, `ERROR`, `EXPIRED` or `SUSPENDED`. Note that these are the campaign's own statuses — a brand's are different, and `PENDING_REVIEW` is one of those.

## Query

```graphql
mutation($input: TenDlcRegisterCampaignInput!) {
  registerAndSubmitTenDlcCampaign(input: $input) {
    campaignId
    companyId
    brandId
    usecase
    status
    description
    messageFlow
    autoRenewal
  }
}

```

## Variables

```json
{
  "input": {
    "description": "Test marketing campaign for product launches and promotions",
    "internalBrandId": "00000000-0000-4000-8000-000000000003",
    "messageFlow": "Users opt-in by texting JOIN to our number. They receive updates about new products.",
    "nnid": "test-nnid-001",
    "resellerId": "CSP12345",
    "sample1": "Welcome! Reply STOP to unsubscribe, HELP for assistance.",
    "subscriberHelp": true,
    "subscriberOptin": true,
    "subscriberOptout": true,
    "tenDlcApiKeyId": "00000000-0000-4000-8000-000000000002",
    "termsAndConditions": true,
    "usecase": "MARKETING"
  }
}
```

## Response

```json
{
  "data": {
    "registerAndSubmitTenDlcCampaign": {
      "autoRenewal": true,
      "brandId": "B6MSXT4",
      "campaignId": "C160379",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "description": "Test marketing campaign for product launches and promotions",
      "messageFlow": "Users opt-in by texting JOIN to our number. They receive updates about new products.",
      "status": "ACTIVE",
      "usecase": "MARKETING"
    }
  }
}
```

---

# Submit 10DLC campaign when brand is ready

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/020__submit_campaign_when_ready
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/020__submit_campaign_when_ready.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Register a new 10DLC campaign when the brand is ready. This is useful when you want to create a campaign for a brand that is currently pending verification. The campaign will be automatically submitted once the brand verification is complete.

This mutation will save the campaign and schedule it to be submitted once the brand reaches `ACTIVE` — the status a verified brand reports. Until then the campaign stays `PENDING`.

## Query

```graphql
mutation($input: TenDlcRegisterCampaignInput!) {
  registerTenDlcCampaignWhenReady(input: $input) {
    id
    campaignId
    companyId
    brandId
    internalBrandId
    usecase
    status
    description
    messageFlow
  }
}

```

## Variables

```json
{
  "input": {
    "description": "Test marketing campaign for product launches and promotions",
    "internalBrandId": "00000000-0000-4000-8000-000000000003",
    "messageFlow": "Users opt-in by texting JOIN to our number. They receive updates about new products.",
    "nnid": "test-nnid-001",
    "tenDlcApiKeyId": "00000000-0000-4000-8000-000000000004",
    "usecase": "MARKETING"
  }
}
```

## Response

```json
{
  "data": {
    "registerTenDlcCampaignWhenReady": {
      "brandId": "B5LN2OX",
      "campaignId": null,
      "companyId": "00000000-0000-4000-8000-000000000001",
      "description": "Test marketing campaign for product launches and promotions",
      "id": "00000000-0000-4000-8000-000000000002",
      "internalBrandId": "00000000-0000-4000-8000-000000000003",
      "messageFlow": "Users opt-in by texting JOIN to our number. They receive updates about new products.",
      "status": "PENDING",
      "usecase": "MARKETING"
    }
  }
}
```

---

# Update submitted 10DLC campaign

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/021__update_submitted_campaign
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/021__update_submitted_campaign.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Update an existing submitted 10DLC campaign. This allows you to modify campaign details even after it has been submitted to TCR. The updated campaign will be synchronized with TCR's system.

This is useful when you need to update campaign information such as the description or message flow after initial submission. Or maybe the campaign was rejected and needs to be updated before resubmission.

## Query

```graphql
mutation($id: ID!, $input: TenDlcUpdateCampaignInput!) {
  updateAndSubmitTenDlcCampaign(id: $id, input: $input) {
    id
    campaignId
    companyId
    brandId
    usecase
    status
    description
    messageFlow
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002",
  "input": {
    "description": "Updated marketing campaign description for product launches and promotions"
  }
}
```

## Response

```json
{
  "data": {
    "updateAndSubmitTenDlcCampaign": {
      "brandId": "B77K4GW",
      "campaignId": "C3SPS3R",
      "companyId": "00000000-0000-4000-8000-000000000001",
      "description": "Updated marketing campaign description for product launches and promotions",
      "id": "00000000-0000-4000-8000-000000000002",
      "messageFlow": "Users opt-in by texting JOIN. They receive updates about products and services.",
      "status": "ACTIVE",
      "usecase": "MARKETING"
    }
  }
}
```

---

# Delete 10DLC Brand

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/022__delete_brand
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/022__delete_brand.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Delete a 10DLC brand. The brand cannot have any campaigns associated with it for it to be deleted.

## Query

```graphql
mutation ($id: ID!) {
  deleteTenDlcBrand(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteTenDlcBrand": {
      "status": "OK"
    }
  }
}
```

---

# Delete 10DLC Campaign

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/023__delete_campaign
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/002_ten_dlc/023__delete_campaign.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Delete a submitted 10DLC campaign. Campaigns can only be deleted if drafts, otherwise if they're submitted they will be expired.

## Query

```graphql
mutation ($id: ID!) {
  deleteTenDlcCampaign(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteTenDlcCampaign": {
      "status": "OK"
    }
  }
}
```

---

# 003\_address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/001__create_company_address.md)
- [Update Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/002__update_company_address.md)
- [Remove Company Address](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/003__remove_company_address.md)

---

# Create Company Address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/001__create_company_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/001__create_company_address.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Create a new address for the company. The address can be tagged with types (e.g., HEADQUARTERS, SUPPORT) and visibility settings to control who can see this information.

## Query

```graphql
mutation (
  $street: String!
  $city: String!
  $zipCode: String!
  $state: String
  $country: String!
  $types: [CompanyAddressType!]
  $visibility: [CompanyVisibilityType!]
) {
  createCompanyAddress (
    street: $street
    city: $city
    zipCode: $zipCode
    state: $state
    country: $country
    types: $types
    visibility: $visibility
  ) {
    id
    city
    country
    state
    street
    zipCode
    types
    visibility
  }
}

```

## Variables

```json
{
  "city": "test city",
  "country": "United States",
  "state": "Alabama",
  "street": "test street 1",
  "types": [
    "SUPPORT"
  ],
  "visibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "zipCode": "12345"
}
```

## Response

```json
{
  "data": {
    "createCompanyAddress": {
      "city": "test city",
      "country": "United States",
      "id": "00000000-0000-4000-8000-000000000001",
      "state": "Alabama",
      "street": "test street 1",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ],
      "zipCode": "12345"
    }
  }
}
```

---

# Update Company Address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/002__update_company_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/002__update_company_address.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Update an existing address for the company. You can modify the address details, types, and visibility settings.

## Query

```graphql
mutation (
  $id: ID!
  $street: String
  $city: String
  $zipCode: String
  $state: String
  $country: String
  $types: [CompanyAddressType!]
  $visibility: [CompanyVisibilityType!]
) {
  updateCompanyAddress (
    id: $id
    street: $street
    city: $city
    zipCode: $zipCode
    state: $state
    country: $country
    types: $types
    visibility: $visibility
  ) {
    id
    city
    country
    state
    street
    zipCode
    types
    visibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "types": [
    "SUPPORT"
  ],
  "visibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "updateCompanyAddress": {
      "city": "test city",
      "country": "United States",
      "id": "00000000-0000-4000-8000-000000000001",
      "state": "Alabama",
      "street": "test street 1",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ],
      "zipCode": "12345"
    }
  }
}
```

---

# Remove Company Address

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/003__remove_company_address
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_address/003__remove_company_address.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Remove an address from the company's profile. This permanently deletes the address record.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeCompanyAddress (
    id: $id
  ) {
    id
    city
    country
    state
    street
    zipCode
    types
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeCompanyAddress": {
      "city": "test city",
      "country": "United States",
      "id": "00000000-0000-4000-8000-000000000001",
      "state": "Alabama",
      "street": "test street 1",
      "types": [
        "HEADQUARTERS"
      ],
      "zipCode": "12345"
    }
  }
}
```

---

# 003\_message\_sentiment\_analysis

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis.md
Last updated: 2026-09-09T03:10:23.000Z

- [Report communication for analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/001__report_communication_for_analysis.md)
- [Confirm Unsubscribe Based On Analysis](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/002__confirm_unsubscribe_based_on_analysis.md)
- [List Sentiment Analysis Results](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/003__list_sentiment_analysis_results.md)
- [List Sentiment Analysis Results (Cursor-paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/004__list_paginated_sentiment_analysis_results.md)
- [Get Sentiment Analysis Result](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/005__get_sentiment_analysis_result.md)

---

# Report communication for analysis

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/001__report_communication_for_analysis
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/001__report_communication_for_analysis.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Report communications for Sentiment analysis. The communication will be analyzed based on the past few messages (between the sender and receiver). The result can be an action of "subscribe" where user will be automatically subscribed to selected topics, or it can be "unsubscribe", where the unsubscribe info will be sent to the company via registered webhooks.

The webhook will contain the following payload:

```json
{
  "external_communication_id": "00000000-0000-4000-8000-000000000001",
  "timestamp": "2026-01-15T09:00:00.000000",
  "action": "unsubscribe"
}
```

The subscribes are automatic, but for "unsubscribe", the company can provide feedback via the mutation `feedbackOnDetectedUnsubscribe` to confirm or deny the unsubscribe action. Check the next entry for more details.

## Query

```graphql
mutation (
    $direction: CommunicationDirection!
    $type: CommunicationType!
    $external_message_id: String!
    $host_address: String!
    $remote_address: String!
    $message_body: String!
    $timestamp: NaiveDateTime!
    $metadata: JSON
) {
  reportExternalCommunication (
    direction: $direction
    type: $type
    external_message_id: $external_message_id
    host_address: $host_address
    remote_address: $remote_address
    message_body: $message_body
    timestamp: $timestamp
    metadata: $metadata
  ) {
    status
  }
}

```

## Variables

```json
{
  "direction": "INBOUND",
  "external_message_id": "00000000-0000-4000-8000-000000000002",
  "host_address": "1",
  "message_body": "This is a test message!",
  "metadata": {
    "additional_info": "Test metadata"
  },
  "remote_address": "2",
  "timestamp": "2026-01-15T09:00:00.000000",
  "type": "SMS"
}
```

## Response

```json
{
  "data": {
    "reportExternalCommunication": {
      "status": "OK"
    }
  }
}
```

---

# Confirm Unsubscribe Based On Analysis

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/002__confirm_unsubscribe_based_on_analysis
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/002__confirm_unsubscribe_based_on_analysis.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Once you receive a sentiment analysis result via webhook, you can provide feedback on the suggested action you want to take using the `feedbackOnDetectedUnsubscribe` mutation. You can either confirm the unsubscribe via action: "UNSUBSCRIBE" or reject the result and keep the subscription by passing action: "DONT\_UNSUBSCRIBE".

The webhook result that was mentioned will contain a payload like this:

```json
{
  "external_communication_id": "00000000-0000-4000-8000-000000000001",
  "timestamp": "2026-01-15T09:00:00.000000",
  "action": "unsubscribe"
}
```

## Query

```graphql
mutation (
    $externalCommunicationId: String!
    $action: UnsubscribeType!
) {
  feedbackOnDetectedUnsubscribe (
    externalCommunicationId: $externalCommunicationId
    action: $action
  ) {
    status
  }
}

```

## Variables

```json
{
  "action": "UNSUBSCRIBE",
  "externalCommunicationId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "feedbackOnDetectedUnsubscribe": {
      "status": "OK"
    }
  }
}
```

---

# List Sentiment Analysis Results

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/003__list_sentiment_analysis_results
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/003__list_sentiment_analysis_results.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists sentiment analysis results for the company's external communications, page-numbered via `page` and `limit`. Results can be filtered by host address, remote address, communication type and timestamp range.

## Query

```graphql
query (
  $hostAddress: String
  $remoteAddress: String
  $type: ExternalCommunicationType
  $page: Int
  $limit: Int
) {
  sentimentAnalysisResults (
    hostAddress: $hostAddress
    remoteAddress: $remoteAddress
    type: $type
    page: $page
    limit: $limit
  ) {
    records {
      id
      action
      certaintyFactor
      topics
      externalCommunication {
        id
        hostAddress
        remoteAddress
        messageBody
        type
        direction
      }
    }
    page
    totalRecords
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "sentimentAnalysisResults": {
      "page": 1,
      "records": [
        {
          "action": "UNSUBSCRIBE",
          "certaintyFactor": 0.95,
          "externalCommunication": {
            "direction": "INBOUND",
            "hostAddress": "1",
            "id": "00000000-0000-4000-8000-000000000001",
            "messageBody": "This is a test message",
            "remoteAddress": "1",
            "type": "SMS"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "topics": [
            "opt-out"
          ]
        },
        {
          "action": "UNSUBSCRIBE",
          "certaintyFactor": 0.95,
          "externalCommunication": {
            "direction": "INBOUND",
            "hostAddress": "1",
            "id": "00000000-0000-4000-8000-000000000001",
            "messageBody": "This is a test message",
            "remoteAddress": "1",
            "type": "SMS"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "topics": [
            "opt-out"
          ]
        }
      ],
      "totalRecords": 2
    }
  }
}
```

---

# List Sentiment Analysis Results (Cursor-paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/004__list_paginated_sentiment_analysis_results
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/004__list_paginated_sentiment_analysis_results.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists sentiment analysis results for the company's external communications, cursor-paginated. Pass back `paginationInfo.nextCursor` as `cursor` to fetch the next page; it is null on the last page. Results can be filtered by host address, remote address, communication type and timestamp range.

## Query

```graphql
query (
  $hostAddress: String
  $remoteAddress: String
  $type: ExternalCommunicationType
  $timestampFrom: NaiveDateTime
  $timestampTo: NaiveDateTime
  $limit: Int
  $cursor: String
) {
  paginatedSentimentAnalysisResults(
    hostAddress: $hostAddress
    remoteAddress: $remoteAddress
    type: $type
    timestampFrom: $timestampFrom
    timestampTo: $timestampTo
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      action
      externalCommunication {
        id
        hostAddress
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedSentimentAnalysisResults": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "action": "UNSUBSCRIBE",
          "externalCommunication": {
            "hostAddress": "1",
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002"
        },
        {
          "action": "UNSUBSCRIBE",
          "externalCommunication": {
            "hostAddress": "1",
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000003"
        }
      ]
    }
  }
}
```

---

# Get Sentiment Analysis Result

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/005__get_sentiment_analysis_result
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/003_message_sentiment_analysis/005__get_sentiment_analysis_result.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Gets a single sentiment analysis result by ID, including the analyzed external communication. Only results for the company's own communications are accessible.

## Query

```graphql
query ($id: ID!) {
  sentimentAnalysisResult(id: $id) {
    id
    action
    certaintyFactor
    topics
    externalCommunication {
      id
      hostAddress
      remoteAddress
      messageBody
      type
      direction
    }
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "sentimentAnalysisResult": {
      "action": "SUBSCRIBE",
      "certaintyFactor": 0.9,
      "externalCommunication": {
        "direction": "INBOUND",
        "hostAddress": "1",
        "id": "00000000-0000-4000-8000-000000000001",
        "messageBody": "This is a test message",
        "remoteAddress": "1",
        "type": "SMS"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "topics": [
        "opt-out"
      ]
    }
  }
}
```

---

# 004\_misc

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc.md
Last updated: 2026-09-09T03:10:23.000Z

- [List Organization Types](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/001__list_organization_types.md)
- [List Vertical Types](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/002__list_vertical_types.md)
- [List Specialties](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/003__list_specialties.md)

---

# List Organization Types

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/001__list_organization_types
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/001__list_organization_types.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

List all organization types available on the platform.

## Query

```graphql
query
  {
  organizationTypes
    {
    id
    displayName
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "organizationTypes": [
      {
        "displayName": "display_name_1",
        "id": "00000000-0000-4000-8000-000000000001"
      },
      {
        "displayName": "display_name_2",
        "id": "00000000-0000-4000-8000-000000000002"
      },
      {
        "displayName": "display_name_3",
        "id": "00000000-0000-4000-8000-000000000003"
      },
      {
        "displayName": "display_name_4",
        "id": "00000000-0000-4000-8000-000000000004"
      },
      {
        "displayName": "display_name_5",
        "id": "00000000-0000-4000-8000-000000000005"
      },
      {
        "displayName": "display_name_6",
        "id": "00000000-0000-4000-8000-000000000006"
      },
      {
        "displayName": "Private company",
        "id": "00000000-0000-4000-8000-000000000007"
      },
      {
        "displayName": "Publicly traded company",
        "id": "00000000-0000-4000-8000-000000000008"
      },
      {
        "displayName": "Non-Profit organization",
        "id": "00000000-0000-4000-8000-000000000009"
      },
      {
        "displayName": "Government corporation",
        "id": "00000000-0000-4000-8000-000000000010"
      },
      {
        "displayName": "Sole proprietorship",
        "id": "00000000-0000-4000-8000-000000000011"
      }
    ]
  }
}
```

---

# List Vertical Types

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/002__list_vertical_types
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/002__list_vertical_types.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

List all vertical types available on the platform.

## Query

```graphql
query
  {
  verticalTypes
    {
    id
    displayName
    description
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "verticalTypes": [
      {
        "description": "description_1",
        "displayName": "display_name_2",
        "id": "00000000-0000-4000-8000-000000000001"
      },
      {
        "description": "description_3",
        "displayName": "display_name_4",
        "id": "00000000-0000-4000-8000-000000000002"
      },
      {
        "description": "description_5",
        "displayName": "display_name_6",
        "id": "00000000-0000-4000-8000-000000000003"
      },
      {
        "description": "Professional services.",
        "displayName": "Professional Services",
        "id": "00000000-0000-4000-8000-000000000004"
      },
      {
        "description": "Buying and Selling of residential and commercial properties.",
        "displayName": "Real Estate",
        "id": "00000000-0000-4000-8000-000000000005"
      },
      {
        "description": "Healthcare services, including hospital, health insurances.",
        "displayName": "Healthcare and Life Sciences",
        "id": "00000000-0000-4000-8000-000000000006"
      },
      {
        "description": "Human resources, staffing, or recruitment.",
        "displayName": "HR, Staffing or Recruitment",
        "id": "00000000-0000-4000-8000-000000000007"
      },
      {
        "description": "Energy and Utilities.",
        "displayName": "Energy and Utilities",
        "id": "00000000-0000-4000-8000-000000000008"
      },
      {
        "description": "Entertainment, including gaming and dating services.",
        "displayName": "Entertainment",
        "id": "00000000-0000-4000-8000-000000000009"
      },
      {
        "description": "Consumer products and services, including Retails and eTails.",
        "displayName": "Retail and Consumer Products",
        "id": "00000000-0000-4000-8000-000000000010"
      },
      {
        "description": "Transportation or logistics services.",
        "displayName": "Transportation or Logistics",
        "id": "00000000-0000-4000-8000-000000000011"
      },
      {
        "description": "Agriculture businesses and services.",
        "displayName": "Agriculture",
        "id": "00000000-0000-4000-8000-000000000012"
      },
      {
        "description": "Insurance products and services.",
        "displayName": "Insurance",
        "id": "00000000-0000-4000-8000-000000000013"
      },
      {
        "description": "Postal and delivery services.",
        "displayName": "Postal and Delivery",
        "id": "00000000-0000-4000-8000-000000000014"
      },
      {
        "description": "Educational institutions providing education to students in educational settings.",
        "displayName": "Education",
        "id": "00000000-0000-4000-8000-000000000015"
      },
      {
        "description": "Travel, hospitality and transportation.",
        "displayName": "Hospitality and Travel",
        "id": "00000000-0000-4000-8000-000000000016"
      },
      {
        "description": "Banking and financial institution.",
        "displayName": "Financial Services",
        "id": "00000000-0000-4000-8000-000000000017"
      },
      {
        "description": "Political campaigns and services.",
        "displayName": "Political",
        "id": "00000000-0000-4000-8000-000000000018"
      },
      {
        "description": "Gambling and Lotteries.",
        "displayName": "Gambling and Lottery",
        "id": "00000000-0000-4000-8000-000000000019"
      },
      {
        "description": "Legal services and law firms.",
        "displayName": "Legal",
        "id": "00000000-0000-4000-8000-000000000020"
      },
      {
        "description": "Construction, materials, and trade services.",
        "displayName": "Construction, Materials, and Trade Services",
        "id": "00000000-0000-4000-8000-000000000021"
      },
      {
        "description": "Non-profit organization with valid tax-exempted status.",
        "displayName": "Non-profit Organization",
        "id": "00000000-0000-4000-8000-000000000022"
      },
      {
        "description": "Goods producing industries.",
        "displayName": "Manufacturing",
        "id": "00000000-0000-4000-8000-000000000023"
      },
      {
        "description": "Local, state or federal agencies, utilities.",
        "displayName": "Government Services and Agencies",
        "id": "00000000-0000-4000-8000-000000000024"
      },
      {
        "description": "Information technology and information services.",
        "displayName": "Information Technology Services",
        "id": "00000000-0000-4000-8000-000000000025"
      },
      {
        "description": "Communication and mass media.",
        "displayName": "Media and Communication",
        "id": "00000000-0000-4000-8000-000000000026"
      }
    ]
  }
}
```

---

# List Specialties

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/003__list_specialties
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_misc/003__list_specialties.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists all available specialties with their titles and descriptions.

## Query

```graphql
query
  {
  specialties
    {
    id
    title
    description
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "specialties": [
      {
        "description": null,
        "id": "00000000-0000-4000-8000-000000000001",
        "title": "Telecommunications"
      },
      {
        "description": null,
        "id": "00000000-0000-4000-8000-000000000002",
        "title": "Telecommunications"
      },
      {
        "description": null,
        "id": "00000000-0000-4000-8000-000000000003",
        "title": "Telecommunications"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000004",
        "title": "IT"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000005",
        "title": "Crypto"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000006",
        "title": "Blockchain"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000007",
        "title": "Telecom"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000008",
        "title": "Marketing"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000009",
        "title": "Sales"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000010",
        "title": "Artificial Intelligence (AI)"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000011",
        "title": "Machine Learning (ML)"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000012",
        "title": "Finance"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000013",
        "title": "E-commerce"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000014",
        "title": "Design (UI/UX)"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000015",
        "title": "Health & Wellness"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000016",
        "title": "Environment & Sustainability"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000017",
        "title": "Personal Development"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000018",
        "title": "Gaming"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000019",
        "title": "Travel"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000020",
        "title": "Photography"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000021",
        "title": "Cooking"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000022",
        "title": "Entrepreneurship"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000023",
        "title": "Geopolitics"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000024",
        "title": "Psychology"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000025",
        "title": "Education"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000026",
        "title": "History"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000027",
        "title": "Law"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000028",
        "title": "Music"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000029",
        "title": "Film & Television"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000030",
        "title": "Literature"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000031",
        "title": "Creative Writing"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000032",
        "title": "Astronomy"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000033",
        "title": "Physics"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000034",
        "title": "Chemistry"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000035",
        "title": "Biology"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000036",
        "title": "Foreign Languages"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000037",
        "title": "Animation"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000038",
        "title": "Robotics"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000039",
        "title": "Data Analysis"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000040",
        "title": "Project Management"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000041",
        "title": "Leadership"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000042",
        "title": "Public Speaking"
      },
      {
        "description": "",
        "id": "00000000-0000-4000-8000-000000000043",
        "title": "Social Media Marketing"
      }
    ]
  }
}
```

---

# 004\_telephone\_number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/001__create_company_telephone_number.md)
- [Create company telephone number verification code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/002__create_company_telephone_number_verification_code.md)
- [Verify Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/003__verify_company_telephone_number.md)
- [Update Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/004__update_company_telephone_number.md)
- [Remove Company Telephone Number](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/005__remove_company_telephone_number.md)

---

# Create Company Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/001__create_company_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/001__create_company_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Create a new telephone number for the company. The telephone number will be added to the company's profile with the specified types and visibility settings.

## Query

```graphql
mutation (
  $number: String!
  $countryCode: String!
  $types: [CompanyTelephoneNumberType!]
  $visibility: [CompanyVisibilityType!]
) {
  createCompanyTelephoneNumber (
    number: $number
    countryCode: $countryCode
    types: $types
    visibility: $visibility
  ) {
    id
    number
    types
    visibility
  }
}

```

## Variables

```json
{
  "countryCode": "1",
  "number": "1",
  "types": [
    "SUPPORT"
  ],
  "visibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "createCompanyTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "11",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  }
}
```

---

# Create company telephone number verification code

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/002__create_company_telephone_number_verification_code
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/002__create_company_telephone_number_verification_code.md
Last updated: 2026-10-27T19:42:33.091Z

GraphQL endpoint: `/company`

Sends a one-time verification code to the given company telephone number. The response reports the OTP status, its expiry, and the remaining verification attempts.

A partner company whose application the user is in can pass a `brandingToken` its backend minted (`POST /auth/otp-branding-token`, bound to this user or to the destination): the SMS then names that company as what the code is for. Without it the plain TNID message is sent.

## Query

```graphql
mutation (
  $telephoneNumberId: ID!
) {
  createCompanyTelephoneNumberVerificationCode (
    telephoneNumberId: $telephoneNumberId
  ) {
    expiresAt
    remainingOtpAttempts
    nextOtpAt
    otpStatus
  }
}

```

## Variables

```json
{
  "telephoneNumberId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "createCompanyTelephoneNumberVerificationCode": {
      "expiresAt": "2026-01-15T09:00:00.000000",
      "nextOtpAt": "2026-01-15T09:00:01.000000",
      "otpStatus": "OTP sent",
      "remainingOtpAttempts": 5
    }
  }
}
```

---

# Verify Company Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/003__verify_company_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/003__verify_company_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Verifies a company telephone number using the one-time code previously sent to it. On success the telephone number is marked as verified and an OK status is returned.

## Query

```graphql
mutation (
  $telephoneNumberId: ID!
  $code: String!
) {
  verifyCompanyTelephoneNumber (
    telephoneNumberId: $telephoneNumberId
    code: $code
  ) {
    status
  }
}

```

## Variables

```json
{
  "code": "1",
  "telephoneNumberId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "verifyCompanyTelephoneNumber": {
      "status": "OK"
    }
  }
}
```

---

# Update Company Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/004__update_company_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/004__update_company_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Update the types and visibility settings of an existing company telephone number. The telephone number itself cannot be changed, only its metadata like types and visibility.

## Query

```graphql
mutation (
  $id: ID!
  $types: [CompanyTelephoneNumberType!]
  $visibility: [CompanyVisibilityType!]
) {
  updateCompanyTelephoneNumber (
    id: $id
    types: $types
    visibility: $visibility
  ) {
    id
    number
    types
    visibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "types": [
    "SUPPORT"
  ],
  "visibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "updateCompanyTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "1",
      "types": [
        "SUPPORT"
      ],
      "visibility": [
        "PARTNER",
        "CUSTOMER"
      ]
    }
  }
}
```

---

# Remove Company Telephone Number

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/005__remove_company_telephone_number
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/004_telephone_number/005__remove_company_telephone_number.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Remove a telephone number from the company's profile. This permanently deletes the telephone number record.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeCompanyTelephoneNumber (
    id: $id
  ) {
    id
    number
    types
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeCompanyTelephoneNumber": {
      "id": "00000000-0000-4000-8000-000000000001",
      "number": "1",
      "types": [
        "HEADQUARTERS"
      ]
    }
  }
}
```

---

# 005\_b2b\_connections

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/001__create_b2b_connection_request.md)
- [List B2B connections](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/002__list_b2b_connections.md)
- [List B2B connections (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/003__list_paginated_b2b_connections.md)
- [Remove B2B connection](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/004__remove_b2b_connection.md)
- [List pending B2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/005__list_pending_b2b_connection_requests.md)
- [List Pending B2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/006__list_paginated_pending_b2b_connection_requests.md)
- [Revoke B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/007__revoke_b2b_connection_request.md)
- [List received B2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/008__list_received_b2b_connection_requests.md)
- [List Received B2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/009__list_paginated_received_b2b_connection_requests.md)
- [Respond to B2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/010__respond_b2b_connection_request.md)

---

# Create B2B connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/001__create_b2b_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/001__create_b2b_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Sends a business-to-business connection request to another company. The connection type specifies the relationship (e.g., PARTNER, VENDOR, CUSTOMER). The request stays PENDING until the invited company accepts or rejects it.

## Query

```graphql
mutation (
  $invitedCompanyId: ID!
  $connectionType: B2bConnectionType!
) {
  createB2bConnectionRequest (
    invitedCompanyId: $invitedCompanyId
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionType": "PARTNER",
  "invitedCompanyId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "createB2bConnectionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": null
    }
  }
}
```

---

# List B2B connections

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/002__list_b2b_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/002__list_b2b_connections.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all B2B connections for the current company. You can filter by connection type (included or excluded) and limit the results. Returns connections where you are either the initiating or receiving company.

## Query

```graphql
query (
  $includedType: B2bConnectionType
  $excludedType: B2bConnectionType
  $limit: Int
) {
  b2bConnections (
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    type
    createdAt
    updatedAt
    startedAt
    company {
      id
      legalName
    }
    connectedCompany {
      id
      legalName
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "b2bConnections": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000002",
          "legalName": "2legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000003",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000004",
          "legalName": "3legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000005",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000006",
          "legalName": "4legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000007",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000008",
          "legalName": "5legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000009",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000010",
          "legalName": "6legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000011",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000012",
          "legalName": "7legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000013",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000014",
          "legalName": "8legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000015",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000016",
          "legalName": "9legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000017",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000018",
          "legalName": "10legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000019",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000020",
          "legalName": "11legal-name"
        },
        "connectedCompany": {
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "1legal-name"
        },
        "createdAt": null,
        "id": "00000000-0000-4000-8000-000000000021",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000"
      }
    ]
  }
}
```

---

# List B2B connections (paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/003__list_paginated_b2b_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/003__list_paginated_b2b_connections.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists the company's B2B connections, matched on either side of the connection. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page. Optionally filters by connection types (any-of) and by a fuzzy match on the other party's legal name.

## Query

```graphql
query (
  $includedTypes: [B2bConnectionType!]
  $legalName: String
  $limit: Int
  $cursor: String
) {
  paginatedB2bConnections (
    includedTypes: $includedTypes
    legalName: $legalName
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      company {
        id
      }
      connectedCompany {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedB2bConnections": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "connectedCompany": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000004"
          },
          "connectedCompany": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "id": "00000000-0000-4000-8000-000000000005",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "connectedCompany": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "id": "00000000-0000-4000-8000-000000000007",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "connectedCompany": {
            "id": "00000000-0000-4000-8000-000000000008"
          },
          "id": "00000000-0000-4000-8000-000000000009",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# Remove B2B connection

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/004__remove_b2b_connection
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/004__remove_b2b_connection.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Removes an existing B2B connection between companies. Either company in the connection can remove it.

## Query

```graphql
mutation (
  $connectionId: ID!
) {
  removeB2bConnection (
    connectionId: $connectionId
  ) {
    id
    type
    createdAt
    updatedAt
    startedAt
    company {
      id
    }
    connectedCompany {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "removeB2bConnection": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "connectedCompany": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "createdAt": null,
      "id": "00000000-0000-4000-8000-000000000003",
      "startedAt": null,
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:00.000000"
    }
  }
}
```

---

# List pending B2B connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/005__list_pending_b2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/005__list_pending_b2b_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all pending B2B connection requests that your company has sent. You can filter by invited company ID, connection type, and limit the results.

## Query

```graphql
query (
  $invitedCompanyId: ID
  $includedType: B2bConnectionType
  $excludedType: B2bConnectionType
  $limit: Int
) {
  pendingB2bConnectionRequests (
    invitedCompanyId: $invitedCompanyId
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingB2bConnectionRequests": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000004",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000005"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000007"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000009"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000010",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000011"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000013"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000015"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000017"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000019"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000021"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": null
        }
      }
    ]
  }
}
```

---

# List Pending B2B Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/006__list_paginated_pending_b2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/006__list_paginated_pending_b2b_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the B2B connection requests the company has sent that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingB2bConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      invitedCompany {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingB2bConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "invitedCompany": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "invitedCompany": {
            "id": "00000000-0000-4000-8000-000000000004"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000005",
          "invitedCompany": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "status": "PENDING",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# Revoke B2B connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/007__revoke_b2b_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/007__revoke_b2b_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Revokes a pending B2B connection request that your company sent. Only the company that sent the request can revoke it, and the request must still be pending.

## Query

```graphql
mutation (
  $requestId: ID!
) {
  revokeB2bConnectionRequest (
    requestId: $requestId
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "revokeB2bConnectionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "REVOKED",
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": null
    }
  }
}
```

---

# List received B2B connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/008__list_received_b2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/008__list_received_b2b_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all pending B2B connection requests that your company has received from other companies. You can filter by inviting company ID, connection type, and limit the results.

## Query

```graphql
query (
  $invitingCompanyId: ID
  $includedType: B2bConnectionType
  $excludedType: B2bConnectionType
  $limit: Int
) {
  receivedB2bConnectionRequests (
    invitingCompanyId: $invitingCompanyId
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedB2bConnectionRequests": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000004"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "id": "00000000-0000-4000-8000-000000000007",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "id": "00000000-0000-4000-8000-000000000013",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000016"
        },
        "id": "00000000-0000-4000-8000-000000000017",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000018"
        },
        "id": "00000000-0000-4000-8000-000000000019",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": null
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": null
        }
      }
    ]
  }
}
```

---

# List Received B2B Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/009__list_paginated_received_b2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/009__list_paginated_received_b2b_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the B2B connection requests the company has received that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedReceivedB2bConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      company {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedB2bConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000005"
          },
          "id": "00000000-0000-4000-8000-000000000006",
          "status": "PENDING",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# Respond to B2B connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/010__respond_b2b_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/005_b2b_connections/010__respond_b2b_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Responds to a B2B connection request. The invited company can accept by setting response = "ACCEPTED" or reject via response = "REJECTED". When accepted, a B2B connection is created between the two companies.

## Query

```graphql
mutation (
  $requestId: ID!
  $response: ConnectionRequestResponse!
) {
  respondB2bConnectionRequest (
    requestId: $requestId
    response: $response
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedCompany {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000002",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondB2bConnectionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "ACCEPTED",
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": null
    }
  }
}
```

---

# 006\_b2c\_connections

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections.md
Last updated: 2026-09-09T03:10:23.000Z

- [Create B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/001__create_b2c_connection_request.md)
- [List B2C connections (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/002__list_b2c_connections_as_company.md)
- [List B2C Connections (Company, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/003__list_paginated_b2c_connections_as_company.md)
- [List pending B2C connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/004__list_pending_b2c_connection_requests.md)
- [List Pending B2C Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/005__list_paginated_pending_b2c_connection_requests.md)
- [List received C2B connection requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/006__list_received_c2b_connection_requests.md)
- [List Received C2B Connection Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/007__list_paginated_received_c2b_connection_requests.md)
- [Respond to C2B connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/008__respond_c2b_connection_request.md)
- [Remove B2C connection](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/009__remove_b2c_connection.md)
- [Revoke B2C connection request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/010__revoke_b2c_connection_request.md)
- [Create B2C invite](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/011__create_b2c_invite.md)

---

# Create B2C connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/001__create_b2c_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/001__create_b2c_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Sends a connection request from a company to a user (person). The connection type specifies the nature of the relationship (e.g., CUSTOMER, PARTNER, VENDOR). The invited user receives a notification and can accept or reject the request. The request stays PENDING until the user responds.

## Query

```graphql
mutation (
  $invitedUserId: ID!
  $connectionType: B2cConnectionType!
) {
  createB2cConnectionRequest (
    invitedUserId: $invitedUserId
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionType": "CUSTOMER",
  "invitedUserId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "createB2cConnectionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": null
    }
  }
}
```

---

# List B2C connections (company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/002__list_b2c_connections_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/002__list_b2c_connections_as_company.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all active B2C connections for the authenticated company. B2C connections represent relationships between a company and individual users. You can filter by connection type (included or excluded) and limit the results.

## Query

```graphql
query (
  $includedType: B2cConnectionType
  $excludedType: B2cConnectionType
  $limit: Int
) {
  b2cConnections (
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    type
    insertedAt
    updatedAt
    startedAt
    company {
      id
    }
    connectedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "b2cConnections": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "id": "00000000-0000-4000-8000-000000000003",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000004"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "id": "00000000-0000-4000-8000-000000000007",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000008"
        },
        "id": "00000000-0000-4000-8000-000000000009",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000010"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "id": "00000000-0000-4000-8000-000000000013",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000014"
        },
        "id": "00000000-0000-4000-8000-000000000015",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000016"
        },
        "id": "00000000-0000-4000-8000-000000000017",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000018"
        },
        "id": "00000000-0000-4000-8000-000000000019",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000"
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "connectedUser": {
          "id": "00000000-0000-4000-8000-000000000020"
        },
        "id": "00000000-0000-4000-8000-000000000021",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "startedAt": null,
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000"
      }
    ]
  }
}
```

---

# List B2C Connections (Company, Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/003__list_paginated_b2c_connections_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/003__list_paginated_b2c_connections_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the company's B2C connections to individual users. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page. Optionally filters by connection types (any-of) and by a fuzzy match on the connected user's full name.

## Query

```graphql
query (
  $includedTypes: [B2cConnectionType!]
  $userName: String
  $limit: Int
  $cursor: String
) {
  paginatedB2cConnectionsAsCompany (
    includedTypes: $includedTypes
    userName: $userName
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      connectedUser {
        id
        firstName
        lastName
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedB2cConnectionsAsCompany": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "connectedUser": {
            "firstName": "1john",
            "id": "00000000-0000-4000-8000-000000000001",
            "lastName": "2doe"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "type": "OTHER"
        },
        {
          "connectedUser": {
            "firstName": "3john",
            "id": "00000000-0000-4000-8000-000000000003",
            "lastName": "4doe"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "type": "OTHER"
        },
        {
          "connectedUser": {
            "firstName": "5john",
            "id": "00000000-0000-4000-8000-000000000005",
            "lastName": "6doe"
          },
          "id": "00000000-0000-4000-8000-000000000006",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# List pending B2C connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/004__list_pending_b2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/004__list_pending_b2c_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all pending B2C connection requests sent by the authenticated company. These are connection requests that have been sent to users but not yet responded to. You can filter by invited user ID, connection type, and limit the results. Only requests with status PENDING are returned.

## Query

```graphql
query (
  $invitedUserId: ID
  $includedType: B2cConnectionType
  $excludedType: B2cConnectionType
  $limit: Int
) {
  pendingB2cConnectionRequests (
    invitedUserId: $invitedUserId
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingB2cConnectionRequests": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000009"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000010"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000015"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000016"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000017",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000018"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000021"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000022"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000023",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000024"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000025"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000026",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000027"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000028"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000029",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000030"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000031"
        }
      }
    ]
  }
}
```

---

# List Pending B2C Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/005__list_paginated_pending_b2c_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/005__list_paginated_pending_b2c_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the B2C connection requests the company has sent to users that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingB2cConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      invitedUser {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingB2cConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "invitedUser": {
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "invitedUser": {
            "id": "00000000-0000-4000-8000-000000000004"
          },
          "status": "PENDING",
          "type": "OTHER"
        },
        {
          "id": "00000000-0000-4000-8000-000000000005",
          "invitedUser": {
            "id": "00000000-0000-4000-8000-000000000006"
          },
          "status": "PENDING",
          "type": "OTHER"
        }
      ]
    }
  }
}
```

---

# List received C2B connection requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/006__list_received_c2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/006__list_received_c2b_connection_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all pending connection requests received from users (C2B - Consumer to Business). These are connection requests initiated by users who want to connect with the company. You can filter by user ID, connection type, and limit the results. Only requests with status PENDING are returned. Use respondC2bConnectionRequest to accept or reject these requests.

## Query

```graphql
query (
  $userId: ID
  $includedType: B2cConnectionType
  $excludedType: B2cConnectionType
  $limit: Int
) {
  receivedC2bConnectionRequests (
    userId: $userId
    includedType: $includedType
    excludedType: $excludedType
    limit: $limit
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedCompany {
      id
    }
    respondedByUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedC2bConnectionRequests": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000003"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000004",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000005"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000006",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000009"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000010",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000011"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000012",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000015"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000016",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000017"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000018",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedCompany": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "respondedAt": null,
        "respondedByUser": {
          "id": null
        },
        "status": "PENDING",
        "type": "OTHER",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000021"
        }
      }
    ]
  }
}
```

---

# List Received C2B Connection Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/007__list_paginated_received_c2b_connection_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/007__list_paginated_received_c2b_connection_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the connection requests users have sent to the company that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedReceivedC2bConnectionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      user {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedC2bConnectionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "status": "PENDING",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000002"
          }
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "status": "PENDING",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        },
        {
          "id": "00000000-0000-4000-8000-000000000005",
          "status": "PENDING",
          "type": "OTHER",
          "user": {
            "id": "00000000-0000-4000-8000-000000000006"
          }
        }
      ]
    }
  }
}
```

---

# Respond to C2B connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/008__respond_c2b_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/008__respond_c2b_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Accepts or rejects a connection request received from a user (C2B) by setting response to ACCEPTED or REJECTED. If accepted, a B2C connection is created between the company and user. If rejected, no connection is created and the request is marked as rejected.

## Query

```graphql
mutation (
  $requestId: ID!
  $response: ConnectionRequestResponse!
) {
  respondC2bConnectionRequest (
    requestId: $requestId
    response: $response
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    user {
      id
    }
    invitedCompany {
      id
    }
    respondedByUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000001",
  "response": "ACCEPTED"
}
```

## Response

```json
{
  "data": {
    "respondC2bConnectionRequest": {
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedCompany": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "respondedByUser": null,
      "status": "ACCEPTED",
      "type": "PARTNER",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# Remove B2C connection

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/009__remove_b2c_connection
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/009__remove_b2c_connection.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Removes an existing B2C connection between the company and a user. The connection is permanently removed and both parties will no longer see each other in their connections list. This action cannot be undone.

## Query

```graphql
mutation (
  $connectionId: ID!
) {
  removeB2cConnection (
    connectionId: $connectionId
  ) {
    id
    type
    insertedAt
    updatedAt
    startedAt
    company {
      id
    }
    connectedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "connectionId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "removeB2cConnection": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "connectedUser": {
        "id": "00000000-0000-4000-8000-000000000002"
      },
      "id": "00000000-0000-4000-8000-000000000003",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "startedAt": null,
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:00.000000"
    }
  }
}
```

---

# Revoke B2C connection request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/010__revoke_b2c_connection_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/010__revoke_b2c_connection_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Cancels a pending B2C connection request that was sent to a user, before the user responds. Only pending requests can be revoked; requests that have already been accepted or rejected cannot be revoked. The request status changes to REVOKED.

## Query

```graphql
mutation (
  $requestId: ID!
) {
  revokeB2cConnectionRequest (
    requestId: $requestId
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "revokeB2cConnectionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "REVOKED",
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": null
    }
  }
}
```

---

# Create B2C invite

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/011__create_b2c_invite
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/006_b2c_connections/011__create_b2c_invite.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Invites a new or existing user to connect with the company. If the user already exists (matched by email or telephone number), a connection request is sent to them. If they don't exist, a new user is created and invited in the same operation.

## Query

```graphql
mutation (
  $user: InviteUserInput!
  $connectionType: B2cConnectionType!
) {
  createB2cInvite (
    user: $user
    connectionType: $connectionType
  ) {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
      username
    }
  }
}

```

## Variables

```json
{
  "connectionType": "CUSTOMER",
  "user": {
    "email": "test1@email.com",
    "firstName": "1john",
    "lastName": "2doe",
    "metadata": {
      "test": "value"
    },
    "sendInviteEmail": true,
    "telephoneNumber": "2"
  }
}
```

## Response

```json
{
  "data": {
    "createB2cInvite": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003",
        "username": "1john-2doe-aynq"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "CUSTOMER",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": null
    }
  }
}
```

---

# 007\_b2c\_subscriptions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions.md
Last updated: 2026-09-09T03:10:23.000Z

- [List B2C subscriptions (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/001__list_b2c_subscriptions_as_company.md)
- [List pending B2C subscription requests (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/002__list_pending_b2c_subscription_requests_as_company.md)
- [List Pending B2C Subscription Requests (Company, Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/003__list_paginated_pending_b2c_subscription_requests_as_company.md)
- [Create B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/004__create_b2c_subscription_request.md)
- [Revoke B2C subscription request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/005__revoke_b2c_subscription_request.md)
- [Remove B2C subscription (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/006__remove_b2c_subscription_as_company.md)
- [List B2C Subscription Topics](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/007__list_b2c_subscription_topics.md)
- [Create B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/008__create_b2c_subscription_topic.md)
- [Update B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/009__update_b2c_subscription_topic.md)
- [Remove B2C Subscription Topic](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/010__remove_b2c_subscription_topic.md)

---

# List B2C subscriptions (company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/001__list_b2c_subscriptions_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/001__list_b2c_subscriptions_as_company.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Lists all active B2C subscriptions for the authenticated company. B2C subscriptions represent users who have opted in to receive communications from the company via email, SMS, or voice. You can filter by user, topic (included or excluded), expiration date, and subscription types. Results are paginated via limit and cursor.

## Query

```graphql
query (
  $userId: ID
  $companyId: ID
  $includedTopic: String
  $excludedTopic: String
  $expirationDateBefore: Date
  $expirationDateAfter: Date
  $types: [B2cSubscriptionType!]
  $limit: Int
  $cursor: String
) {
  b2cSubscriptions (
    userId: $userId
    companyId: $companyId
    includedTopic: $includedTopic
    excludedTopic: $excludedTopic
    expirationDateBefore: $expirationDateBefore
    expirationDateAfter: $expirationDateAfter
    types: $types
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }

    records {
      ... on B2cEmailSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        email
        company {
          id
        }
        user {
          id
        }
      }

      ... on B2cSmsSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }

      ... on B2cVoiceSubscription {
        id
        insertedAt
        updatedAt
        type
        subscriptionTopics
        expirationDate
        notificationStartTime
        notificationEndTime
        telephoneNumber
        company {
          id
        }
        user {
          id
        }
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "b2cSubscriptions": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "email": "test1@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000002",
          "insertedAt": "2026-01-15T09:00:04.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_2",
            "topic_3"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:04.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "email": "test4@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000004",
          "insertedAt": "2026-01-15T09:00:03.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_3",
            "topic_2"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:03.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000005"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "email": "test5@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000006",
          "insertedAt": "2026-01-15T09:00:02.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_3",
            "topic_2"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:02.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000007"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "email": "test6@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000008",
          "insertedAt": "2026-01-15T09:00:01.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_3",
            "topic_2"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:01.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000009"
          }
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "email": "test7@email.com",
          "expirationDate": null,
          "id": "00000000-0000-4000-8000-000000000010",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "notificationEndTime": "20:00:00",
          "notificationStartTime": "08:00:00",
          "subscriptionTopics": [
            "topic_3",
            "topic_2"
          ],
          "type": "EMAIL",
          "updatedAt": "2026-01-15T09:00:00.000000",
          "user": {
            "id": "00000000-0000-4000-8000-000000000011"
          }
        }
      ]
    }
  }
}
```

---

# List pending B2C subscription requests (company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/002__list_pending_b2c_subscription_requests_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/002__list_pending_b2c_subscription_requests_as_company.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists all pending B2C subscription requests sent by the authenticated company. These are subscription requests that have been sent to users but not yet responded to. Only requests with status PENDING are returned; accepted, rejected, or revoked requests are not included.

## Query

```graphql
query {
  pendingB2cSubscriptionRequests {
    id
    status
    type
    insertedAt
    respondedAt
    updatedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingB2cSubscriptionRequests": [
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:09.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000003"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:09.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000004"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "insertedAt": "2026-01-15T09:00:08.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000006"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:08.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000007"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000008",
        "insertedAt": "2026-01-15T09:00:07.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000009"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:07.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000010"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000011",
        "insertedAt": "2026-01-15T09:00:06.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000012"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:06.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000013"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000014",
        "insertedAt": "2026-01-15T09:00:05.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000015"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000016"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000017",
        "insertedAt": "2026-01-15T09:00:04.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000018"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000019"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000020",
        "insertedAt": "2026-01-15T09:00:03.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000021"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000022"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000023",
        "insertedAt": "2026-01-15T09:00:02.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000024"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000025"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000026",
        "insertedAt": "2026-01-15T09:00:01.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000027"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000028"
        }
      },
      {
        "company": {
          "id": "00000000-0000-4000-8000-000000000001"
        },
        "id": "00000000-0000-4000-8000-000000000029",
        "insertedAt": "2026-01-15T09:00:00.000000",
        "invitedUser": {
          "id": "00000000-0000-4000-8000-000000000030"
        },
        "respondedAt": null,
        "status": "PENDING",
        "type": "EMAIL",
        "updatedAt": "2026-01-15T09:00:00.000000",
        "user": {
          "id": "00000000-0000-4000-8000-000000000031"
        }
      }
    ]
  }
}
```

---

# List Pending B2C Subscription Requests (Company, Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/003__list_paginated_pending_b2c_subscription_requests_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/003__list_paginated_pending_b2c_subscription_requests_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the company's B2C subscription requests that are still PENDING; requests that were already responded to are excluded. Results are cursor-paginated: pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedPendingB2cSubscriptionRequests(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      type
      status
      company {
        id
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedPendingB2cSubscriptionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "status": "PENDING",
          "type": "EMAIL"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "status": "PENDING",
          "type": "EMAIL"
        },
        {
          "company": {
            "id": "00000000-0000-4000-8000-000000000001"
          },
          "id": "00000000-0000-4000-8000-000000000004",
          "status": "PENDING",
          "type": "EMAIL"
        }
      ]
    }
  }
}
```

---

# Create B2C subscription request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/004__create_b2c_subscription_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/004__create_b2c_subscription_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Sends a subscription request to a user asking for their consent to receive communications of the given type (EMAIL, SMS, VOICE). The request stays PENDING until the user responds. If the user accepts, a B2C subscription is created. If they reject, the request is marked as rejected and no subscription is created.

## Query

```graphql
mutation (
  $invitedUserId: ID!
  $type: B2cSubscriptionType!
  $subscriptionTopicIds: [ID!]
) {
  createB2cSubscriptionRequest (
    invitedUserId: $invitedUserId
    type: $type
    subscriptionTopicIds: $subscriptionTopicIds
  ) {
    id
    status
    type
    insertedAt
    updatedAt
    respondedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "invitedUserId": "00000000-0000-4000-8000-000000000003",
  "type": "EMAIL"
}
```

## Response

```json
{
  "data": {
    "createB2cSubscriptionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": null,
      "status": "PENDING",
      "type": "EMAIL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": null
    }
  }
}
```

---

# Revoke B2C subscription request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/005__revoke_b2c_subscription_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/005__revoke_b2c_subscription_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Cancels a pending B2C subscription request that was sent to a user, before the user responds. Only pending requests can be revoked; requests that have already been accepted or rejected cannot be revoked. The request status changes to REVOKED.

## Query

```graphql
mutation (
  $requestId: ID!
) {
  revokeB2cSubscriptionRequest (
    requestId: $requestId
  ) {
    id
    status
    type
    insertedAt
    updatedAt
    respondedAt
    company {
      id
    }
    user {
      id
    }
    invitedUser {
      id
    }
  }
}

```

## Variables

```json
{
  "requestId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "revokeB2cSubscriptionRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "invitedUser": {
        "id": "00000000-0000-4000-8000-000000000003"
      },
      "respondedAt": "2026-01-15T09:00:01.000000",
      "status": "REVOKED",
      "type": "EMAIL",
      "updatedAt": "2026-01-15T09:00:02.000000",
      "user": null
    }
  }
}
```

---

# Remove B2C subscription (company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/006__remove_b2c_subscription_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/006__remove_b2c_subscription_as_company.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Removes an existing B2C subscription for a user, unsubscribing them from receiving communications of that type from the company. The subscription is permanently removed. This action cannot be undone, but a new subscription can be created if consent is obtained again.

## Query

```graphql
mutation (
  $subscriptionId: ID!
) {
  removeB2cSubscription (
    subscriptionId: $subscriptionId
  ) {
    ... on B2cEmailSubscription {
      id
      insertedAt
      updatedAt
      type
      subscriptionTopics
      expirationDate
      notificationStartTime
      notificationEndTime
      email
      company {
        id
      }
      user {
        id
      }
    }

    ... on B2cSmsSubscription {
      id
      insertedAt
      updatedAt
      type
      subscriptionTopics
      expirationDate
      notificationStartTime
      notificationEndTime
      telephoneNumber
      company {
        id
      }
      user {
        id
      }
    }

    ... on B2cVoiceSubscription {
      id
      insertedAt
      updatedAt
      type
      subscriptionTopics
      expirationDate
      notificationStartTime
      notificationEndTime
      telephoneNumber
      company {
        id
      }
      user {
        id
      }
    }
  }
}

```

## Variables

```json
{
  "subscriptionId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "removeB2cSubscription": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "email": "test1@email.com",
      "expirationDate": null,
      "id": "00000000-0000-4000-8000-000000000002",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "notificationEndTime": "20:00:00",
      "notificationStartTime": "08:00:00",
      "subscriptionTopics": [
        "topic_2",
        "topic_3"
      ],
      "type": "EMAIL",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "user": {
        "id": "00000000-0000-4000-8000-000000000003"
      }
    }
  }
}
```

---

# List B2C Subscription Topics

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/007__list_b2c_subscription_topics
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/007__list_b2c_subscription_topics.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists all subscription topics available for the authenticated company. Subscription topics define the categories of communications that users can subscribe to. Each topic specifies its name, importance level (CRITICAL, NON\_CRITICAL), and whether email, SMS, and voice subscriptions are enabled for it.

## Query

```graphql
query {
  b2cSubscriptionTopics {
    id
    name
    type
    enableEmail
    enableSms
    enableVoice
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "b2cSubscriptionTopics": [
      {
        "enableEmail": true,
        "enableSms": true,
        "enableVoice": true,
        "id": "00000000-0000-4000-8000-000000000001",
        "name": "topic_1",
        "type": "NON_CRITICAL"
      },
      {
        "enableEmail": true,
        "enableSms": true,
        "enableVoice": true,
        "id": "00000000-0000-4000-8000-000000000002",
        "name": "topic_2",
        "type": "NON_CRITICAL"
      }
    ]
  }
}
```

---

# Create B2C Subscription Topic

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/008__create_b2c_subscription_topic
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/008__create_b2c_subscription_topic.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates a B2C subscription topic for the company, with per-channel delivery flags (email, SMS, voice). The topic name must be unique within the company.

## Query

```graphql
mutation (
  $name: String!
  $description: String
  $type: B2cSubscriptionTopicType
  $enableEmail: Boolean
  $enableSms: Boolean
  $enableVoice: Boolean
) {
  createB2cSubscriptionTopic (
    name: $name
    description: $description
    type: $type
    enableEmail: $enableEmail
    enableSms: $enableSms
    enableVoice: $enableVoice
  ) {
    id
    name
    description
    type
    enableEmail
    enableSms
    enableVoice
  }
}

```

## Variables

```json
{
  "description": "test description",
  "enableEmail": true,
  "enableSms": false,
  "enableVoice": true,
  "name": "test topic",
  "type": "CRITICAL"
}
```

## Response

```json
{
  "data": {
    "createB2cSubscriptionTopic": {
      "description": "test description",
      "enableEmail": true,
      "enableSms": false,
      "enableVoice": true,
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "test topic",
      "type": "CRITICAL"
    }
  }
}
```

---

# Update B2C Subscription Topic

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/009__update_b2c_subscription_topic
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/009__update_b2c_subscription_topic.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Updates one of the company's B2C subscription topics; only the provided fields change. The topic name must stay unique within the company. Once a topic has subscribers its `name` and `type` are both fixed — they are what those people consented to — while the description and the per-channel flags stay editable.

## Query

```graphql
mutation (
  $id: ID!
  $name: String
  $description: String
  $type: B2cSubscriptionTopicType
  $enableEmail: Boolean
  $enableSms: Boolean
  $enableVoice: Boolean
) {
  updateB2cSubscriptionTopic (
    id: $id
    name: $name
    description: $description
    type: $type
    enableEmail: $enableEmail
    enableSms: $enableSms
    enableVoice: $enableVoice
  ) {
    id
    name
    description
    type
    enableEmail
    enableSms
    enableVoice
  }
}

```

## Variables

```json
{
  "description": "test description",
  "enableEmail": true,
  "enableSms": false,
  "enableVoice": true,
  "id": "00000000-0000-4000-8000-000000000001",
  "name": "test topic",
  "type": "CRITICAL"
}
```

## Response

```json
{
  "data": {
    "updateB2cSubscriptionTopic": {
      "description": "test description",
      "enableEmail": true,
      "enableSms": false,
      "enableVoice": true,
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "test topic",
      "type": "CRITICAL"
    }
  }
}
```

---

# Remove B2C Subscription Topic

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/010__remove_b2c_subscription_topic
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/007_b2c_subscriptions/010__remove_b2c_subscription_topic.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Removes one of the company's B2C subscription topics by id and returns the removed topic.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeB2cSubscriptionTopic (
    id: $id
  ) {
    id
    name
    description
    type
    enableEmail
    enableSms
    enableVoice
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeB2cSubscriptionTopic": {
      "description": "description_1",
      "enableEmail": true,
      "enableSms": true,
      "enableVoice": true,
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "topic_2",
      "type": "NON_CRITICAL"
    }
  }
}
```

---

# 008\_opt\_out

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out.md
Last updated: 2026-09-09T03:10:23.000Z

- [List Opt-Out Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/001__list_opt_out_requests.md)
- [Create Opt-Out Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/002__create_opt_out_request.md)

---

# List Opt-Out Requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/001__list_opt_out_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/001__list_opt_out_requests.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

List all opt-out requests received by the authenticated company. Opt-out requests are created when users request to stop receiving communications.

Optional filters:

* `type`: Filter by type (SMS, VOICE, EMAIL)
* `status`: Filter by status (PENDING, ACCEPTED, REJECTED)
* `source`: Filter by source/sender
* `destination`: Filter by destination/recipient
* `externalId`: Filter by external identifier
* `timestampBefore`: Filter by timestamp
* `timestampAfter`: Filter by timestamp
* `limit`: Maximum number of results

Returns opt-out requests with associated user information (if available).

## Query

```graphql
query (
  $type: OptOutRequestType
  $status: OptOutRequestStatus
  $source: String
  $destination: String
  $externalId: String
  $timestampBefore: NaiveDateTime
  $timestampAfter: NaiveDateTime
  $limit: Int
) {
  optOutRequests (
    type: $type
    status: $status
    source: $source
    destination: $destination
    externalId: $externalId
    timestampBefore: $timestampBefore
    timestampAfter: $timestampAfter
    limit: $limit
  ) {
    id
    source
    destination
    externalId
    messageBody
    type
    status
    createdAt
    updatedAt
    timestamp
    metadata
    company {
      id
      legalName
      brandName
      profileName
      yearFounded
      aboutUs
      metadata
      verified
      logoUrl
      verticalType {
        id
        displayName
        description
      }
      organizationType {
        id
        displayName
      }
      addresses {
        city
        country
        state
        street
        types
        zipCode
      }
      emails {
        email
      }
      telephoneNumbers {
        number
      }
      socialNetworks {
        type
        url
      }
      webpages {
        type
        url
      }
      specialties {
        description
        title
      }
      subscriptionTopics {
        id
        name
      }
    }
    user {
      id
      username
      firstName
      middleName
      lastName
      birthdate
      aboutMe
      timezone
      metadata
      addresses {
        city
        country
        state
        street
        types
        zipCode
      }
      emails {
        email
      }
      telephoneNumbers {
        number
      }
      socialNetworks {
        type
        url
      }
      webpages {
        type
        url
      }
      interests {
        description
        title
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "optOutRequests": [
      {
        "company": {
          "aboutUs": "about us content",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 1",
              "types": [
                "HEADQUARTERS"
              ],
              "zipCode": "12345"
            }
          ],
          "brandName": "1brand-name",
          "emails": [
            {
              "email": "test2@email.com"
            }
          ],
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
          "metadata": {
            "test": "value"
          },
          "organizationType": {
            "displayName": "display_name_3",
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "profileName": "3profile-name",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm4.not"
            }
          ],
          "specialties": [
            {
              "description": null,
              "title": "Telecommunications"
            }
          ],
          "subscriptionTopics": [
            null
          ],
          "telephoneNumbers": [
            {
              "number": "5"
            }
          ],
          "verified": true,
          "verticalType": {
            "description": "description_6",
            "displayName": "display_name_7",
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage8.not"
            }
          ],
          "yearFounded": 2000
        },
        "createdAt": null,
        "destination": "1234131",
        "externalId": "1231",
        "id": "00000000-0000-4000-8000-000000000004",
        "messageBody": "message content",
        "metadata": {
          "different": "metadata"
        },
        "source": "2132131",
        "status": "RECEIVED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "type": "SMS",
        "updatedAt": "2026-01-15T09:00:01.000000",
        "user": {
          "aboutMe": "this is my generic intro",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 9",
              "types": [
                "HOME"
              ],
              "zipCode": "12345"
            }
          ],
          "birthdate": "1990-01-15",
          "emails": [
            {
              "email": "test10@email.com"
            }
          ],
          "firstName": "4john",
          "id": "00000000-0000-4000-8000-000000000005",
          "interests": [
            {
              "description": null,
              "title": "Interest 11"
            }
          ],
          "lastName": "5doe",
          "metadata": {
            "test": "value"
          },
          "middleName": "ray",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm12.not"
            }
          ],
          "telephoneNumbers": [
            {
              "number": "13"
            }
          ],
          "timezone": "UTC",
          "username": "username14",
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage15.not"
            }
          ]
        }
      },
      {
        "company": {
          "aboutUs": "about us content",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 1",
              "types": [
                "HEADQUARTERS"
              ],
              "zipCode": "12345"
            }
          ],
          "brandName": "1brand-name",
          "emails": [
            {
              "email": "test2@email.com"
            }
          ],
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
          "metadata": {
            "test": "value"
          },
          "organizationType": {
            "displayName": "display_name_3",
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "profileName": "3profile-name",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm4.not"
            }
          ],
          "specialties": [
            {
              "description": null,
              "title": "Telecommunications"
            }
          ],
          "subscriptionTopics": [
            null
          ],
          "telephoneNumbers": [
            {
              "number": "5"
            }
          ],
          "verified": true,
          "verticalType": {
            "description": "description_6",
            "displayName": "display_name_7",
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage8.not"
            }
          ],
          "yearFounded": 2000
        },
        "createdAt": null,
        "destination": "1234132",
        "externalId": "1232",
        "id": "00000000-0000-4000-8000-000000000006",
        "messageBody": "message content",
        "metadata": {
          "different": "metadata"
        },
        "source": "2132132",
        "status": "RECEIVED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "type": "SMS",
        "updatedAt": "2026-01-15T09:00:02.000000",
        "user": {
          "aboutMe": "this is my generic intro",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 16",
              "types": [
                "HOME"
              ],
              "zipCode": "12345"
            }
          ],
          "birthdate": "1990-01-15",
          "emails": [
            {
              "email": "test17@email.com"
            }
          ],
          "firstName": "6john",
          "id": "00000000-0000-4000-8000-000000000007",
          "interests": [
            {
              "description": null,
              "title": "Interest 18"
            }
          ],
          "lastName": "7doe",
          "metadata": {
            "test": "value"
          },
          "middleName": "ray",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm19.not"
            }
          ],
          "telephoneNumbers": [
            {
              "number": "20"
            }
          ],
          "timezone": "UTC",
          "username": "username21",
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage22.not"
            }
          ]
        }
      },
      {
        "company": {
          "aboutUs": "about us content",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 1",
              "types": [
                "HEADQUARTERS"
              ],
              "zipCode": "12345"
            }
          ],
          "brandName": "1brand-name",
          "emails": [
            {
              "email": "test2@email.com"
            }
          ],
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
          "metadata": {
            "test": "value"
          },
          "organizationType": {
            "displayName": "display_name_3",
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "profileName": "3profile-name",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm4.not"
            }
          ],
          "specialties": [
            {
              "description": null,
              "title": "Telecommunications"
            }
          ],
          "subscriptionTopics": [
            null
          ],
          "telephoneNumbers": [
            {
              "number": "5"
            }
          ],
          "verified": true,
          "verticalType": {
            "description": "description_6",
            "displayName": "display_name_7",
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage8.not"
            }
          ],
          "yearFounded": 2000
        },
        "createdAt": null,
        "destination": "1234133",
        "externalId": "1233",
        "id": "00000000-0000-4000-8000-000000000008",
        "messageBody": "message content",
        "metadata": {
          "different": "metadata"
        },
        "source": "2132133",
        "status": "RECEIVED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "type": "SMS",
        "updatedAt": "2026-01-15T09:00:03.000000",
        "user": {
          "aboutMe": "this is my generic intro",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 23",
              "types": [
                "HOME"
              ],
              "zipCode": "12345"
            }
          ],
          "birthdate": "1990-01-15",
          "emails": [
            {
              "email": "test24@email.com"
            }
          ],
          "firstName": "8john",
          "id": "00000000-0000-4000-8000-000000000009",
          "interests": [
            {
              "description": null,
              "title": "Interest 25"
            }
          ],
          "lastName": "9doe",
          "metadata": {
            "test": "value"
          },
          "middleName": "ray",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm26.not"
            }
          ],
          "telephoneNumbers": [
            {
              "number": "27"
            }
          ],
          "timezone": "UTC",
          "username": "username28",
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage29.not"
            }
          ]
        }
      },
      {
        "company": {
          "aboutUs": "about us content",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 1",
              "types": [
                "HEADQUARTERS"
              ],
              "zipCode": "12345"
            }
          ],
          "brandName": "1brand-name",
          "emails": [
            {
              "email": "test2@email.com"
            }
          ],
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
          "metadata": {
            "test": "value"
          },
          "organizationType": {
            "displayName": "display_name_3",
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "profileName": "3profile-name",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm4.not"
            }
          ],
          "specialties": [
            {
              "description": null,
              "title": "Telecommunications"
            }
          ],
          "subscriptionTopics": [
            null
          ],
          "telephoneNumbers": [
            {
              "number": "5"
            }
          ],
          "verified": true,
          "verticalType": {
            "description": "description_6",
            "displayName": "display_name_7",
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage8.not"
            }
          ],
          "yearFounded": 2000
        },
        "createdAt": null,
        "destination": "1234134",
        "externalId": "1234",
        "id": "00000000-0000-4000-8000-000000000010",
        "messageBody": "message content",
        "metadata": {
          "different": "metadata"
        },
        "source": "2132134",
        "status": "RECEIVED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "type": "SMS",
        "updatedAt": "2026-01-15T09:00:04.000000",
        "user": {
          "aboutMe": "this is my generic intro",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 30",
              "types": [
                "HOME"
              ],
              "zipCode": "12345"
            }
          ],
          "birthdate": "1990-01-15",
          "emails": [
            {
              "email": "test31@email.com"
            }
          ],
          "firstName": "10john",
          "id": "00000000-0000-4000-8000-000000000011",
          "interests": [
            {
              "description": null,
              "title": "Interest 32"
            }
          ],
          "lastName": "11doe",
          "metadata": {
            "test": "value"
          },
          "middleName": "ray",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm33.not"
            }
          ],
          "telephoneNumbers": [
            {
              "number": "34"
            }
          ],
          "timezone": "UTC",
          "username": "username35",
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage36.not"
            }
          ]
        }
      },
      {
        "company": {
          "aboutUs": "about us content",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 1",
              "types": [
                "HEADQUARTERS"
              ],
              "zipCode": "12345"
            }
          ],
          "brandName": "1brand-name",
          "emails": [
            {
              "email": "test2@email.com"
            }
          ],
          "id": "00000000-0000-4000-8000-000000000001",
          "legalName": "2legal-name",
          "logoUrl": "http://localhost:4566/logo_url?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000",
          "metadata": {
            "test": "value"
          },
          "organizationType": {
            "displayName": "display_name_3",
            "id": "00000000-0000-4000-8000-000000000002"
          },
          "profileName": "3profile-name",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm4.not"
            }
          ],
          "specialties": [
            {
              "description": null,
              "title": "Telecommunications"
            }
          ],
          "subscriptionTopics": [
            null
          ],
          "telephoneNumbers": [
            {
              "number": "5"
            }
          ],
          "verified": true,
          "verticalType": {
            "description": "description_6",
            "displayName": "display_name_7",
            "id": "00000000-0000-4000-8000-000000000003"
          },
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage8.not"
            }
          ],
          "yearFounded": 2000
        },
        "createdAt": null,
        "destination": "1234135",
        "externalId": "1235",
        "id": "00000000-0000-4000-8000-000000000012",
        "messageBody": "message content",
        "metadata": {
          "different": "metadata"
        },
        "source": "2132135",
        "status": "RECEIVED",
        "timestamp": "2026-01-15T09:00:00.000000",
        "type": "SMS",
        "updatedAt": "2026-01-15T09:00:05.000000",
        "user": {
          "aboutMe": "this is my generic intro",
          "addresses": [
            {
              "city": "test city",
              "country": "United States",
              "state": "Alabama",
              "street": "test street 37",
              "types": [
                "HOME"
              ],
              "zipCode": "12345"
            }
          ],
          "birthdate": "1990-01-15",
          "emails": [
            {
              "email": "test38@email.com"
            }
          ],
          "firstName": "12john",
          "id": "00000000-0000-4000-8000-000000000013",
          "interests": [
            {
              "description": null,
              "title": "Interest 39"
            }
          ],
          "lastName": "13doe",
          "metadata": {
            "test": "value"
          },
          "middleName": "ray",
          "socialNetworks": [
            {
              "type": "FACEBOOK",
              "url": "https://test-sm40.not"
            }
          ],
          "telephoneNumbers": [
            {
              "number": "41"
            }
          ],
          "timezone": "UTC",
          "username": "username42",
          "webpages": [
            {
              "type": "WEBPAGE",
              "url": "https://test-webpage43.not"
            }
          ]
        }
      }
    ]
  },
  "errors": [
    {
      "locations": [
        {
          "column": 9,
          "line": 78
        }
      ],
      "message": "Cannot return null for non-nullable field",
      "path": [
        "optOutRequests",
        4,
        "company",
        "subscriptionTopics",
        0,
        "id"
      ]
    },
    {
      "locations": [
        {
          "column": 9,
          "line": 78
        }
      ],
      "message": "Cannot return null for non-nullable field",
      "path": [
        "optOutRequests",
        3,
        "company",
        "subscriptionTopics",
        0,
        "id"
      ]
    },
    {
      "locations": [
        {
          "column": 9,
          "line": 78
        }
      ],
      "message": "Cannot return null for non-nullable field",
      "path": [
        "optOutRequests",
        2,
        "company",
        "subscriptionTopics",
        0,
        "id"
      ]
    },
    {
      "locations": [
        {
          "column": 9,
          "line": 78
        }
      ],
      "message": "Cannot return null for non-nullable field",
      "path": [
        "optOutRequests",
        1,
        "company",
        "subscriptionTopics",
        0,
        "id"
      ]
    },
    {
      "locations": [
        {
          "column": 9,
          "line": 78
        }
      ],
      "message": "Cannot return null for non-nullable field",
      "path": [
        "optOutRequests",
        0,
        "company",
        "subscriptionTopics",
        0,
        "id"
      ]
    }
  ]
}
```

---

# Create Opt-Out Request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/002__create_opt_out_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/008_opt_out/002__create_opt_out_request.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Create an opt-out request to record a user's request to stop receiving communications. This is typically used when processing opt-out keywords (e.g., "STOP") received via SMS.

Required fields:

* `source`: The source/sender of the opt-out request (e.g., phone number)
* `destination`: The destination (e.g., company's phone number that received the request)
* `type`: The communication type (SMS, VOICE, EMAIL)
* `timestamp`: When the opt-out request was received

Optional fields:

* `externalId`: External identifier for reference
* `messageBody`: The content of the opt-out message
* `metadata`: Additional metadata as key-value pairs (flat structure only)

The request is created with status `RECEIVED`, and moves through `NOTIFIED`, `REMINDER_SENT`, `ACCEPTED`, `REJECTED`, `REVOKED` or `EXPIRED` as it is processed. Processing the opt-out may trigger removal of the user from relevant subscriptions.

## Query

```graphql
mutation (
  $source: String!
  $destination: String!
  $externalId: String
  $messageBody: String
  $type: OptOutRequestType!
  $timestamp: NaiveDateTime!
  $metadata: JSON
) {
  createOptOutRequest (
    source: $source
    destination: $destination
    externalId: $externalId
    messageBody: $messageBody
    type: $type
    timestamp: $timestamp
    metadata: $metadata
  ) {
    id
    source
    destination
    externalId
    messageBody
    type
    status
    createdAt
    updatedAt
    timestamp
    metadata
    company {
      id
    }
  }
}

```

## Variables

```json
{
  "destination": "1234130",
  "externalId": "1230",
  "messageBody": "message content",
  "metadata": {
    "test": "value"
  },
  "source": "2132130",
  "timestamp": "2024-10-04 02:52:00",
  "type": "SMS"
}
```

## Response

```json
{
  "data": {
    "createOptOutRequest": {
      "company": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "createdAt": null,
      "destination": "1234130",
      "externalId": "1230",
      "id": "00000000-0000-4000-8000-000000000002",
      "messageBody": "message content",
      "metadata": {
        "test": "value"
      },
      "source": "2132130",
      "status": "RECEIVED",
      "timestamp": "2026-01-15T09:00:00.000000",
      "type": "SMS",
      "updatedAt": "2026-01-15T09:00:01.000000"
    }
  }
}
```

---

# 009\_sms\_opt\_in

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in.md
Last updated: 2026-09-09T03:10:23.000Z

- [Generate SMS Opt-In QR Code](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in/001__generate_sms_opt_in_qr_code.md)

---

# Generate SMS Opt-In QR Code

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in/001__generate_sms_opt_in_qr_code
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/009_sms_opt_in/001__generate_sms_opt_in_qr_code.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Generate a QR code that users can scan to opt-in to SMS communications. The QR code encodes a pre-formatted SMS message that users can send to subscribe.

Required fields:

* `telephoneNumberId`: The ID of the company's verified SMS opt-in telephone number
* `subscriptionTopicIds`: List of subscription topic IDs the user will subscribe to
* `type`: The type of QR code (SMS or MMS)

The telephone number must be:

1. Owned by the company
2. Marked as an SMS opt-in number (has type 'sms\_opt\_in')
3. Verified

Returns the opt-in message text and a base64-encoded SVG QR code image.

## Query

```graphql
mutation (
    $telephoneNumberId: ID!
    $subscriptionTopicIds: [ID!]!
    $type: SmsOptInQrCodeType!
) {
  generateSmsOptInQrCode (
    telephoneNumberId: $telephoneNumberId
    subscriptionTopicIds: $subscriptionTopicIds
    type: $type
  ) {
    message
    qrCode
    qrCodeDownload
    telephoneNumber {
      id
    }
  }
}

```

## Variables

```json
{
  "subscriptionTopicIds": [
    "00000000-0000-4000-8000-000000000002",
    "00000000-0000-4000-8000-000000000003"
  ],
  "telephoneNumberId": "00000000-0000-4000-8000-000000000001",
  "type": "SMS"
}
```

## Response

```json
{
  "data": {
    "generateSmsOptInQrCode": {
      "message": "sms://+1?&body=I consent to receive messages from 1legal-name that are related to the following topic(s): topic_2, topic_3",
      "qrCode": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDEwIiBoZWlnaHQ9IjQxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjxnIGZpbGw9IiMwMDAwMDAiPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM1MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMxMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI1MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI1MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM0MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI5MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM3MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM0MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI1MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MDAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzODAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNzAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNTAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzIwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjYwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM0MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMxMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzkwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzUwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzIwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjYwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjIwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI1MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI5MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjYwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMDAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNzAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM3MCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMzMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI3MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI1MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM1MCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMTUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMTUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMTUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNTAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMTUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNzAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzIwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzkwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMDAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMzMCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM1MCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwMCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzODAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMxMCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MDAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzkwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMzMCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwMCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzODAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMDAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjIwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMzMCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwMCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNTAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzgwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM3MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MDAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM1MCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNzAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMzMCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzEwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwMCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjYwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMzMCIgeD0iMjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzIwIiB4PSIyOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwMCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIyOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIyOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIyOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI1MCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjMwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzUwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMDAiIHg9IjMwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMzAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjMwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMzAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNTAiIHg9IjMwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIzMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjMwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzkwIiB4PSIzMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNTAiIHg9IjMxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzQwIiB4PSIzMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMDAiIHg9IjMxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIzMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjMxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIzMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjMxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIzMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMzEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MDAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzkwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM1MCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjMyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSIzMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iMzIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MDAiIHg9IjMzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzkwIiB4PSIzMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjMzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSIzMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjMzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSIzMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjMzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIzMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjMzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIzMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjMzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIzMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMzMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzOTAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzcwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM2MCIgeD0iMzQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzIwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMxMCIgeD0iMzQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMDAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjkwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMzQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMzQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMzQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIzNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjM0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjM1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjM1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjM1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjM1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjM1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMzUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIzNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwMCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzODAiIHg9IjM2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzYwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM1MCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNDAiIHg9IjM2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyOTAiIHg9IjM2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjM2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjM2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjM2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMzYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIzNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM4MCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzIwIiB4PSIzNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI5MCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIzNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIzNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIzNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIzNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjM3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMzcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjM4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzMwIiB4PSIzODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjM4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIzODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjM4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIzODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjM4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSIzODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMzgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIzODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNzAiIHg9IjM5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzUwIiB4PSIzOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM0MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMjAiIHg9IjM5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSIzOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjM5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIzOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjM5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIzOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjM5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTEwIiB4PSIzOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMzkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIzOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjM5MCIgeD0iNDAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzNjAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzUwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMyMCIgeD0iNDAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMTAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iNDAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iNDAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iNDAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iNDAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSI0MDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjQwMCIgaGVpZ2h0PSIxMCIvPjwvZz48L3N2Zz4=",
      "qrCodeDownload": "data:image/png;base64,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",
      "telephoneNumber": {
        "id": "00000000-0000-4000-8000-000000000001"
      }
    }
  }
}
```

---

# 010\_users\_and\_search

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search.md
Last updated: 2026-09-09T03:10:23.000Z

- [Get User (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/001__get_user_as_company.md)
- [Get User By Username (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/002__get_user_by_username_as_company.md)
- [Search For Users (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/003__search_for_users_as_company.md)
- [Global Search (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/004__global_search_as_company.md)

---

# Get User (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/001__get_user_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/001__get_user_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Gets a user by id. Each profile field is returned only if the user's visibility settings allow the caller to see it; hidden fields come back null (or empty for lists).

## Query

```graphql
query ($id: ID!) {
  user(id: $id) {
    id
    username
    firstName
    middleName
    lastName
    birthdate
    aboutMe
    timezone
    metadata
    secretStorage
    addresses {
      city
      country
      state
      street
      types
      zipCode
      visibility
    }
    emails {
      email
      types
      visibility
    }
    telephoneNumbers {
      number
      types
      visibility
    }
    socialNetworks {
      type
      url
      visibility
    }
    webpages {
      type
      url
      visibility
    }
    interests {
      description
      title
    }
    nameVisibility
    aboutMeVisibility
    birthdateVisibility
    interestsVisibility
    timezoneVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "user": {
      "aboutMe": "this is my generic intro",
      "aboutMeVisibility": null,
      "addresses": [
        {
          "city": "test city",
          "country": "United States",
          "state": "Alabama",
          "street": "test street 1",
          "types": [
            "HOME"
          ],
          "visibility": null,
          "zipCode": "12345"
        }
      ],
      "birthdate": "1990-01-15",
      "birthdateVisibility": null,
      "emails": [
        {
          "email": "test2@email.com",
          "types": [
            "OTHER"
          ],
          "visibility": null
        }
      ],
      "firstName": "1john",
      "id": "00000000-0000-4000-8000-000000000001",
      "interests": [
        {
          "description": null,
          "title": "Interest 3"
        }
      ],
      "interestsVisibility": null,
      "lastName": "2doe",
      "metadata": {
        "test": "value"
      },
      "metadataVisibility": null,
      "middleName": "ray",
      "nameVisibility": null,
      "secretStorage": null,
      "socialNetworks": [
        {
          "type": "FACEBOOK",
          "url": "https://test-sm4.not",
          "visibility": null
        }
      ],
      "telephoneNumbers": [
        {
          "number": "5",
          "types": [
            "OTHER"
          ],
          "visibility": null
        }
      ],
      "timezone": "UTC",
      "timezoneVisibility": null,
      "username": "username6",
      "webpages": [
        {
          "type": "WEBPAGE",
          "url": "https://test-webpage7.not",
          "visibility": null
        }
      ]
    }
  }
}
```

---

# Get User By Username (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/002__get_user_by_username_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/002__get_user_by_username_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Gets a user by username. Each profile field is returned only if the user's visibility settings allow the caller to see it; hidden fields come back null (or empty for lists).

## Query

```graphql
query ($username: String!) {
  userByUsername(username: $username) {
    id
    username
    firstName
    emails {
      email
      visibility
    }
    telephoneNumbers {
      number
      visibility
    }
    nameVisibility
    aboutMeVisibility
  }
}

```

## Variables

```json
{
  "username": "username3"
}
```

## Response

```json
{
  "data": {
    "userByUsername": {
      "aboutMeVisibility": null,
      "emails": [
        {
          "email": "test1@email.com",
          "visibility": null
        }
      ],
      "firstName": "1john",
      "id": "00000000-0000-4000-8000-000000000001",
      "nameVisibility": null,
      "telephoneNumbers": [
        {
          "number": "2",
          "visibility": null
        }
      ],
      "username": "username3"
    }
  }
}
```

---

# Search For Users (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/003__search_for_users_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/003__search_for_users_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Searches for users by name or username, email, telephone number, or metadata. Matches and returned fields respect each user's visibility settings, so fields hidden from the caller come back null (or empty for lists).

## Query

```graphql
query (
  $name: String
  $email: String
  $telephoneNumber: String
  $limit: Int
  $metadata: JSON
) {
  users (
    name: $name
    email: $email
    telephoneNumber: $telephoneNumber
    limit: $limit
    metadata: $metadata
  ) {
    id
    username
    firstName
    middleName
    lastName
    birthdate
    aboutMe
    timezone
    metadata
    addresses {
      city
      country
      state
      street
      types
      zipCode
      visibility
    }
    emails {
      email
      types
      visibility
    }
    telephoneNumbers {
      number
      types
      visibility
    }
    socialNetworks {
      type
      url
      visibility
    }
    webpages {
      type
      url
      visibility
    }
    interests {
      description
      title
    }
    nameVisibility
    aboutMeVisibility
    birthdateVisibility
    interestsVisibility
    timezoneVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "users": [
      {
        "aboutMe": "this is my generic intro",
        "aboutMeVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 1",
            "types": [
              "HOME"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "birthdate": "1990-01-15",
        "birthdateVisibility": null,
        "emails": [
          {
            "email": "test2@email.com",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "firstName": "1john",
        "id": "00000000-0000-4000-8000-000000000001",
        "interests": [
          {
            "description": null,
            "title": "Interest 3"
          }
        ],
        "interestsVisibility": null,
        "lastName": "2doe",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "middleName": "ray",
        "nameVisibility": null,
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm4.not",
            "visibility": null
          }
        ],
        "telephoneNumbers": [
          {
            "number": "5",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "timezone": "UTC",
        "timezoneVisibility": null,
        "username": "username6",
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage7.not",
            "visibility": null
          }
        ]
      },
      {
        "aboutMe": "this is my generic intro",
        "aboutMeVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 8",
            "types": [
              "HOME"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "birthdate": "1990-01-15",
        "birthdateVisibility": null,
        "emails": [
          {
            "email": "test9@email.com",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "firstName": "3john",
        "id": "00000000-0000-4000-8000-000000000002",
        "interests": [
          {
            "description": null,
            "title": "Interest 10"
          }
        ],
        "interestsVisibility": null,
        "lastName": "4doe",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "middleName": "ray",
        "nameVisibility": null,
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm11.not",
            "visibility": null
          }
        ],
        "telephoneNumbers": [
          {
            "number": "12",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "timezone": "UTC",
        "timezoneVisibility": null,
        "username": "username13",
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage14.not",
            "visibility": null
          }
        ]
      },
      {
        "aboutMe": "this is my generic intro",
        "aboutMeVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 15",
            "types": [
              "HOME"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "birthdate": "1990-01-15",
        "birthdateVisibility": null,
        "emails": [
          {
            "email": "test16@email.com",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "firstName": "5john",
        "id": "00000000-0000-4000-8000-000000000003",
        "interests": [
          {
            "description": null,
            "title": "Interest 17"
          }
        ],
        "interestsVisibility": null,
        "lastName": "6doe",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "middleName": "ray",
        "nameVisibility": null,
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm18.not",
            "visibility": null
          }
        ],
        "telephoneNumbers": [
          {
            "number": "19",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "timezone": "UTC",
        "timezoneVisibility": null,
        "username": "username20",
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage21.not",
            "visibility": null
          }
        ]
      },
      {
        "aboutMe": "this is my generic intro",
        "aboutMeVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 22",
            "types": [
              "HOME"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "birthdate": "1990-01-15",
        "birthdateVisibility": null,
        "emails": [
          {
            "email": "test23@email.com",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "firstName": "7john",
        "id": "00000000-0000-4000-8000-000000000004",
        "interests": [
          {
            "description": null,
            "title": "Interest 24"
          }
        ],
        "interestsVisibility": null,
        "lastName": "8doe",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "middleName": "ray",
        "nameVisibility": null,
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm25.not",
            "visibility": null
          }
        ],
        "telephoneNumbers": [
          {
            "number": "26",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "timezone": "UTC",
        "timezoneVisibility": null,
        "username": "username27",
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage28.not",
            "visibility": null
          }
        ]
      },
      {
        "aboutMe": "this is my generic intro",
        "aboutMeVisibility": null,
        "addresses": [
          {
            "city": "test city",
            "country": "United States",
            "state": "Alabama",
            "street": "test street 29",
            "types": [
              "HOME"
            ],
            "visibility": null,
            "zipCode": "12345"
          }
        ],
        "birthdate": "1990-01-15",
        "birthdateVisibility": null,
        "emails": [
          {
            "email": "test30@email.com",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "firstName": "9john",
        "id": "00000000-0000-4000-8000-000000000005",
        "interests": [
          {
            "description": null,
            "title": "Interest 31"
          }
        ],
        "interestsVisibility": null,
        "lastName": "10doe",
        "metadata": {
          "test": "value"
        },
        "metadataVisibility": null,
        "middleName": "ray",
        "nameVisibility": null,
        "socialNetworks": [
          {
            "type": "FACEBOOK",
            "url": "https://test-sm32.not",
            "visibility": null
          }
        ],
        "telephoneNumbers": [
          {
            "number": "33",
            "types": [
              "OTHER"
            ],
            "visibility": null
          }
        ],
        "timezone": "UTC",
        "timezoneVisibility": null,
        "username": "username34",
        "webpages": [
          {
            "type": "WEBPAGE",
            "url": "https://test-webpage35.not",
            "visibility": null
          }
        ]
      }
    ]
  }
}
```

---

# Global Search (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/004__global_search_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/010_users_and_search/004__global_search_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Searches across users, companies, and groups in a single mixed list. Matches against display name and, when the query looks like an email or phone number, contact fields. Queries shorter than 3 characters return an empty list.

## Query

```graphql
query ($query: String!, $limit: Int, $showSensitiveData: Boolean) {
  globalSearch(query: $query, limit: $limit, showSensitiveData: $showSensitiveData) {
    id
    type
    label
    username
  }
}

```

## Variables

```json
{
  "query": "Acme"
}
```

## Response

```json
{
  "data": {
    "globalSearch": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "label": "Acmeperson Searchable",
        "type": "USER",
        "username": "username1"
      },
      {
        "id": "00000000-0000-4000-8000-000000000002",
        "label": "Acmecorp Industries",
        "type": "COMPANY",
        "username": ""
      },
      {
        "id": "00000000-0000-4000-8000-000000000003",
        "label": "Acmegroup Society",
        "type": "GROUP",
        "username": ""
      }
    ]
  }
}
```

---

# 011\_documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents.md
Last updated: 2026-09-09T03:10:23.000Z

- [Prepare File Upload (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/001__prepare_file_upload_as_company.md)
- [Prepare document upload (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/002__prepare_document_upload_as_company.md)
- [Confirm Document Upload (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/003__confirm_document_upload_as_company.md)
- [Accept Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/004__accept_company_documents.md)
- [Get Company Document](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/005__get_company_document.md)
- [List Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/006__list_paginated_company_documents.md)
- [Update Company Document](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/007__update_company_document.md)
- [Move Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/008__move_company_documents.md)
- [Delete Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/009__delete_company_documents.md)
- [Restore Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/010__restore_company_documents.md)
- [Permanently Delete Company Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/011__permanently_delete_company_documents.md)
- [Empty Company Trash](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/012__empty_company_trash.md)
- [Ask A Question Of The Company's Documents](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/013__ask_company_document_question.md)
- [Create Company Folder](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/014__create_company_folder.md)
- [Update Company Folder](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/015__update_company_folder.md)
- [Move Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/016__move_company_folders.md)
- [Delete Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/017__delete_company_folders.md)
- [List Company Folders](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/018__list_company_folders.md)
- [Create Company Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/019__create_company_tag.md)
- [Delete Company Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/020__delete_company_tag.md)
- [List Company Tags](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/021__list_company_tags.md)
- [Add Company Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/022__add_company_document_tag.md)
- [Remove Company Document Tag](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/023__remove_company_document_tag.md)
- [List Company AI Tasks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/024__list_paginated_company_ai_tasks.md)
- [Get One Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/025__get_company_ai_task.md)
- [List A Company AI Task's Answers](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/026__list_paginated_company_ai_task_runs.md)
- [Create A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/027__create_company_ai_task.md)
- [Update A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/028__update_company_ai_task.md)
- [Run A Company AI Task Again](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/029__run_company_ai_task.md)
- [Delete A Company AI Task](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/030__delete_company_ai_task.md)

---

# Prepare File Upload (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/001__prepare_file_upload_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/001__prepare_file_upload_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Prepares a file upload by returning a presigned PUT URL together with the file key to save. Upload the file to the URL, then pass the file key to the mutation that records it.

## Query

```graphql
mutation (
  $fileName: String!
  $contentType: String!
) {
  prepareFileUpload (
    fileName: $fileName
    contentType: $contentType
  ) {
    uploadUrl
    fileKey
  }
}

```

## Variables

```json
{
  "contentType": "image/png",
  "fileName": "logo.png"
}
```

## Response

```json
{
  "data": {
    "prepareFileUpload": {
      "fileKey": "user_uploads/2026-01-15_examplekey1_logo.png",
      "uploadUrl": "http://localhost:4566/tnid-v2-uploads-local/user_uploads/2026-01-15_examplekey1_logo.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=900&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
```

---

# Prepare document upload (company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/002__prepare_document_upload_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/002__prepare_document_upload_as_company.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Reserves space in the calling company's document repository and returns a presigned POST policy to upload the file with. The reservation holds the declared bytes against the quota but stays invisible until `confirmDocumentUpload` claims it; an upload that never completes is reclaimed by the sweeper.

## Query

```graphql
mutation ($fileName: String!, $contentType: String!, $byteSize: String!) {
  prepareDocumentUpload(fileName: $fileName, contentType: $contentType, byteSize: $byteSize) {
    documentId
    url
    fields
  }
}

```

## Variables

```json
{
  "byteSize": "1024",
  "contentType": "application/pdf",
  "fileName": "invoice.pdf"
}
```

## Response

```json
{
  "data": {
    "prepareDocumentUpload": {
      "documentId": "00000000-0000-4000-8000-000000000001",
      "fields": {
        "Content-Type": "application/pdf",
        "Policy": "eyJjb25kaXRpb25zIjpbeyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJYLUFtei1DcmVkZW50aWFsIjoiU09NRV9SQU5ET01fQUNDRVNTX0tFWS8yMDI2MDkyMy91cy1lYXN0LTEvczMvYXdzNF9yZXF1ZXN0In0seyJYLUFtei1EYXRlIjoiMjAyNjA5MjNUMDMyMDM5WiJ9LHsiYnVja2V0IjoidG5pZC12Mi1kb2N1bWVudHMtbG9jYWwifSx7ImtleSI6ImNvbXBhbnkvZjdlZmNiYTctNjk1MS00NDg1LThkZDYtOGZmM2RhMjc1NGQ4LzIwMjYtMDktMjNfS082REhQajlFdGMyX2ludm9pY2UucGRmIn0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDI0XSxbImVxIiwiJENvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL3BkZiJdXSwiZXhwaXJhdGlvbiI6IjIwMjYtMDktMjNUMDM6MjU6MzkuNDcyOTE4WiJ9",
        "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
        "X-Amz-Credential": "SOME_RANDOM_ACCESS_KEY/20260115/us-east-1/s3/aws4_request",
        "X-Amz-Date": "20260115T090000Z",
        "X-Amz-Signature": "fc1137efc3701e1473792eacc6a50e1fe746c2afbda733a41bffd5578f1a2336",
        "key": "company/00000000-0000-4000-8000-000000000002/2026-09-23_KO6DHPj9Etc2_invoice.pdf"
      },
      "url": "http://localhost:4566/tnid-v2-documents-local"
    }
  }
}
```

---

# Confirm Document Upload (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/003__confirm_document_upload_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/003__confirm_document_upload_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Claims an upload prepared by prepareDocumentUpload. The server reads the stored object's real size — not the one declared up front — moves the reservation into the repository and queues the document for AI tagging.

## Query

```graphql
mutation ($id: ID!) {
  confirmDocumentUpload(id: $id) { id fileName byteSize status folderId }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "confirmDocumentUpload": {
      "byteSize": "640",
      "fileName": "invoice.pdf",
      "folderId": null,
      "id": "00000000-0000-4000-8000-000000000001",
      "status": "ACCEPTED"
    }
  }
}
```

---

# Accept Company Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/004__accept_company_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/004__accept_company_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Accepts documents that arrived over a channel (SMS, MMS or email) into the calling company's repository. Accepted documents become visible in the main list and are queued for AI tagging.

## Query

```graphql
mutation ($ids: [ID!]!) {
  acceptCompanyDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "acceptCompanyDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Get Company Document

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/005__get_company_document
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/005__get_company_document.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Gets one of the calling company's documents by id. Returns null if the document doesn't exist or belongs to another company.

## Query

```graphql
query ($id: ID!) {
  companyDocument(id: $id) {
    id
    fileName
    summary
    url
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "companyDocument": {
      "fileName": "invoice.pdf",
      "id": "00000000-0000-4000-8000-000000000001",
      "summary": "Q2 supplier invoice.",
      "url": "http://localhost:4566/tnid-v2-documents-local/company/uploads/1.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=SOME_RANDOM_ACCESS_KEY%2F20260115%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260115T090000Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
```

---

# List Company Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/006__list_paginated_company_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/006__list_paginated_company_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the calling company's documents, most-recent first, cursor-paginated. Supports filtering by status (defaults to accepted), folder, file name search, and tags. Pass paginationInfo.nextCursor back as cursor for the next page.

## Query

```graphql
query ($search: String, $limit: Int, $cursor: String) {
  companyDocuments(search: $search, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      fileName
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyDocuments": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "fileName": "document-1.pdf",
          "id": "00000000-0000-4000-8000-000000000001"
        },
        {
          "fileName": "document-2.pdf",
          "id": "00000000-0000-4000-8000-000000000002"
        },
        {
          "fileName": "document-3.pdf",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      ]
    }
  }
}
```

---

# Update Company Document

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/007__update_company_document
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/007__update_company_document.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Updates one of the calling company's documents — the display name and summary. The stored file itself is untouched.

## Query

```graphql
mutation ($id: ID!, $fileName: String, $summary: String) {
  updateCompanyDocument(id: $id, fileName: $fileName, summary: $summary) {
    id
    fileName
    summary
  }
}

```

## Variables

```json
{
  "fileName": "contract-v2.pdf",
  "id": "00000000-0000-4000-8000-000000000001",
  "summary": "Two-year TV warranty."
}
```

## Response

```json
{
  "data": {
    "updateCompanyDocument": {
      "fileName": "contract-v2.pdf",
      "id": "00000000-0000-4000-8000-000000000001",
      "summary": "Two-year TV warranty."
    }
  }
}
```

---

# Move Company Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/008__move_company_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/008__move_company_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Moves documents into one of the calling company's folders. Pass a null folderId to move them back to the repository root.

## Query

```graphql
mutation ($ids: [ID!]!, $folderId: ID) {
  moveCompanyDocuments(ids: $ids, folderId: $folderId) {
    status
    count
  }
}

```

## Variables

```json
{
  "folderId": "00000000-0000-4000-8000-000000000003",
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "moveCompanyDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Delete Company Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/009__delete_company_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/009__delete_company_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Moves documents to the calling company's trash. They stay recoverable with restoreCompanyDocuments until the trash is emptied or they are permanently deleted.

## Query

```graphql
mutation ($ids: [ID!]!) {
  deleteCompanyDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "deleteCompanyDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Restore Company Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/010__restore_company_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/010__restore_company_documents.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Restores documents from the calling company's trash. A restored document returns to the repository root with its tags and summary intact.

## Query

```graphql
mutation ($ids: [ID!]!) {
  restoreCompanyDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001"
  ]
}
```

## Response

```json
{
  "data": {
    "restoreCompanyDocuments": {
      "count": 1,
      "status": "OK"
    }
  }
}
```

---

# Permanently Delete Company Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/011__permanently_delete_company_documents
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/011__permanently_delete_company_documents.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Removes documents from the calling company's trash for good, deleting the stored files as well. Only documents already in the trash can be deleted this way.

## Query

```graphql
mutation ($ids: [ID!]!) {
  permanentlyDeleteCompanyDocuments(ids: $ids) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ]
}
```

## Response

```json
{
  "data": {
    "permanentlyDeleteCompanyDocuments": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Empty Company Trash

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/012__empty_company_trash
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/012__empty_company_trash.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Permanently deletes everything in the calling company's trash. Takes no arguments — it always covers the whole trash rather than a filtered view of it — and the files leave storage as well.

## Query

```graphql
mutation {
  emptyCompanyTrash {
    status
    count
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "emptyCompanyTrash": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Ask A Question Of The Company's Documents

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/013__ask_company_document_question
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/013__ask_company_document_question.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Answers a natural-language question from the calling company's documents and names the documents the answer drew on. Only accepted documents are searched, and only the passages that matched are sent to the model.

The answer shown here comes from a stubbed model, so the wording is illustrative rather than something the service guarantees.

## Query

```graphql
mutation ($question: String!) {
  askCompanyDocumentQuestion(question: $question) {
    answer
    citations {
      id
      fileName
    }
  }
}

```

## Variables

```json
{
  "question": "when does my tv warranty end"
}
```

## Response

```json
{
  "data": {
    "askCompanyDocumentQuestion": {
      "answer": "Your TV warranty ends on 2027-01-01.",
      "citations": [
        {
          "fileName": "tv-warranty.pdf",
          "id": "00000000-0000-4000-8000-000000000001"
        }
      ]
    }
  }
}
```

---

# Create Company Folder

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/014__create_company_folder
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/014__create_company_folder.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates a document folder for the calling company. Pass parentId to nest it under an existing folder; omit it for a folder at the repository root.

## Query

```graphql
mutation { createCompanyFolder(name: "Contracts") { id name parentId } }

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "createCompanyFolder": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "Contracts",
      "parentId": null
    }
  }
}
```

---

# Update Company Folder

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/015__update_company_folder
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/015__update_company_folder.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Updates one of the calling company's document folders — currently the name only.

## Query

```graphql
mutation ($id: ID!) { updateCompanyFolder(id: $id, name: "New") { id name } }

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "updateCompanyFolder": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "New"
    }
  }
}
```

---

# Move Company Folders

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/016__move_company_folders
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/016__move_company_folders.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Re-parents folders within the calling company's repository. Pass a null parentId to move them to the top level. A folder cannot be moved inside itself or its own descendants.

## Query

```graphql
mutation ($ids: [ID!]!, $parentId: ID) {
  moveCompanyFolders(ids: $ids, parentId: $parentId) {
    status
    count
  }
}

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001",
    "00000000-0000-4000-8000-000000000002"
  ],
  "parentId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "moveCompanyFolders": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Delete Company Folders

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/017__delete_company_folders
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/017__delete_company_folders.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Deletes folders from the calling company's repository for good. Each subtree is removed and every document inside moves to the trash; a document restored later lands at the repository root.

## Query

```graphql
mutation ($ids: [ID!]!) { deleteCompanyFolders(ids: $ids) { status count } }

```

## Variables

```json
{
  "ids": [
    "00000000-0000-4000-8000-000000000001"
  ]
}
```

## Response

```json
{
  "data": {
    "deleteCompanyFolders": {
      "count": 1,
      "status": "OK"
    }
  }
}
```

---

# List Company Folders

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/018__list_company_folders
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/018__list_company_folders.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Lists every document folder of the calling company in one response. Records reference their parent via parentId, so the whole tree can be built from a single call.

## Query

```graphql
query {
  companyFolders {
    records { id name parentId }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyFolders": {
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "name": "Top",
          "parentId": null
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "name": "Child",
          "parentId": "00000000-0000-4000-8000-000000000001"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "name": "Grandchild",
          "parentId": "00000000-0000-4000-8000-000000000002"
        }
      ]
    }
  }
}
```

---

# Create Company Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/019__create_company_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/019__create_company_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates a tag in the calling company's document repository. Tag names are lowercased; creating a duplicate returns the existing tag.

## Query

```graphql
mutation ($name: String!) {
  createCompanyTag(name: $name) {
    id
    name
  }
}

```

## Variables

```json
{
  "name": "Audits"
}
```

## Response

```json
{
  "data": {
    "createCompanyTag": {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "audits"
    }
  }
}
```

---

# Delete Company Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/020__delete_company_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/020__delete_company_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Deletes one of the calling company's tags, removing it from every document it is on.

## Query

```graphql
mutation ($id: ID!) {
  deleteCompanyTag(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteCompanyTag": {
      "status": "OK"
    }
  }
}
```

---

# List Company Tags

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/021__list_company_tags
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/021__list_company_tags.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the calling company's document tags, ordered by name.

## Query

```graphql
query {
  companyTags {
    id
    name
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyTags": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "name": "apple"
      },
      {
        "id": "00000000-0000-4000-8000-000000000002",
        "name": "Zebra"
      }
    ]
  }
}
```

---

# Add Company Document Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/022__add_company_document_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/022__add_company_document_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Attaches one of the calling company's tags to one of their documents. Adding a suggested tag confirms the suggestion.

## Query

```graphql
mutation ($documentId: ID!, $tagId: ID!) {
  addCompanyDocumentTag(documentId: $documentId, tagId: $tagId) {
    status
  }
}

```

## Variables

```json
{
  "documentId": "00000000-0000-4000-8000-000000000001",
  "tagId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "addCompanyDocumentTag": {
      "status": "OK"
    }
  }
}
```

---

# Remove Company Document Tag

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/023__remove_company_document_tag
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/023__remove_company_document_tag.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Detaches a tag from one of the calling company's documents. Removing a suggested tag rejects the suggestion.

## Query

```graphql
mutation ($documentId: ID!, $tagId: ID!) {
  removeCompanyDocumentTag(documentId: $documentId, tagId: $tagId) {
    status
  }
}

```

## Variables

```json
{
  "documentId": "00000000-0000-4000-8000-000000000001",
  "tagId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "removeCompanyDocumentTag": {
      "status": "OK"
    }
  }
}
```

---

# List Company AI Tasks

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/024__list_paginated_company_ai_tasks
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/024__list_paginated_company_ai_tasks.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Lists the calling company's AI tasks. `documentCount` is how many documents each task covers, which is what running it will run against. `inFlightCount` is how many of its runs are still queued or running.

## Query

```graphql
query {
  aiTasks {
    records { id name documentCount inFlightCount }
    paginationInfo { nextCursor }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "aiTasks": {
      "paginationInfo": {
        "nextCursor": null
      },
      "records": [
        {
          "documentCount": 2,
          "id": "00000000-0000-4000-8000-000000000001",
          "inFlightCount": 0,
          "name": "task-2"
        }
      ]
    }
  }
}
```

---

# Get One Company AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/025__get_company_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/025__get_company_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

A single task by id, for a client that has one and nothing else — a link to a task's runs, say. Null when the id isn't the caller's, which reads the same as one that doesn't exist.

## Query

```graphql
query ($id: ID!) {
  aiTask(id: $id) {
    id
    name
    runOnRoot
    folders { id name }
    prompt
    outputShape
    documentCount
    inFlightCount
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "aiTask": {
      "documentCount": 1,
      "folders": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "inFlightCount": 0,
      "name": "task-8",
      "outputShape": {
        "total": "number"
      },
      "prompt": "Extract the invoice details from this document.",
      "runOnRoot": true
    }
  }
}
```

---

# List A Company AI Task's Answers

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/026__list_paginated_company_ai_task_runs
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/026__list_paginated_company_ai_task_runs.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Lists every run of one task, newest first — including runs still `QUEUED` or `RUNNING`, and answers superseded by a later run, so a document appears once per run rather than once in total. `result` and `ranAt` are null while a run is still going, and stay null on one that ended without reaching the model — `error` says why. `prompt` and `outputShape` are what was asked when the run was published, so an older answer stays interpretable after the task is edited.

## Query

```graphql
query ($taskId: ID!) {
  aiTaskRuns(taskId: $taskId) {
    records {
      documentId
      fileName
      status
      result
      error
      ranAt
      prompt
      outputShape
    }
    paginationInfo { nextCursor }
  }
}

```

## Variables

```json
{
  "taskId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "aiTaskRuns": {
      "paginationInfo": {
        "nextCursor": null
      },
      "records": [
        {
          "documentId": "00000000-0000-4000-8000-000000000001",
          "error": null,
          "fileName": "acme-jan.pdf",
          "outputShape": {
            "total": "number"
          },
          "prompt": "Extract the invoice details from this document.",
          "ranAt": "2026-01-15T09:00:00.000000Z",
          "result": {
            "total": 420
          },
          "status": "COMPLETED"
        }
      ]
    }
  }
}
```

---

# Create A Company AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/027__create_company_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/027__create_company_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Creates a task the calling company runs against its documents. Naming folders in `folderIds` covers each of them and everything beneath it; `runOnRoot` covers the whole repository instead. A task given neither runs against the documents a run names. Creating a task stores it — use `runCompanyAiTask` to run it. Documents uploaded afterwards are run against it as they become readable.

## Query

```graphql
mutation ($name: String!, $prompt: String!, $runOnRoot: Boolean, $folderIds: [ID!], $outputShape: JSON!) {
  createCompanyAiTask(name: $name, prompt: $prompt, runOnRoot: $runOnRoot, folderIds: $folderIds, outputShape: $outputShape) {
    id
    name
    prompt
    runOnRoot
    folders { id name }
    outputShape
    documentCount
    inFlightCount
  }
}

```

## Variables

```json
{
  "name": "Invoice details",
  "outputShape": {
    "total": "number"
  },
  "prompt": "Extract the total."
}
```

## Response

```json
{
  "data": {
    "createCompanyAiTask": {
      "documentCount": 0,
      "folders": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "inFlightCount": 0,
      "name": "Invoice details",
      "outputShape": {
        "total": "number"
      },
      "prompt": "Extract the total.",
      "runOnRoot": false
    }
  }
}
```

---

# Update A Company AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/028__update_company_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/028__update_company_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Updates a task. Existing answers are left as they are; each one keeps the prompt that produced it, so an answer from before the change stays readable. Nothing is run again — use `runCompanyAiTask` for that.

## Query

```graphql
mutation ($id: ID!, $prompt: String, $name: String, $runOnRoot: Boolean, $folderIds: [ID!], $outputShape: JSON) {
  updateCompanyAiTask(id: $id, prompt: $prompt, name: $name, runOnRoot: $runOnRoot, folderIds: $folderIds, outputShape: $outputShape) {
    id
    name
    prompt
    runOnRoot
    folders { id name }
    outputShape
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "prompt": "Extract the vendor too."
}
```

## Response

```json
{
  "data": {
    "updateCompanyAiTask": {
      "folders": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "task-0",
      "outputShape": {
        "total": "number"
      },
      "prompt": "Extract the vendor too.",
      "runOnRoot": true
    }
  }
}
```

---

# Run A Company AI Task Again

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/029__run_company_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/029__run_company_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Runs a task over the documents named in `ids`, or — with `ids` omitted — over what the task watches: its folders and everything beneath them, or the whole repository when it runs on the root. A task watching neither covers nothing, so omitting `ids` for one queues no runs.

A named document runs whether or not the task watches the folder it sits in; ids naming something the caller doesn't hold, or a document that isn't accepted, are left out. Runs are kept rather than replaced, so a previous answer stays available beside the new one. `count` is how many runs were queued, not how many have finished.

## Query

```graphql
mutation ($taskId: ID!, $ids: [ID!]) {
  runCompanyAiTask(taskId: $taskId, ids: $ids) { status count }
}

```

## Variables

```json
{
  "taskId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "runCompanyAiTask": {
      "count": 2,
      "status": "OK"
    }
  }
}
```

---

# Delete A Company AI Task

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/030__delete_company_ai_task
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/011_documents/030__delete_company_ai_task.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Deletes a task and every answer it produced. The answers describe a question that no longer exists, so they are not kept.

## Query

```graphql
mutation ($id: ID!) {
  deleteCompanyAiTask(id: $id) { status }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteCompanyAiTask": {
      "status": "OK"
    }
  }
}
```

---

# 012\_notifications

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications.md
Last updated: 2026-09-09T03:10:23.000Z

- [List notifications (company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/001__list_notifications_as_company.md)
- [Get Unread Notification Count (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/002__get_unread_notification_count_as_company.md)
- [Mark Notification As Read (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/003__mark_notification_as_read_as_company.md)
- [Mark All Notifications As Read (Company)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/004__mark_all_notifications_as_read_as_company.md)

---

# List notifications (company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/001__list_notifications_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/001__list_notifications_as_company.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists the calling company's notifications, cursor-paginated. Optionally filter by status (UNREAD or READ); pass paginationInfo.nextCursor back as cursor for the next page.

## Query

```graphql
query (
  $limit: Int
  $cursor: String
  $status: NotificationStatus
) {
  notifications (
    limit: $limit
    cursor: $cursor
    status: $status
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      text
      kind
      subjectId
      subjectStatus
      context
      status
      insertedAt
      updatedAt
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "notifications": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "context": {},
          "id": "00000000-0000-4000-8000-000000000001",
          "insertedAt": "2026-01-15T09:00:02.000000",
          "kind": null,
          "status": "UNREAD",
          "subjectId": null,
          "subjectStatus": null,
          "text": "test notification",
          "updatedAt": "2026-01-15T09:00:02.000000"
        },
        {
          "context": {},
          "id": "00000000-0000-4000-8000-000000000002",
          "insertedAt": "2026-01-15T09:00:01.000000",
          "kind": null,
          "status": "UNREAD",
          "subjectId": null,
          "subjectStatus": null,
          "text": "test notification",
          "updatedAt": "2026-01-15T09:00:01.000000"
        },
        {
          "context": {},
          "id": "00000000-0000-4000-8000-000000000003",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "kind": null,
          "status": "UNREAD",
          "subjectId": null,
          "subjectStatus": null,
          "text": "test notification",
          "updatedAt": "2026-01-15T09:00:00.000000"
        }
      ]
    }
  }
}
```

---

# Get Unread Notification Count (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/002__get_unread_notification_count_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/002__get_unread_notification_count_as_company.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Returns the number of unread notifications for the calling company.

## Query

```graphql
query {
  unreadNotificationCount
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "unreadNotificationCount": 3
  }
}
```

---

# Mark Notification As Read (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/003__mark_notification_as_read_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/003__mark_notification_as_read_as_company.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Marks one of the calling company's notifications as read. Returns OK even if the notification is already read.

## Query

```graphql
mutation ($id: ID!) {
  markNotificationAsRead(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "markNotificationAsRead": {
      "status": "OK"
    }
  }
}
```

---

# Mark All Notifications As Read (Company)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/004__mark_all_notifications_as_read_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/012_notifications/004__mark_all_notifications_as_read_as_company.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Marks every unread notification of the calling company as read.

## Query

```graphql
mutation {
  markAllNotificationsAsRead {
    status
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "markAllNotificationsAsRead": {
      "status": "OK"
    }
  }
}
```

---

# 013\_forms

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms.md
Last updated: 2026-09-09T03:10:23.000Z

- [List company forms](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/001__list_company_forms.md)
- [Get company form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/002__get_company_form.md)
- [Create Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/003__create_form.md)
- [Update Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/004__update_form.md)
- [Delete Form](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/005__delete_form.md)
- [Create Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/006__create_form_version.md)
- [Update Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/007__update_form_version.md)
- [Publish Form Version](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/008__publish_form_version.md)
- [List form versions (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/009__list_paginated_form_versions.md)
- [Create B2C Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/010__create_b2c_form_submission_request.md)
- [Create B2B Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/011__create_b2b_form_submission_request.md)
- [List Received B2B Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/012__list_received_b2b_form_submission_requests.md)
- [List Received B2B Form Submission Requests (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/013__list_paginated_received_b2b_form_submission_requests.md)
- [Reject B2B Form Submission Request](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/014__reject_b2b_form_submission_request.md)
- [List Sent B2C Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/015__list_sent_b2c_form_submission_requests.md)
- [List Sent B2B Form Submission Requests](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/016__list_sent_b2b_form_submission_requests.md)
- [List form submissions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/017__list_form_submissions.md)
- [Get Form Submission](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/018__get_form_submission.md)

---

# List company forms

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/001__list_company_forms
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/001__list_company_forms.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists the current company's forms with their versions, cursor-paginated. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  companyForms(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      title
      description
      formVersions {
        id
        version
        published
      }
      insertedAt
      updatedAt
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyForms": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "description": "A test form",
          "formVersions": [
            {
              "id": "00000000-0000-4000-8000-000000000001",
              "published": true,
              "version": 2
            },
            {
              "id": "00000000-0000-4000-8000-000000000002",
              "published": false,
              "version": 1
            }
          ],
          "id": "00000000-0000-4000-8000-000000000003",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "title": "Test Form 1",
          "updatedAt": "2026-01-15T09:00:00.000000"
        }
      ]
    }
  }
}
```

---

# Get company form

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/002__get_company_form
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/002__get_company_form.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Fetches one of the current company's forms by ID, including all of its versions and their fields.

## Query

```graphql
query ($id: ID!) {
  companyForm(id: $id) {
    id
    title
    description
    visibility
    intendedFor
    companyId
    formVersions {
      id
      version
      published
      formVersionFields {
        id
        key
        label
        type
        required
        options
        order
        content
        useAsIdentifier
      }
    }
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000005"
}
```

## Response

```json
{
  "data": {
    "companyForm": {
      "companyId": "00000000-0000-4000-8000-000000000001",
      "description": "A test form",
      "formVersions": [
        {
          "formVersionFields": [
            {
              "content": null,
              "id": "00000000-0000-4000-8000-000000000002",
              "key": "epqhmanofie9",
              "label": "Name",
              "options": [],
              "order": 0,
              "required": false,
              "type": "TEXT",
              "useAsIdentifier": false
            },
            {
              "content": null,
              "id": "00000000-0000-4000-8000-000000000003",
              "key": "f680vpb1qu2p",
              "label": "Email",
              "options": [],
              "order": 1,
              "required": false,
              "type": "EMAIL",
              "useAsIdentifier": false
            }
          ],
          "id": "00000000-0000-4000-8000-000000000004",
          "published": true,
          "version": 1
        }
      ],
      "id": "00000000-0000-4000-8000-000000000005",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "intendedFor": [
        "USER",
        "COMPANY"
      ],
      "title": "My Form",
      "updatedAt": "2026-01-15T09:00:00.000000",
      "visibility": [
        "PUBLIC"
      ]
    }
  }
}
```

---

# Create Form

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/003__create_form
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/003__create_form.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates a new form (parent record only) with a title, optional description, visibility and intended-for settings. Call `createFormVersion` next to add the first version with its fields.

## Query

```graphql
mutation (
  $title: String!
  $description: String
  $visibility: [FormBuilderFormVisibility!]
  $intendedFor: [FormBuilderFormIntendedFor!]
) {
  createForm (
    title: $title
    description: $description
    visibility: $visibility
    intendedFor: $intendedFor
  ) {
    id
    title
    description
    visibility
    intendedFor
    formVersions {
      id
      version
      published
    }
  }
}

```

## Variables

```json
{
  "description": "A simple contact form",
  "title": "Contact Form"
}
```

## Response

```json
{
  "data": {
    "createForm": {
      "description": "A simple contact form",
      "formVersions": [],
      "id": "00000000-0000-4000-8000-000000000001",
      "intendedFor": [
        "USER",
        "COMPANY"
      ],
      "title": "Contact Form",
      "visibility": [
        "PRIVATE"
      ]
    }
  }
}
```

---

# Update Form

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/004__update_form
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/004__update_form.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Updates form-level settings (title, description, visibility, intended-for). Only the provided arguments are changed; omitted fields keep their values.

## Query

```graphql
mutation (
  $formId: ID!
  $title: String
  $description: String
  $visibility: [FormBuilderFormVisibility!]
  $intendedFor: [FormBuilderFormIntendedFor!]
) {
  updateForm(
    formId: $formId
    title: $title
    description: $description
    visibility: $visibility
    intendedFor: $intendedFor
  ) {
    id
    title
    description
    visibility
    intendedFor
  }
}

```

## Variables

```json
{
  "description": "New Description",
  "formId": "00000000-0000-4000-8000-000000000001",
  "title": "New Title"
}
```

## Response

```json
{
  "data": {
    "updateForm": {
      "description": "New Description",
      "id": "00000000-0000-4000-8000-000000000001",
      "intendedFor": [
        "USER",
        "COMPANY"
      ],
      "title": "New Title",
      "visibility": [
        "PUBLIC"
      ]
    }
  }
}
```

---

# Delete Form

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/005__delete_form
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/005__delete_form.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Deletes one of the current company's forms, along with its versions. Returns an OK status on success.

## Query

```graphql
mutation ($formId: ID!) {
  deleteForm(formId: $formId) {
    status
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteForm": {
      "status": "OK"
    }
  }
}
```

---

# Create Form Version

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/006__create_form_version
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/006__create_form_version.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates a new version of an existing form with the given fields; field order follows the order of the list. The version number increments automatically, and the version stays unpublished unless `published` is set to true.

## Query

```graphql
mutation (
  $formId: ID!
  $fields: [FormVersionFieldInput!]!
  $published: Boolean
) {
  createFormVersion (
    formId: $formId
    fields: $fields
    published: $published
  ) {
    id
    version
    published
    formVersionFields {
      label
      type
      order
    }
  }
}

```

## Variables

```json
{
  "fields": [
    {
      "label": "Updated Name",
      "type": "TEXT"
    },
    {
      "label": "Phone",
      "type": "NUMBER"
    }
  ],
  "formId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "createFormVersion": {
      "formVersionFields": [
        {
          "label": "Updated Name",
          "order": 0,
          "type": "TEXT"
        },
        {
          "label": "Phone",
          "order": 1,
          "type": "NUMBER"
        }
      ],
      "id": "00000000-0000-4000-8000-000000000001",
      "published": false,
      "version": 2
    }
  }
}
```

---

# Update Form Version

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/007__update_form_version
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/007__update_form_version.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Replaces the fields of an existing form version; field order follows the order of the list. Only an unpublished, latest version with no submissions can be edited.

## Query

```graphql
mutation (
  $formId: ID!
  $formVersionId: ID!
  $fields: [FormVersionFieldInput!]!
) {
  updateFormVersion (
    formId: $formId
    formVersionId: $formVersionId
    fields: $fields
  ) {
    id
    version
    formVersionFields {
      label
      type
      order
    }
  }
}

```

## Variables

```json
{
  "fields": [
    {
      "label": "New Field 1",
      "type": "TEXT"
    },
    {
      "label": "New Field 2",
      "type": "EMAIL"
    }
  ],
  "formId": "00000000-0000-4000-8000-000000000002",
  "formVersionId": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "updateFormVersion": {
      "formVersionFields": [
        {
          "label": "New Field 1",
          "order": 0,
          "type": "TEXT"
        },
        {
          "label": "New Field 2",
          "order": 1,
          "type": "EMAIL"
        }
      ],
      "id": "00000000-0000-4000-8000-000000000001",
      "version": 1
    }
  }
}
```

---

# Publish Form Version

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/008__publish_form_version
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/008__publish_form_version.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Publishes or unpublishes a form version: pass `published: true` to publish and `published: false` to unpublish.

## Query

```graphql
mutation ($formVersionId: ID!, $published: Boolean!) {
  publishFormVersion(formVersionId: $formVersionId, published: $published) {
    id
    version
    published
  }
}

```

## Variables

```json
{
  "formVersionId": "00000000-0000-4000-8000-000000000001",
  "published": true
}
```

## Response

```json
{
  "data": {
    "publishFormVersion": {
      "id": "00000000-0000-4000-8000-000000000001",
      "published": true,
      "version": 1
    }
  }
}
```

---

# List form versions (paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/009__list_paginated_form_versions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/009__list_paginated_form_versions.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists a form's versions, most-recent first, cursor-paginated. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($formId: ID!, $limit: Int, $cursor: String) {
  paginatedFormVersions(formId: $formId, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      version
      published
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000003"
}
```

## Response

```json
{
  "data": {
    "paginatedFormVersions": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "published": true,
          "version": 2
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "published": false,
          "version": 1
        }
      ]
    }
  }
}
```

---

# Create B2C Form Submission Request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/010__create_b2c_form_submission_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/010__create_b2c_form_submission_request.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Requests a user to fill one of the current company's forms. A form instance is created with a REQUESTED status until the user submits.

## Query

```graphql
mutation ($formId: ID!, $submitterId: ID!) {
  createB2cFormSubmissionRequest(formId: $formId, submitterId: $submitterId) {
    id
    form {
      id
    }
    formInstance {
      id
      status
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000001",
  "submitterId": "00000000-0000-4000-8000-000000000004"
}
```

## Response

```json
{
  "data": {
    "createB2cFormSubmissionRequest": {
      "form": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "formInstance": {
        "id": "00000000-0000-4000-8000-000000000002",
        "status": "REQUESTED"
      },
      "id": "00000000-0000-4000-8000-000000000003"
    }
  }
}
```

---

# Create B2B Form Submission Request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/011__create_b2b_form_submission_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/011__create_b2b_form_submission_request.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Requests another company to fill one of the current company's forms. A form instance is created with a REQUESTED status until the company submits.

## Query

```graphql
mutation ($formId: ID!, $submitterId: ID!) {
  createB2bFormSubmissionRequest(formId: $formId, submitterId: $submitterId) {
    id
    form {
      id
    }
    formInstance {
      id
      status
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000001",
  "submitterId": "00000000-0000-4000-8000-000000000004"
}
```

## Response

```json
{
  "data": {
    "createB2bFormSubmissionRequest": {
      "form": {
        "id": "00000000-0000-4000-8000-000000000001"
      },
      "formInstance": {
        "id": "00000000-0000-4000-8000-000000000002",
        "status": "REQUESTED"
      },
      "id": "00000000-0000-4000-8000-000000000003"
    }
  }
}
```

---

# List Received B2B Form Submission Requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/012__list_received_b2b_form_submission_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/012__list_received_b2b_form_submission_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists B2B form submission requests received by the current company, page-based, optionally filtered by search query or form instance status.

## Query

```graphql
query (
  $formInstanceStatus: FormBuilderFormInstanceStatus
  $page: Int
  $limit: Int
) {
  receivedB2bFormSubmissionRequests(
    formInstanceStatus: $formInstanceStatus
    page: $page
    limit: $limit
  ) {
    records {
      id
      requester {
        id
      }
      form {
        id
        title
      }
      formInstance {
        id
        status
      }
    }
    page
    totalRecords
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "receivedB2bFormSubmissionRequests": {
      "page": 1,
      "records": [
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000001",
            "title": "Test Form 1"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000002",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        },
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000005",
            "title": "Test Form 2"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000006",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000007",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000008"
          }
        }
      ],
      "totalRecords": 2
    }
  }
}
```

---

# List Received B2B Form Submission Requests (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/013__list_paginated_received_b2b_form_submission_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/013__list_paginated_received_b2b_form_submission_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists B2B form submission requests received by the current company, cursor-paginated, optionally filtered by search query or form instance status. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query (
  $searchQuery: String
  $formInstanceStatus: FormBuilderFormInstanceStatus
  $limit: Int
  $cursor: String
) {
  paginatedReceivedB2bFormSubmissionRequests(
    searchQuery: $searchQuery
    formInstanceStatus: $formInstanceStatus
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      requester {
        id
      }
      form {
        id
        title
      }
      formInstance {
        id
        status
      }
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedReceivedB2bFormSubmissionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000001",
            "title": "Test Form 1"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000002",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000004"
          }
        },
        {
          "form": {
            "id": "00000000-0000-4000-8000-000000000005",
            "title": "Test Form 2"
          },
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000006",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000007",
          "requester": {
            "id": "00000000-0000-4000-8000-000000000008"
          }
        }
      ]
    }
  }
}
```

---

# Reject B2B Form Submission Request

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/014__reject_b2b_form_submission_request
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/014__reject_b2b_form_submission_request.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Rejects a B2B form submission request received by the current company. The form instance moves to a REJECTED status and its data is cleared.

## Query

```graphql
mutation ($id: ID!) {
  rejectB2bFormSubmissionRequest(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "rejectB2bFormSubmissionRequest": {
      "status": "OK"
    }
  }
}
```

---

# List Sent B2C Form Submission Requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/015__list_sent_b2c_form_submission_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/015__list_sent_b2c_form_submission_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists B2C form submission requests sent by the current company for a specific form, cursor-paginated. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($formId: ID!, $limit: Int, $cursor: String) {
  sentB2cFormSubmissionRequests(formId: $formId, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      submitter {
        id
      }
      formInstance {
        id
        status
      }
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000007"
}
```

## Response

```json
{
  "data": {
    "sentB2cFormSubmissionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000001",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "submitter": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000004",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000005",
          "submitter": {
            "id": "00000000-0000-4000-8000-000000000006"
          }
        }
      ]
    }
  }
}
```

---

# List Sent B2B Form Submission Requests

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/016__list_sent_b2b_form_submission_requests
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/016__list_sent_b2b_form_submission_requests.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists B2B form submission requests sent by the current company for a specific form, cursor-paginated. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($formId: ID!, $limit: Int, $cursor: String) {
  sentB2bFormSubmissionRequests(formId: $formId, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      submitter {
        id
      }
      formInstance {
        id
        status
      }
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000007"
}
```

## Response

```json
{
  "data": {
    "sentB2bFormSubmissionRequests": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000001",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "submitter": {
            "id": "00000000-0000-4000-8000-000000000003"
          }
        },
        {
          "formInstance": {
            "id": "00000000-0000-4000-8000-000000000004",
            "status": "REQUESTED"
          },
          "id": "00000000-0000-4000-8000-000000000005",
          "submitter": {
            "id": "00000000-0000-4000-8000-000000000006"
          }
        }
      ]
    }
  }
}
```

---

# List form submissions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/017__list_form_submissions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/017__list_form_submissions.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists submitted form instances for one of the current company's forms, cursor-paginated. Only submissions with a SUBMITTED status are included.

## Query

```graphql
query ($formId: ID!, $limit: Int, $cursor: String) {
  formSubmissions(formId: $formId, limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      status
      data
      identifiers
      formVersion {
        id
        version
      }
      updatedAt
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000004"
}
```

## Response

```json
{
  "data": {
    "formSubmissions": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "data": {
            "name": "Bob"
          },
          "formVersion": {
            "id": "00000000-0000-4000-8000-000000000001",
            "version": 1
          },
          "id": "00000000-0000-4000-8000-000000000002",
          "identifiers": [],
          "status": "SUBMITTED",
          "updatedAt": "2026-01-15T09:00:01.000000"
        },
        {
          "data": {
            "name": "Alice"
          },
          "formVersion": {
            "id": "00000000-0000-4000-8000-000000000001",
            "version": 1
          },
          "id": "00000000-0000-4000-8000-000000000003",
          "identifiers": [
            "Alice"
          ],
          "status": "SUBMITTED",
          "updatedAt": "2026-01-15T09:00:00.000000"
        }
      ]
    }
  }
}
```

---

# Get Form Submission

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/018__get_form_submission
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/013_forms/018__get_form_submission.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Fetches a single form submission by form instance ID and form ID, including its submitted data and the form version fields it was filled against.

## Query

```graphql
query ($formInstanceId: ID!, $formId: ID!) {
  formSubmission(formInstanceId: $formInstanceId, formId: $formId) {
    id
    status
    data
    identifiers
    formVersion {
      id
      version
      formVersionFields {
        key
        label
        type
      }
    }
  }
}

```

## Variables

```json
{
  "formId": "00000000-0000-4000-8000-000000000003",
  "formInstanceId": "00000000-0000-4000-8000-000000000002"
}
```

## Response

```json
{
  "data": {
    "formSubmission": {
      "data": {
        "name": "Alice"
      },
      "formVersion": {
        "formVersionFields": [
          {
            "key": "name",
            "label": "Name",
            "type": "TEXT"
          }
        ],
        "id": "00000000-0000-4000-8000-000000000001",
        "version": 1
      },
      "id": "00000000-0000-4000-8000-000000000002",
      "identifiers": [
        "Alice"
      ],
      "status": "SUBMITTED"
    }
  }
}
```

---

# 014\_webhooks

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks.md
Last updated: 2026-09-09T03:10:23.000Z

- [List Company Webhooks](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/001__list_company_webhooks.md)
- [Create Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/002__create_company_webhook.md)
- [Update Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/003__update_company_webhook.md)
- [Remove Company Webhook](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/004__remove_company_webhook.md)

---

# List Company Webhooks

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/001__list_company_webhooks
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/001__list_company_webhooks.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the current company's webhooks, including each webhook's URL, authentication settings and the event types it is enabled for.

## Query

```graphql
query
  {
  companyWebhooks
    {
    id
    url
    bearerToken
    customHeaders
    name
    receiveSubscriptionEvents
    receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyWebhooks": [
      {
        "b2bConnectionRequestReceivedWebhook": true,
        "b2bConnectionRequestResponseWebhook": true,
        "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
        "b2cConnectionRequestResponseWebhook": true,
        "b2cSubscriptionRequestResponseWebhook": true,
        "bearerToken": "TestBearerToken",
        "c2bConnectionRequestReceivedWebhook": true,
        "companySocialNetworkStatusChangeWebhook": true,
        "customHeaders": {
          "X-Custom-Header": "CustomValue"
        },
        "id": "00000000-0000-4000-8000-000000000001",
        "name": "webhook",
        "receiveOptOutEvents": true,
        "receiveSubscriptionEvents": true,
        "url": "https://localhost:54321/webhook"
      },
      {
        "b2bConnectionRequestReceivedWebhook": true,
        "b2bConnectionRequestResponseWebhook": true,
        "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
        "b2cConnectionRequestResponseWebhook": true,
        "b2cSubscriptionRequestResponseWebhook": true,
        "bearerToken": "TestBearerToken",
        "c2bConnectionRequestReceivedWebhook": true,
        "companySocialNetworkStatusChangeWebhook": true,
        "customHeaders": {
          "X-Custom-Header": "CustomValue"
        },
        "id": "00000000-0000-4000-8000-000000000002",
        "name": "webhook",
        "receiveOptOutEvents": true,
        "receiveSubscriptionEvents": true,
        "url": "https://localhost:54321/webhook"
      },
      {
        "b2bConnectionRequestReceivedWebhook": true,
        "b2bConnectionRequestResponseWebhook": true,
        "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
        "b2cConnectionRequestResponseWebhook": true,
        "b2cSubscriptionRequestResponseWebhook": true,
        "bearerToken": "TestBearerToken",
        "c2bConnectionRequestReceivedWebhook": true,
        "companySocialNetworkStatusChangeWebhook": true,
        "customHeaders": {
          "X-Custom-Header": "CustomValue"
        },
        "id": "00000000-0000-4000-8000-000000000003",
        "name": "webhook",
        "receiveOptOutEvents": true,
        "receiveSubscriptionEvents": true,
        "url": "https://localhost:54321/webhook"
      },
      {
        "b2bConnectionRequestReceivedWebhook": true,
        "b2bConnectionRequestResponseWebhook": true,
        "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
        "b2cConnectionRequestResponseWebhook": true,
        "b2cSubscriptionRequestResponseWebhook": true,
        "bearerToken": "TestBearerToken",
        "c2bConnectionRequestReceivedWebhook": true,
        "companySocialNetworkStatusChangeWebhook": true,
        "customHeaders": {
          "X-Custom-Header": "CustomValue"
        },
        "id": "00000000-0000-4000-8000-000000000004",
        "name": "webhook",
        "receiveOptOutEvents": true,
        "receiveSubscriptionEvents": true,
        "url": "https://localhost:54321/webhook"
      },
      {
        "b2bConnectionRequestReceivedWebhook": true,
        "b2bConnectionRequestResponseWebhook": true,
        "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
        "b2cConnectionRequestResponseWebhook": true,
        "b2cSubscriptionRequestResponseWebhook": true,
        "bearerToken": "TestBearerToken",
        "c2bConnectionRequestReceivedWebhook": true,
        "companySocialNetworkStatusChangeWebhook": true,
        "customHeaders": {
          "X-Custom-Header": "CustomValue"
        },
        "id": "00000000-0000-4000-8000-000000000005",
        "name": "webhook",
        "receiveOptOutEvents": true,
        "receiveSubscriptionEvents": true,
        "url": "https://localhost:54321/webhook"
      },
      {
        "b2bConnectionRequestReceivedWebhook": true,
        "b2bConnectionRequestResponseWebhook": true,
        "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
        "b2cConnectionRequestResponseWebhook": true,
        "b2cSubscriptionRequestResponseWebhook": true,
        "bearerToken": "TestBearerToken",
        "c2bConnectionRequestReceivedWebhook": true,
        "companySocialNetworkStatusChangeWebhook": true,
        "customHeaders": {
          "X-Custom-Header": "CustomValue"
        },
        "id": "00000000-0000-4000-8000-000000000006",
        "name": "webhook",
        "receiveOptOutEvents": true,
        "receiveSubscriptionEvents": true,
        "url": "https://localhost:54321/webhook"
      }
    ]
  }
}
```

---

# Create Company Webhook

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/002__create_company_webhook
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/002__create_company_webhook.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates a webhook for the current company with a target URL, optional bearer token and custom headers, and per-event-type flags controlling which events are delivered to it.

## Query

```graphql
mutation (
  $url: String!
  $bearerToken: String
  $customHeaders: JSON
  $name: String
  $receiveSubscriptionEvents: Boolean
  $receiveOptOutEvents: Boolean
  $b2bConnectionRequestReceivedWebhook: Boolean
  $b2bConnectionRequestResponseWebhook: Boolean
  $b2cConnectionRequestResponseWebhook: Boolean
  $c2bConnectionRequestReceivedWebhook: Boolean
  $b2cSubscriptionRequestResponseWebhook: Boolean
  $companySocialNetworkStatusChangeWebhook: Boolean
  $b2bFormInstanceSubmissionRequestReceivedWebhook: Boolean
) {
  createCompanyWebhook (
    url: $url
    bearerToken: $bearerToken
    customHeaders: $customHeaders
    name: $name
    receiveSubscriptionEvents: $receiveSubscriptionEvents
    receiveOptOutEvents: $receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook: $b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook: $b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook: $b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook: $c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook: $b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook: $companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook: $b2bFormInstanceSubmissionRequestReceivedWebhook
  ) {
    id
    url
    bearerToken
    customHeaders
    name
    receiveSubscriptionEvents
    receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook
  }
}

```

## Variables

```json
{
  "b2bConnectionRequestReceivedWebhook": true,
  "b2bConnectionRequestResponseWebhook": true,
  "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
  "b2cConnectionRequestResponseWebhook": true,
  "b2cSubscriptionRequestResponseWebhook": true,
  "bearerToken": "TestBearerToken",
  "c2bConnectionRequestReceivedWebhook": true,
  "companySocialNetworkStatusChangeWebhook": true,
  "customHeaders": {
    "X-Custom-Header": "CustomValue"
  },
  "name": "webhook",
  "receiveOptOutEvents": true,
  "receiveSubscriptionEvents": true,
  "url": "https://localhost:54321/webhook"
}
```

## Response

```json
{
  "data": {
    "createCompanyWebhook": {
      "b2bConnectionRequestReceivedWebhook": true,
      "b2bConnectionRequestResponseWebhook": true,
      "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
      "b2cConnectionRequestResponseWebhook": true,
      "b2cSubscriptionRequestResponseWebhook": true,
      "bearerToken": "TestBearerToken",
      "c2bConnectionRequestReceivedWebhook": true,
      "companySocialNetworkStatusChangeWebhook": true,
      "customHeaders": {
        "X-Custom-Header": "CustomValue"
      },
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "webhook",
      "receiveOptOutEvents": true,
      "receiveSubscriptionEvents": true,
      "url": "https://localhost:54321/webhook"
    }
  }
}
```

---

# Update Company Webhook

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/003__update_company_webhook
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/003__update_company_webhook.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Updates one of the current company's webhooks. Only the provided arguments are changed; omitted settings keep their values.

## Query

```graphql
mutation (
  $id: ID!
  $url: String
  $bearerToken: String
  $customHeaders: JSON
  $name: String
  $receiveSubscriptionEvents: Boolean
  $receiveOptOutEvents: Boolean
  $b2bConnectionRequestReceivedWebhook: Boolean
  $b2bConnectionRequestResponseWebhook: Boolean
  $b2cConnectionRequestResponseWebhook: Boolean
  $c2bConnectionRequestReceivedWebhook: Boolean
  $b2cSubscriptionRequestResponseWebhook: Boolean
  $companySocialNetworkStatusChangeWebhook: Boolean
  $b2bFormInstanceSubmissionRequestReceivedWebhook: Boolean
) {
  updateCompanyWebhook (
    id: $id
    url: $url
    bearerToken: $bearerToken
    customHeaders: $customHeaders
    name: $name
    receiveSubscriptionEvents: $receiveSubscriptionEvents
    receiveOptOutEvents: $receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook: $b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook: $b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook: $b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook: $c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook: $b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook: $companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook: $b2bFormInstanceSubmissionRequestReceivedWebhook
  ) {
    id
    url
    bearerToken
    customHeaders
    name
    receiveSubscriptionEvents
    receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook
  }
}

```

## Variables

```json
{
  "bearerToken": "new test bearer token",
  "id": "00000000-0000-4000-8000-000000000001",
  "name": "new test name"
}
```

## Response

```json
{
  "data": {
    "updateCompanyWebhook": {
      "b2bConnectionRequestReceivedWebhook": true,
      "b2bConnectionRequestResponseWebhook": true,
      "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
      "b2cConnectionRequestResponseWebhook": true,
      "b2cSubscriptionRequestResponseWebhook": true,
      "bearerToken": "new test bearer token",
      "c2bConnectionRequestReceivedWebhook": true,
      "companySocialNetworkStatusChangeWebhook": true,
      "customHeaders": {
        "X-Custom-Header": "CustomValue"
      },
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "new test name",
      "receiveOptOutEvents": true,
      "receiveSubscriptionEvents": true,
      "url": "https://localhost:54321/webhook"
    }
  }
}
```

---

# Remove Company Webhook

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/004__remove_company_webhook
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/014_webhooks/004__remove_company_webhook.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Removes one of the current company's webhooks by ID. No further events are delivered to it. Returns the removed webhook.

## Query

```graphql
mutation (
  $id: ID!
) {
  removeCompanyWebhook (
    id: $id
  ) {
    id
    url
    bearerToken
    customHeaders
    name
    receiveSubscriptionEvents
    receiveOptOutEvents
    b2bConnectionRequestReceivedWebhook
    b2bConnectionRequestResponseWebhook
    b2cConnectionRequestResponseWebhook
    c2bConnectionRequestReceivedWebhook
    b2cSubscriptionRequestResponseWebhook
    companySocialNetworkStatusChangeWebhook
    b2bFormInstanceSubmissionRequestReceivedWebhook
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "removeCompanyWebhook": {
      "b2bConnectionRequestReceivedWebhook": true,
      "b2bConnectionRequestResponseWebhook": true,
      "b2bFormInstanceSubmissionRequestReceivedWebhook": true,
      "b2cConnectionRequestResponseWebhook": true,
      "b2cSubscriptionRequestResponseWebhook": true,
      "bearerToken": "TestBearerToken",
      "c2bConnectionRequestReceivedWebhook": true,
      "companySocialNetworkStatusChangeWebhook": true,
      "customHeaders": {
        "X-Custom-Header": "CustomValue"
      },
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "webhook",
      "receiveOptOutEvents": true,
      "receiveSubscriptionEvents": true,
      "url": "https://localhost:54321/webhook"
    }
  }
}
```

---

# 015\_invitation\_links

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links.md
Last updated: 2026-09-09T03:10:23.000Z

- [List company invitation links](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/001__list_company_invitation_links.md)
- [List company invitation links (paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/002__list_paginated_company_invitation_links.md)
- [Create company invitation link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/003__create_company_invitation_link.md)
- [Update Company Invitation Link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/004__update_company_invitation_link.md)
- [Delete Company Invitation Link](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/005__delete_company_invitation_link.md)

---

# List company invitation links

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/001__list_company_invitation_links
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/001__list_company_invitation_links.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists the current company's invitation links, including each link's token and connection/subscription settings. An optional limit caps the number of results.

## Query

```graphql
query ($limit: Int) {
  companyInvitationLinks(limit: $limit) {
    id
    name
    invitationToken
    b2cConnectionType
    allowUserConnection
    allowAnonymousSubscription
    requestEmailSubscription
    requestSmsSubscription
    requestVoiceSubscription
    invitedByUser {
      id
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyInvitationLinks": [
      {
        "allowAnonymousSubscription": false,
        "allowUserConnection": false,
        "b2cConnectionType": "CUSTOMER",
        "id": "00000000-0000-4000-8000-000000000001",
        "invitationToken": "token_7",
        "invitedByUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "name": "Link 2",
        "requestEmailSubscription": true,
        "requestSmsSubscription": true,
        "requestVoiceSubscription": true
      },
      {
        "allowAnonymousSubscription": false,
        "allowUserConnection": false,
        "b2cConnectionType": "CUSTOMER",
        "id": "00000000-0000-4000-8000-000000000003",
        "invitationToken": "token_6",
        "invitedByUser": {
          "id": "00000000-0000-4000-8000-000000000002"
        },
        "name": "Link 1",
        "requestEmailSubscription": true,
        "requestSmsSubscription": true,
        "requestVoiceSubscription": true
      }
    ]
  }
}
```

---

# List company invitation links (paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/002__list_paginated_company_invitation_links
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/002__list_paginated_company_invitation_links.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists the current company's invitation links, cursor-paginated. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedCompanyInvitationLinks(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      name
      invitationToken
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedCompanyInvitationLinks": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "id": "00000000-0000-4000-8000-000000000001",
          "invitationToken": "token_5",
          "name": "invitation_link_5"
        },
        {
          "id": "00000000-0000-4000-8000-000000000002",
          "invitationToken": "token_4",
          "name": "invitation_link_4"
        },
        {
          "id": "00000000-0000-4000-8000-000000000003",
          "invitationToken": "token_3",
          "name": "invitation_link_3"
        }
      ]
    }
  }
}
```

---

# Create company invitation link

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/003__create_company_invitation_link
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/003__create_company_invitation_link.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Creates an invitation link for the current company with a generated invitation token. Settings control the connection types for joining users and which subscriptions (email, SMS, voice) are requested.

## Query

```graphql
mutation (
  $name: String
  $b2cConnectionType: B2cConnectionType
  $allowUserConnection: Boolean
  $requestEmailSubscription: Boolean
  $requestSmsSubscription: Boolean
) {
  createCompanyInvitationLink (
    name: $name
    b2cConnectionType: $b2cConnectionType
    allowUserConnection: $allowUserConnection
    requestEmailSubscription: $requestEmailSubscription
    requestSmsSubscription: $requestSmsSubscription
  ) {
    id
    name
    invitationToken
    invitationUrl
    qrCode
    qrCodeDownload
    b2cConnectionType
    allowUserConnection
    requestEmailSubscription
    requestSmsSubscription
  }
}

```

## Variables

```json
{
  "allowUserConnection": true,
  "b2cConnectionType": "CUSTOMER",
  "name": "Friends link",
  "requestEmailSubscription": true
}
```

## Response

```json
{
  "data": {
    "createCompanyInvitationLink": {
      "allowUserConnection": true,
      "b2cConnectionType": "CUSTOMER",
      "id": "00000000-0000-4000-8000-000000000001",
      "invitationToken": "k85zvQ9w_WqL963t",
      "invitationUrl": "http://localhost:4002/i/k85zvQ9w_WqL963t",
      "name": "Friends link",
      "qrCode": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkwIiBoZWlnaHQ9IjI5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI2ZmZmZmZiIvPjxnIGZpbGw9IiMwMDAwMDAiPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNzAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjIwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI1MCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjYwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjIwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI1MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI1MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNTAiIHg9IjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSI5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIxMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNTAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjEwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMTAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjIwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMTEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjExMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIxMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIxMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNzAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjEyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMTIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjEzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTIwIiB4PSIxMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI5MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iMTMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxOTAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMTQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjcwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIxNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjE0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMTUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMTUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjE1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIxNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTUwIiB4PSIxNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMTYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNzAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNTAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjE2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjcwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjE3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIxNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI4MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI3MCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMCIgeD0iMTcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE1MCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjE4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwMCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMTgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIxODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI2MCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMzAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjIwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIxMCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNTAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTQwIiB4PSIxOTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEzMCIgeD0iMTkwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjE5MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjYwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI1MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNDAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjMwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIyMDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjAwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMzAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAiIHg9IjIwMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMjEwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNjAiIHg9IjIxMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIyMTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIyMCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMjIwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIyMjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjIyMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI0MCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNDAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMjMwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIyMzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjIzMCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjgwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI3MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNjAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMjAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjEwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNzAiIHg9IjI0MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTYwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI2MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSI0MCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIzMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMCIgeD0iMjQwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIwIiB4PSIyNDAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjI4MCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNTAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTgwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE3MCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNTAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIyNTAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjExMCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iOTAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjI1MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjUwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyODAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMTAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE5MCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIyNjAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE0MCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMjAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNDAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMzAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjAiIHg9IjI2MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjYwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNzAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjUwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIzMCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyMDAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTkwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE4MCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxNTAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTMwIiB4PSIyNzAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEyMCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMDAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iODAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iNjAiIHg9IjI3MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMCIgeD0iMjcwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIyNzAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMjQwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwMCIgeD0iMjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxODAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTcwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjE2MCIgeD0iMjgwIiBoZWlnaHQ9IjEwIi8+PHJlY3Qgd2lkdGg9IjEwIiB5PSIxMTAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjxyZWN0IHdpZHRoPSIxMCIgeT0iMTAwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjkwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjgwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjYwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjUwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjQwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjMwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjIwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjEwIiB4PSIyODAiIGhlaWdodD0iMTAiLz48cmVjdCB3aWR0aD0iMTAiIHk9IjAiIHg9IjI4MCIgaGVpZ2h0PSIxMCIvPjwvZz48L3N2Zz4=",
      "qrCodeDownload": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAJpCAYAAAA+KzL1AAAAtGVYSWZJSSoACAAAAAYAEgEDAAEAAAABAAAAGgEFAAEAAABWAAAAGwEFAAEAAABeAAAAKAEDAAEAAAACAAAAEwIDAAEAAAABAAAAaYcEAAEAAABmAAAAAAAAAAAAAADoAwAAAAAAAOgDAAAGAACQBwAEAAAAMDIxMAGRBwAEAAAAAQIDAACgBwAEAAAAMDEwMAGgAwABAAAA//8AAAKgBAABAAAAwgEAAAOgBAABAAAAaQIAAAAAAABiuKwFAAAACXBIWXMAAAAAAAAAAAHqZRakAAAgAElEQVR4nOydCdhW09rHN6VSokkpJSoaNKEIaaDMmUKmDEXklLwyJ0KOQ0chCSknJEmUpKikUmnUYGqSIUlJo5J01nf993deV/Ls59nrXvvd61nP/v+v67463+fdzxr3+u177bXv21MURVEUlWB5titARasrr7zybzZy5Eh2syPi+FFU/EoECBcvXuzD4KmnnlJ33323uv7669Vtt92m+vfvr8aOHauWLFmitm7dWqB12L17t5o+fboaNGiQevDBB1Xnzp3VRRddpC644AJ13XXXqdtvv1099thj6qOPPlK//fabuBzP8/5mN910U6RtoQpOHD+Kil85C8Kvv/7aB07NmjVTLi6prEKFCv41mzdvjqwec+fOVbfccouqWLFi6HoULVpUnXHGGWrq1Kna5XEhdVscP4qKXzkJwgEDBvgwCQueva106dLqkUceUVu2bBHXYceOHapr167iOuTbqaeeqr799tvQ5XIhdVscP4qKXzkFwm3btqnzzjvPGD75VqZMGTVjxgztenzxxReqTp06kdUD3iS2d8OIC6nb4vhRVPzKKRBeffXVkcEn30qWLKnmzZsXug4bN25URxxxROT1OOigg/zt3kziQuq2OH4UFb9yBoQvvfRSKKDst99+6tBDD1VVqlQJDaFatWqpXbt2ZazDf//739AeadmyZVW9evV8aO6zzz6hrjn++OMz1oMLqdvi+FFU/MoJEP7yyy+qePHigQApUaKE6t69u/rkk098WOVr+/btasGCBeqaa65R++67b1oI4YRpJuFEaLrfOOyww9Sjjz6qVq9e/Zfr8uvRqVOnjDDs06dP2jpwIXVbHD+Kil85AUJAKggcJ510klq1alWo93r1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hU8L0gVHvvXWW/1gCamCbiPm5I033ujHPMz1MFAURRWMCELKugC5MOHx8C0f4ogiqwe+5StZsqRRsHSKoiiIIKSyQl999ZV/slMn0kUmq169Oj9apygqowhCKmuE93xhvLwwhvQxqdIcURRF7S2CkMoq4eQnEg+XKVNGBEBkMtcJQkxRFEUQUlmbYxLB00899VQ/tRIOzaQCH+LGHn744apLly7+5xZ7H6ihKIrKJIKQckKIfYhA2IDd5MmT1WeffaZ+/vlngo+iKGMRhBRFUVSiRRBSFEVRiRZBSFEURSVaBKHjQoLaK6+88m/G2JrsL843igongtBxPfXUUylPU9511122q5aVYn+x/yhqbxGEjosLO/uL842izEQQOi6CMJ7+whY0vmnc26QJhG3JtB2cb1QuiiB0XFyY4umvoATCeXl5yiWZtoPzjcpFEYSOiwtTPP1FEHK+UbkrgtBxvfLKK35W9r2tT58+tquWU/1FEJr1H0VlswhCigohgpCiclcEIUWFEEFIUbkrgpCiQoggpKjcFUFIUSFEEFJU7oogpNIK+f2mT5+u+vXrp7p3764uv/xydfHFF6ubb75ZPfzww/7hiV9++SXne7GgQfjFF1+ot99+2+/nW265RZ133nmqdevWqn379uruu+9W/fv39//7kiVLsrodEn399dd+uxEasFWrVqpevXqqUaNG6uijj1YtW7b059yAAQPUypUrY6kP53zyRBA6LiyOderU+ZsNGjQo7WKIRLd7WpEiRf6y0GzcuFHdcccdqnLlyhmzwiM57rnnnqvmz5+ftq61atX6W7kwZJU3SaiLa6tVq5bytwERSX917dr1L7+z7777pmz7Pvvs87cye/bsGarev//+uxo2bJhq3Lhxxj7e0xo0aOCDYfPmzRnLiLodkvkWpBEjRvjQ0237qFGjtMuyNecpN0QQJvC7uKBrFi9e7P/3MWPGqIoVK2otUPmLA57sg9SuXbvAaxHxRKqZM2cG/u7IkSNF/XX11Vdrtz/f4NFlEupRqVIlcRmw/fffX916661q586dgeVE3Y4ovltFUuVTTjnFqO3HHXec+vLLL0OXaWvOU26IIHRcUYMQXoDJAgUbOHBgynLHjx8feA0WdKmwYKf6zTJlyvwNErZBCC/wqquuMu7jPa1JkyZqy5YtToAQ2+z47jCKdh9wwAG+hxpG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/tvy8W+88UbyTinFdeCBByZt2LBhtYkTJ+YuiebOfz0v7r///tzjDK2BEWGLUMYCSKVoxu+zzz5N9bcnHnvssfR+169fn9lvRFh9tGp+zZo1K50LVGKPYeHChdGK65MmTWrp+Iceeihq1+K377333kxCded/XiLM+q4M5cCIsMJEeNRRRyXj995776b62xNUgJeipHn6jQirj1bMr9dee62uEnqMCJ977rk60tl1111rQ4cOrR1yyCF1x++4446WjEedrc/ba6+9ameddVbt3HPPTZzWdN+jjz4avW93/r/99tuJhEl7/vnnc48ztAZGhC3CjkSEv/zyS22XXXZJroXFI0+/EWH1Ufb82rRpU61nz551BBIiQtSnhx12WHrehRdeWPv999/T/ldffbVO0nvhhRdKHb9hw4Y6wr711ltr//zzT9r/448/1i699NK0H2LcvHlzU99HCM2OMzQOI8J2JsLffvst2RW/9957tW3btnUJIsSYL/eKc0ie/rxEyIKGk8mzzz5be+WVV2rfffddQ9fG4vfuu+/WnnnmmWTxw0mhCjbCRuZBWc+Dv/nhhx8mEgh/e+PGjdHzy55fF110UapOlAU+RISLFi1Kn1ufPn1qv/76a1RiGz16dKnjH3jggbSP6/7vv//ajOc3Dz300PS8kGSX9X2E0Ow4Q+MwImwR3AWQhev000+v7bzzzulxFgNULeyUNQYNGlTbbbfd6nbO/JvGApbVD3AG6NGjR9K++OKLxA7RrVu3ujHYflgMYvYNHAyGDBmStBDGjBmT/N5xxx2Xuz+LCH/++efa2LFj0wVTt2OOOSa9z5iTwQUXXFDbaaed2oxHPfbOO+94x0Gaoo5yG4se1+ojrrxE2Mg8KOt5bNmyJbHLuXOGtv/++9eefPLJuvPzzK9G5gdAdSi/tWDBgsThJEaEl19+eXo+pOQDz0vO2X333evIruj4q6++Ou3DTpenkn1oQ+eb/0ig8n3iEZp3nKE1MCJsEfQCeNppp9WpWdx2/PHHJ6oWQe/evYPnsuBm9YPbb789PYaXXOh8GjaPv/76yz9B1Hk+/Pnnn4nthP677747d3+MCD/44IPaEUccEb1m2m233ea9JtzMWWBiY7EXrVixog0J+sjCbaNGjapTk8Xup8g8KON5/P333wnxZ4296aab0jF55lfe+QE+/vjj9LlCmDy7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",
      "requestEmailSubscription": true,
      "requestSmsSubscription": false
    }
  }
}
```

---

# Update Company Invitation Link

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/004__update_company_invitation_link
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/004__update_company_invitation_link.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Updates one of the current company's invitation links. Only the provided arguments are changed; omitted settings keep their values.

## Query

```graphql
mutation (
  $id: ID!
  $name: String
  $allowUserConnection: Boolean
  $requestEmailSubscription: Boolean
) {
  updateCompanyInvitationLink (
    id: $id
    name: $name
    allowUserConnection: $allowUserConnection
    requestEmailSubscription: $requestEmailSubscription
  ) {
    id
    name
    allowUserConnection
    requestEmailSubscription
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "name": "New name",
  "requestEmailSubscription": true
}
```

## Response

```json
{
  "data": {
    "updateCompanyInvitationLink": {
      "allowUserConnection": false,
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "New name",
      "requestEmailSubscription": true
    }
  }
}
```

---

# Delete Company Invitation Link

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/005__delete_company_invitation_link
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/015_invitation_links/005__delete_company_invitation_link.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Deletes one of the current company's invitation links. The link's token can no longer be used to join. Returns an OK status on success.

## Query

```graphql
mutation ($id: ID!) {
  deleteCompanyInvitationLink(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteCompanyInvitationLink": {
      "status": "OK"
    }
  }
}
```

---

# 016\_client\_secrets

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets.md
Last updated: 2026-09-09T03:10:23.000Z

- [List client secrets](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/001__list_client_secrets.md)
- [List Client Secrets (Paginated)](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/002__list_paginated_client_secrets.md)
- [Create client secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/003__create_client_secret.md)
- [Update Client Secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/004__update_client_secret.md)
- [Delete Client Secret](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/005__delete_client_secret.md)

---

# List client secrets

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/001__list_client_secrets
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/001__list_client_secrets.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Lists the calling company's client secrets, most-recent first. The plaintext secret value is not included; it is only returned once, at creation time.

## Query

```graphql
query {
  clientSecrets {
    id
    clientId
    description
    insertedAt
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "clientSecrets": [
      {
        "clientId": "client_id_second",
        "description": "second",
        "id": "00000000-0000-4000-8000-000000000001",
        "insertedAt": "2026-01-15T09:00:01.000000"
      },
      {
        "clientId": "client_id_first",
        "description": "first",
        "id": "00000000-0000-4000-8000-000000000002",
        "insertedAt": "2026-01-15T09:00:00.000000"
      }
    ]
  }
}
```

---

# List Client Secrets (Paginated)

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/002__list_paginated_client_secrets
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/002__list_paginated_client_secrets.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Lists the calling company's client secrets, most-recent first, cursor-paginated. Pass `paginationInfo.nextCursor` back as `cursor` to fetch the next page.

## Query

```graphql
query ($limit: Int, $cursor: String) {
  paginatedClientSecrets(limit: $limit, cursor: $cursor) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      clientId
      description
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "paginatedClientSecrets": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "clientId": "client_id_1",
          "description": "description client_secret_2",
          "id": "00000000-0000-4000-8000-000000000001"
        },
        {
          "clientId": "client_id_3",
          "description": "description client_secret_4",
          "id": "00000000-0000-4000-8000-000000000002"
        },
        {
          "clientId": "client_id_5",
          "description": "description client_secret_6",
          "id": "00000000-0000-4000-8000-000000000003"
        }
      ]
    }
  }
}
```

---

# Create client secret

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/003__create_client_secret
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/003__create_client_secret.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Creates a new client secret for the calling company with an optional description. The plaintext `clientSecret` is returned only in this response and cannot be retrieved later.

## Query

```graphql
mutation ($description: String) {
  createClientSecret(description: $description) {
    id
    clientId
    clientSecret
    description
  }
}

```

## Variables

```json
{
  "description": "production key"
}
```

## Response

```json
{
  "data": {
    "createClientSecret": {
      "clientId": "00000000-0000-4000-8000-000000000001",
      "clientSecret": "RbywPevGOIDRbLioL1K23Q",
      "description": "production key",
      "id": "00000000-0000-4000-8000-000000000002"
    }
  }
}
```

---

# Update Client Secret

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/004__update_client_secret
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/004__update_client_secret.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Updates a client secret's description. The secret value itself is never modifiable.

## Query

```graphql
mutation ($id: ID!, $description: String!) {
  updateClientSecret(id: $id, description: $description) {
    id
    description
  }
}

```

## Variables

```json
{
  "description": "after",
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "updateClientSecret": {
      "description": "after",
      "id": "00000000-0000-4000-8000-000000000001"
    }
  }
}
```

---

# Delete Client Secret

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/005__delete_client_secret
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/016_client_secrets/005__delete_client_secret.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Permanently deletes one of the calling company's client secrets. Any external caller still using the deleted secret will be rejected on the next request. Returns an OK status on success.

## Query

```graphql
mutation ($id: ID!) {
  deleteClientSecret(id: $id) {
    status
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "deleteClientSecret": {
      "status": "OK"
    }
  }
}
```

---

# 017\_user\_imports

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports.md
Last updated: 2026-09-09T03:10:23.000Z

- [Import users from CSV](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/001__import_users_from_csv.md)
- [List user imports](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/002__list_user_imports.md)
- [Get user import](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/003__get_user_import.md)

---

# Import users from CSV

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/001__import_users_from_csv
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/001__import_users_from_csv.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Starts a user import from a previously uploaded CSV file, identified by the S3 file key returned by prepareFileUpload. Optionally creates B2C/C2C connections and requests email, SMS or voice subscriptions for the imported users. Returns the import record, which starts in UPLOADED status while the import is processed.

## Query

```graphql
mutation (
  $fileKey: String!
  $b2cType: B2cConnectionType
  $c2cType: C2cConnectionType
  $requestEmailSubscription: Boolean
  $requestSmsSubscription: Boolean
  $requestVoiceSubscription: Boolean
  $note: String
) {
  importUsersFromCsv (
    fileKey: $fileKey
    b2cType: $b2cType
    c2cType: $c2cType
    requestEmailSubscription: $requestEmailSubscription
    requestSmsSubscription: $requestSmsSubscription
    requestVoiceSubscription: $requestVoiceSubscription
    note: $note
  ) {
    id
    fileName
    status
    note
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{
  "b2cType": "CUSTOMER",
  "fileKey": "user_uploads/2026-01-15_examplekey1_users.csv",
  "note": "January batch import",
  "requestEmailSubscription": true
}
```

## Response

```json
{
  "data": {
    "importUsersFromCsv": {
      "fileName": "user_uploads/2026-01-15_examplekey1_users.csv",
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "note": "January batch import",
      "status": "UPLOADED",
      "updatedAt": "2026-01-15T09:00:00.000000"
    }
  }
}
```

---

# List user imports

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/002__list_user_imports
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/002__list_user_imports.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Lists the company's CSV user imports with their statuses, cursor-paginated. Pass back `paginationInfo.nextCursor` as `cursor` to fetch the next page; it is null on the last page.

## Query

```graphql
query (
  $limit: Int
  $cursor: String
) {
  userImports (
    limit: $limit
    cursor: $cursor
  ) {
    paginationInfo {
      limit
      nextCursor
    }
    records {
      id
      fileName
      note
      status
      insertedAt
      updatedAt
    }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "userImports": {
      "paginationInfo": {
        "limit": 20,
        "nextCursor": null
      },
      "records": [
        {
          "fileName": "user_uploads/wkygvgqt_users.csv",
          "id": "00000000-0000-4000-8000-000000000001",
          "insertedAt": "2026-01-15T09:00:02.000000",
          "note": null,
          "status": "UPLOADED",
          "updatedAt": "2026-01-15T09:00:02.000000"
        },
        {
          "fileName": "user_uploads/pw_avafv_users.csv",
          "id": "00000000-0000-4000-8000-000000000002",
          "insertedAt": "2026-01-15T09:00:01.000000",
          "note": null,
          "status": "UPLOADED",
          "updatedAt": "2026-01-15T09:00:01.000000"
        },
        {
          "fileName": "user_uploads/cb1knw-p_users.csv",
          "id": "00000000-0000-4000-8000-000000000003",
          "insertedAt": "2026-01-15T09:00:00.000000",
          "note": null,
          "status": "UPLOADED",
          "updatedAt": "2026-01-15T09:00:00.000000"
        }
      ]
    }
  }
}
```

---

# Get user import

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/003__get_user_import
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/017_user_imports/003__get_user_import.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Gets a single user import by ID, including its file name, note and current status. Only the company's own imports are accessible.

## Query

```graphql
query ($id: ID!) {
  userImport(id: $id) {
    id
    fileName
    note
    status
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{
  "id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

```json
{
  "data": {
    "userImport": {
      "fileName": "user_uploads/quv1tshs_users.csv",
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "note": "test import",
      "status": "UPLOADED",
      "updatedAt": "2026-01-15T09:00:00.000000"
    }
  }
}
```

---

# 018\_rcs\_and\_ai\_suggestions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions.md
Last updated: 2026-09-09T03:10:23.000Z

- [Get company RCS information](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/001__get_company_rcs_information.md)
- [Upsert Company RCS Information](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/002__upsert_company_rcs_information.md)
- [Get AI Company Profile Suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/003__get_ai_company_profile_suggestions.md)
- [Get AI RCS Suggestions](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/004__get_ai_rcs_suggestions.md)
- [Get AI Form Suggestions From Url](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/005__get_ai_form_suggestions_from_url.md)
- [Get AI Form Suggestions From File](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/006__get_ai_form_suggestions_from_file.md)

---

# Get company RCS information

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/001__get_company_rcs_information
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/001__get_company_rcs_information.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Returns the company's RCS agent information — agent identity, branding, capabilities, suggested replies/actions, and the authorization contact. Returns null when no RCS information has been set up yet.

## Query

```graphql
query {
  companyRcsInformation {
    id
    countryOfIncorporation
    agentLogoUrl
    agentName
    agentDescription
    agentColorSchemaPrimary
    agentColorSchemaSecondary
    agentCapabilities
    agentRegion
    welcomeMessage
    richMediaSupport
    suggestedReplies {
      id
      name
    }
    suggestedActions {
      id
      name
    }
    authorizationContact {
      title
      firstName
      lastName
      emails
      telephoneNumbers
    }
    insertedAt
    updatedAt
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyRcsInformation": {
      "agentCapabilities": null,
      "agentColorSchemaPrimary": "#FF0000",
      "agentColorSchemaSecondary": null,
      "agentDescription": "A test RCS agent",
      "agentLogoUrl": "https://example.com/logo.png",
      "agentName": "Test Agent",
      "agentRegion": null,
      "authorizationContact": null,
      "countryOfIncorporation": "US",
      "id": "00000000-0000-4000-8000-000000000001",
      "insertedAt": "2026-01-15T09:00:00.000000",
      "richMediaSupport": true,
      "suggestedActions": [],
      "suggestedReplies": [],
      "updatedAt": "2026-01-15T09:00:00.000000",
      "welcomeMessage": null
    }
  }
}
```

---

# Upsert Company RCS Information

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/002__upsert_company_rcs_information
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/002__upsert_company_rcs_information.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Creates the company's RCS agent information, or updates it when it already exists; only the provided fields change. Passing suggested replies/actions replaces the existing lists.

## Query

```graphql
mutation (
  $countryOfIncorporation: String
  $agentLogoUrl: String
  $agentName: String
  $agentDescription: String
  $agentColorSchemaPrimary: String
  $agentColorSchemaSecondary: String
  $agentCapabilities: String
  $agentRegion: String
  $welcomeMessage: String
  $richMediaSupport: Boolean
  $suggestedReplies: [RcsSuggestedReplyInput!]
  $suggestedActions: [RcsSuggestedActionInput!]
) {
  upsertCompanyRcsInformation (
    countryOfIncorporation: $countryOfIncorporation
    agentLogoUrl: $agentLogoUrl
    agentName: $agentName
    agentDescription: $agentDescription
    agentColorSchemaPrimary: $agentColorSchemaPrimary
    agentColorSchemaSecondary: $agentColorSchemaSecondary
    agentCapabilities: $agentCapabilities
    agentRegion: $agentRegion
    welcomeMessage: $welcomeMessage
    richMediaSupport: $richMediaSupport
    suggestedReplies: $suggestedReplies
    suggestedActions: $suggestedActions
  ) {
    id
    countryOfIncorporation
    agentName
    agentDescription
    agentColorSchemaPrimary
    agentColorSchemaSecondary
    richMediaSupport
    suggestedReplies {
      id
      name
    }
    suggestedActions {
      id
      name
    }
  }
}

```

## Variables

```json
{
  "agentColorSchemaPrimary": "#FF0000",
  "agentDescription": "Test agent description",
  "agentLogoUrl": "https://example.com/logo.png",
  "agentName": "My Agent",
  "countryOfIncorporation": "US",
  "richMediaSupport": true
}
```

## Response

```json
{
  "data": {
    "upsertCompanyRcsInformation": {
      "agentColorSchemaPrimary": "#FF0000",
      "agentColorSchemaSecondary": null,
      "agentDescription": "Test agent description",
      "agentName": "My Agent",
      "countryOfIncorporation": "US",
      "id": "00000000-0000-4000-8000-000000000001",
      "richMediaSupport": true,
      "suggestedActions": [],
      "suggestedReplies": []
    }
  }
}
```

---

# Get AI Company Profile Suggestions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/003__get_ai_company_profile_suggestions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/003__get_ai_company_profile_suggestions.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Analyzes the company website at the given URL (https\:// is assumed when the scheme is omitted) and returns AI-generated profile suggestions — legal name, about-us, contact details, addresses, social networks and webpages. Fields that could not be determined come back null or empty.

## Query

```graphql
mutation ($websiteUrl: String!) {
  getAiCompanyProfileSuggestions(websiteUrl: $websiteUrl) {
    legalName
    yearFounded
    aboutUs
    verticalType
    verticalTypeId
    organizationType
    organizationTypeId
    emails { email }
    telephoneNumbers { number countryCode }
    addresses { country city zipCode street }
    socialNetworks { type url }
    webpages { type url }
  }
}

```

## Variables

```json
{
  "websiteUrl": "https://acme.com"
}
```

## Response

```json
{
  "data": {
    "getAiCompanyProfileSuggestions": {
      "aboutUs": "We do things",
      "addresses": [
        {
          "city": "NY",
          "country": "US",
          "street": "Main 1",
          "zipCode": "10001"
        }
      ],
      "emails": [
        {
          "email": "hello@acme.com"
        }
      ],
      "legalName": "Acme Corp",
      "organizationType": null,
      "organizationTypeId": null,
      "socialNetworks": [
        {
          "type": "facebook",
          "url": "https://fb.com/acme"
        }
      ],
      "telephoneNumbers": [
        {
          "countryCode": "1",
          "number": "5551234567"
        }
      ],
      "verticalType": null,
      "verticalTypeId": null,
      "webpages": [
        {
          "type": "webpage",
          "url": "https://acme.com/about"
        }
      ],
      "yearFounded": 2001
    }
  }
}
```

---

# Get AI RCS Suggestions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/004__get_ai_rcs_suggestions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/004__get_ai_rcs_suggestions.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Generates AI-suggested RCS agent information for the company — agent name, description, region, capabilities, colors, welcome message, and suggested replies/actions. The result is shaped so it can be passed to `upsertCompanyRcsInformation`.

## Query

```graphql
mutation {
  getAiRcsSuggestions {
    countryOfIncorporation
    agentName
    agentDescription
    agentRegion
    agentCapabilities
    agentColorSchemaPrimary
    agentColorSchemaSecondary
    richMediaSupport
    welcomeMessage
    suggestedReplies { name }
    suggestedActions { name }
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "getAiRcsSuggestions": {
      "agentCapabilities": "Answers FAQs",
      "agentColorSchemaPrimary": "#FF0000",
      "agentColorSchemaSecondary": "#00FF00",
      "agentDescription": "Helpful company agent",
      "agentName": "Acme Bot",
      "agentRegion": "US",
      "countryOfIncorporation": "US",
      "richMediaSupport": true,
      "suggestedActions": [
        {
          "name": "Visit site"
        },
        {
          "name": "Call us"
        }
      ],
      "suggestedReplies": [
        {
          "name": "Yes"
        },
        {
          "name": "No"
        }
      ],
      "welcomeMessage": "Hi!"
    }
  }
}
```

---

# Get AI Form Suggestions From Url

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/005__get_ai_form_suggestions_from_url
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/005__get_ai_form_suggestions_from_url.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Analyzes the page at the given URL and returns an AI-suggested form structure — a title, description, and form fields with types, required flags, autofill keys, and options for choice fields.

## Query

```graphql
mutation ($url: String!) {
  getAiFormSuggestionsFromUrl(url: $url) {
    title
    description
    formVersionFields {
      label
      type
      required
      autofillKey
      fieldOptions { value }
    }
  }
}

```

## Variables

```json
{
  "url": "https://acme.com"
}
```

## Response

```json
{
  "data": {
    "getAiFormSuggestionsFromUrl": {
      "description": "Say hi",
      "formVersionFields": [
        {
          "autofillKey": "full_name",
          "fieldOptions": null,
          "label": "Name",
          "required": true,
          "type": "TEXT"
        }
      ],
      "title": "Contact form"
    }
  }
}
```

---

# Get AI Form Suggestions From File

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/006__get_ai_form_suggestions_from_file
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/018_rcs_and_ai_suggestions/006__get_ai_form_suggestions_from_file.md
Last updated: 2026-08-18T15:48:58.216Z

GraphQL endpoint: `/company`

Analyzes an uploaded file — passed as a base64 data URL (PDF, PNG, JPEG, GIF or WEBP, up to 10 MB decoded) — and returns an AI-suggested form structure with a title, description, and form fields.

## Query

```graphql
mutation ($fileDataUrl: String!) {
  getAiFormSuggestionsFromFile(fileDataUrl: $fileDataUrl) {
    title
    description
    formVersionFields {
      label
      type
      required
      autofillKey
      fieldOptions { value }
    }
  }
}

```

## Variables

```json
{
  "fileDataUrl": "data:application/pdf;base64,JVBERi0xLjQK"
}
```

## Response

```json
{
  "data": {
    "getAiFormSuggestionsFromFile": {
      "description": null,
      "formVersionFields": [],
      "title": "Invoice form"
    }
  }
}
```

---

# 019\_settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings.md
Last updated: 2026-09-09T03:10:23.000Z

- [Get Company Settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/001__get_current_company_settings.md)
- [Update company settings](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/002__update_company_settings.md)
- [Get company dashboard stats](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/003__get_company_dashboard_stats.md)
- [Get Company Pending Action Counts](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/004__get_company_pending_action_counts.md)

---

# Get Company Settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/001__get_current_company_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/001__get_current_company_settings.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Returns the current company's settings — secret storage, trusted domains, subscription settings, and the per-field profile visibility configuration.

## Query

```graphql
query
  {
  companySettings
    {
    id
    secretStorage
    trustedDomains {
      domain
    }
    subscriptionSettings {
      enable_email
      enable_sms
      enable_voice
    }
    legalNameVisibility
    brandNameVisibility
    aboutUsVisibility
    yearFoundedVisibility
    verticalTypeVisibility
    organizationTypeVisibility
    specialtiesVisibility
    b2cVisibility
    metadataVisibility
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companySettings": {
      "aboutUsVisibility": [
        "PUBLIC"
      ],
      "b2cVisibility": [
        "PUBLIC"
      ],
      "brandNameVisibility": [
        "PUBLIC"
      ],
      "id": "00000000-0000-4000-8000-000000000001",
      "legalNameVisibility": [
        "PUBLIC"
      ],
      "metadataVisibility": [
        "PUBLIC"
      ],
      "organizationTypeVisibility": [
        "PUBLIC"
      ],
      "secretStorage": {},
      "specialtiesVisibility": [
        "PUBLIC"
      ],
      "subscriptionSettings": {
        "enable_email": true,
        "enable_sms": true,
        "enable_voice": true
      },
      "trustedDomains": [],
      "verticalTypeVisibility": [
        "PUBLIC"
      ],
      "yearFoundedVisibility": [
        "PUBLIC"
      ]
    }
  }
}
```

---

# Update company settings

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/002__update_company_settings
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/002__update_company_settings.md
Last updated: 2026-09-16T08:47:48.229Z

GraphQL endpoint: `/company`

Updates the company's settings — secret storage, trusted domains, subscription settings, and per-field profile visibility; only the provided fields change. Visibility fields list the connection types allowed to see each profile field.

## Query

```graphql
mutation (
  $secretStorage: JSON
  $dashboardLayout: JSON
  $trustedDomains: [TrustedDomainInput]
  $subscriptionSettings: CompanySubscriptionSettingsInput
  $legalNameVisibility: [CompanyVisibilityType!]
  $brandNameVisibility: [CompanyVisibilityType!]
  $logoUrlVisibility: [CompanyVisibilityType!]
  $aboutUsVisibility: [CompanyVisibilityType!]
  $yearFoundedVisibility: [CompanyVisibilityType!]
  $verticalTypeVisibility: [CompanyVisibilityType!]
  $organizationTypeVisibility: [CompanyVisibilityType!]
  $specialtiesVisibility: [CompanyVisibilityType!]
  $b2cVisibility: [CompanyVisibilityType!]
  $metadataVisibility: [CompanyVisibilityType!]
) {
  updateCompanySettings (
    secretStorage: $secretStorage
    dashboardLayout: $dashboardLayout
    trustedDomains: $trustedDomains
    subscriptionSettings: $subscriptionSettings
    legalNameVisibility: $legalNameVisibility
    brandNameVisibility: $brandNameVisibility
    logoUrlVisibility: $logoUrlVisibility
    aboutUsVisibility: $aboutUsVisibility
    yearFoundedVisibility: $yearFoundedVisibility
    verticalTypeVisibility: $verticalTypeVisibility
    organizationTypeVisibility: $organizationTypeVisibility
    specialtiesVisibility: $specialtiesVisibility
    b2cVisibility: $b2cVisibility
    metadataVisibility: $metadataVisibility
  ) {
    id
    secretStorage
    dashboardLayout
  }
}

```

## Variables

```json
{
  "aboutUsVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "b2cVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "brandNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "dashboardLayout": {
    "version": 1,
    "widgets": [
      "company-profile",
      "invitation-links"
    ]
  },
  "legalNameVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "logoUrlVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "metadataVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "organizationTypeVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "secretStorage": {
    "secret_test": "secret-value"
  },
  "specialtiesVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "subscriptionSettings": {
    "enable_email": false,
    "enable_sms": false,
    "enable_voice": false
  },
  "trustedDomains": [
    {
      "domain": "test123.com"
    },
    {
      "domain": "test456.com"
    }
  ],
  "verticalTypeVisibility": [
    "PARTNER",
    "CUSTOMER"
  ],
  "yearFoundedVisibility": [
    "PARTNER",
    "CUSTOMER"
  ]
}
```

## Response

```json
{
  "data": {
    "updateCompanySettings": {
      "dashboardLayout": {
        "version": 1,
        "widgets": [
          "company-profile",
          "invitation-links"
        ]
      },
      "id": "00000000-0000-4000-8000-000000000001",
      "secretStorage": {
        "secret_test": "secret-value"
      }
    }
  }
}
```

---

# Get company dashboard stats

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/003__get_company_dashboard_stats
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/003__get_company_dashboard_stats.md
Last updated: 2026-09-23T03:37:36.770Z

GraphQL endpoint: `/company`

Returns aggregate counts for the company's dashboard: established B2B and B2C connections, pending B2B and C2B connection requests awaiting a response, and how many people subscribe to the company.

## Query

```graphql
query {
  companyDashboardStats {
    pendingC2bConnectionRequestsCount
    b2cConnectionsCount
    pendingB2bConnectionRequestsCount
    b2bConnectionsCount
    b2cSubscribersCount
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "companyDashboardStats": {
      "b2bConnectionsCount": 0,
      "b2cConnectionsCount": 0,
      "b2cSubscribersCount": 0,
      "pendingB2bConnectionRequestsCount": 0,
      "pendingC2bConnectionRequestsCount": 0
    }
  }
}
```

---

# Get Company Pending Action Counts

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/004__get_company_pending_action_counts
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/019_settings/004__get_company_pending_action_counts.md
Last updated: 2026-08-25T03:27:07.791Z

GraphQL endpoint: `/company`

Returns how many items are waiting on the current company's response: connection requests received from people and from other companies, form submission requests, and documents received over a message channel awaiting confirmation.

Every kind is always present and always an integer — a kind with nothing waiting is `0`, never null or absent.

Each count resolves independently, so selecting a subset of the fields runs only those counts.

## Query

```graphql
query {
  pendingActionCounts {
    peopleConnectionRequests
    companyConnectionRequests
    formRequests
    pendingDocuments
  }
}

```

## Variables

```json
{}
```

## Response

```json
{
  "data": {
    "pendingActionCounts": {
      "companyConnectionRequests": 3,
      "formRequests": 1,
      "pendingDocuments": 1,
      "peopleConnectionRequests": 2
    }
  }
}
```

---

# 020\_assistant

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant.md
Last updated: 2026-09-09T03:10:23.000Z

- [Ask A Question About Using Tnid](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant/001__ask_docs_question_as_company.md)

---

# Ask A Question About Using Tnid

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant/001__ask_docs_question_as_company
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/020_assistant/001__ask_docs_question_as_company.md
Last updated: 2026-09-09T03:04:33.382Z

GraphQL endpoint: `/company`

Answers a natural-language question from the published documentation and names the pages the answer drew on. The reference documents both schemas; a company session is answered from the company half.

Supplying `navigation` also lets the answer point at where to go: it is answered against exactly the entries supplied, so it never names somewhere the caller wasn't offered.

The answer shown here comes from a stubbed model, so the wording is illustrative rather than something the service guarantees.

## Query

```graphql
mutation ($question: String!) {
  askDocsQuestion(question: $question) {
    answer
  }
}

```

## Variables

```json
{
  "question": "how do I upload a document"
}
```

## Response

```json
{
  "data": {
    "askDocsQuestion": {
      "answer": "Use the company mutation."
    }
  }
}
```

---

# 021\_user\_events

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events.md
Last updated: 2026-11-06T10:11:36.615Z

- [Create user event token](https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events/001__create_user_event_token.md)

---

# Create user event token

Source: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events/001__create_user_event_token
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/002_company/021_user_events/001__create_user_event_token.md
Last updated: 2026-11-06T10:11:36.615Z

HTTP API `POST` `/auth/user-event-token`

Mints the `event_token` a partner application's frontend sends to `createUserEvent` and `userEvents`, so it can record and read events about one user under the event type prefix TNID granted the company (e.g. `hoozit.*`).

Call it from your backend, authenticated as your company, with the TNID id of the signed-in user. The token is valid for an hour, for any number of requests made with that user's session; a request made as anyone else is refused. A company whose user events are not enabled by TNID is refused with a 400.

## Request

```json
{
  "user_id": "00000000-0000-4000-8000-000000000001"
}
```

## Response

**HTTP Response Code:** 200

```json
{
  "event_token": "eyJERAMPLE.PAYLOAD1.SIGNATURE",
  "expires_at": "2026-01-15T09:00:00Z"
}
```

---

# 003\_definitions

Source: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions.md
Last updated: 2026-09-09T03:10:23.000Z

- [Enums](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/enums.md)
- [Input Types](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/inputtypes.md)
- [Mutations](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/mutations.md)
- [Queries](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/queries.md)
- [Types](https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/types.md)

---

# Enums

Source: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/enums
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/enums.md
Last updated: 2026-09-09T03:04:33.382Z

## AddressType

**Schema:** user, company

The type of an address

```graphql
enum AddressType {
  ACCOUNTING
  BILLING
  HEADQUARTERS
  HOME
  IT
  LEGAL
  MARKETING
  OPERATIONS
  OTHER
  PRIVATE
  SALES
  SUPPORT
  WORK
}
```

## AdminB2cConnectionType

**Schema:** user

The type of a B2C and C2B connection

```graphql
enum AdminB2cConnectionType {
  ADMIN
  EXTERNAL_ADMIN
  OWNER
}
```

## AiTaskRunStatus

**Schema:** user, company

Where a run has got to

```graphql
enum AiTaskRunStatus {
  "Answered; `result` holds it"
  COMPLETED
  "Ended without an answer; `error` says why"
  FAILED
  "Published, not yet picked up"
  QUEUED
  "Being answered now"
  RUNNING
}
```

## B2bConnectionType

**Schema:** company

The type of a B2B connection

```graphql
enum B2bConnectionType {
  CLIENT
  OTHER
  PARTNER
  VENDOR
}
```

## B2cConnectionType

**Schema:** user, company

The type of a B2C and C2B connection

```graphql
enum B2cConnectionType {
  ADMIN
  CUSTOMER
  EMPLOYEE
  EXTERNAL_ADMIN
  OTHER
  OWNER
  PARTNER
}
```

## B2cSubscriptionTopicType

**Schema:** user, company

The type of a subscription topic

```graphql
enum B2cSubscriptionTopicType {
  CRITICAL
  NON_CRITICAL
}
```

## B2cSubscriptionType

**Schema:** user, company

The type of a subscription

```graphql
enum B2cSubscriptionType {
  EMAIL
  SMS
  VOICE
}
```

## C2cConnectionType

**Schema:** user, company

The type of a C2C connection

```graphql
enum C2cConnectionType {
  FAMILY
  FRIEND
  OTHER
  PROFESSIONAL
}
```

## CommunicationDirection

**Schema:** company

The direction of the external communication message, is it inbound or outbound.

```graphql
enum CommunicationDirection {
  INBOUND
  OUTBOUND
}
```

## CommunicationType

**Schema:** company

The type of a external communication message

```graphql
enum CommunicationType {
  EMAIL
  MESSENGER
  MMS
  RCS
  SIGNAL
  SMS
  TELEGRAM
  VIBER
  WHATSAPP
}
```

## CompanyAddressType

**Schema:** user, company

The type of a company address

```graphql
enum CompanyAddressType {
  ACCOUNTING
  BILLING
  HEADQUARTERS
  IT
  LEGAL
  MARKETING
  OPERATIONS
  OTHER
  SALES
  SUPPORT
}
```

## CompanyEmailType

**Schema:** user, company

The type of a company email

```graphql
enum CompanyEmailType {
  ACCOUNTING
  BILLING
  HEADQUARTERS
  IT
  LEGAL
  MARKETING
  OPERATIONS
  OPT_OUT_NOTIFICATIONS
  OTHER
  SALES
  SUPPORT
}
```

## CompanyTaxIdType

**Schema:** user, company

The type of the company tax identifier, e.g. EIN, Sales Tax, etc.

```graphql
enum CompanyTaxIdType {
  CROATIA_OIB
  EIN
  OTHER
  SALES_TAX_ID
  STATE_INCOME_ID
  UNEMPLOYMENT_ID
  WITHOLDING_TAX_ID
}
```

## CompanyTelephoneNumberType

**Schema:** user, company

The type of a company telephone number

```graphql
enum CompanyTelephoneNumberType {
  ACCOUNTING
  BILLING
  HEADQUARTERS
  IT
  LEGAL
  MARKETING
  OPERATIONS
  OPT_OUT_NOTIFICATIONS
  OTHER
  SALES
  SMS_OPT_IN
  SUPPORT
}
```

## CompanyVisibilityType

**Schema:** user, company

The type of a company visibility

```graphql
enum CompanyVisibilityType {
  CLIENT
  CUSTOMER
  EMPLOYEE
  PARTNER
  PRIVATE
  PUBLIC
  VENDOR
}
```

## ConnectionRequestResponse

**Schema:** user, company

```graphql
enum ConnectionRequestResponse {
  ACCEPTED
  REJECTED
}
```

## ConnectionStatus

**Schema:** user, company

The status of a connection or a connection request

```graphql
enum ConnectionStatus {
  ACCEPTED
  PENDING
  REJECTED
  REVOKED
}
```

## DocumentSource

**Schema:** user, company

How a document entered the repository

```graphql
enum DocumentSource {
  "Received as an email attachment to the repository address"
  EMAIL
  "Received as an MMS media attachment to the repository number"
  MMS
  "Received as an SMS to the repository number"
  SMS
  "Uploaded through the app"
  UPLOAD
}
```

## DocumentStatus

**Schema:** user, company

Where a document stands in the repository

```graphql
enum DocumentStatus {
  "In the repository"
  ACCEPTED
  "Soft-deleted"
  DELETED
  "Received over an inbound channel, awaiting the owner's acceptance"
  PENDING_REVIEW
}
```

## DocumentTaggingError

**Schema:** user, company

Why a document's contents could not be read

```graphql
enum DocumentTaggingError {
  "The file could not be opened or its contents could not be parsed"
  CONVERSION_FAILED
  "The file holds no text that could be extracted, such as a scan or a photo of a page"
  NO_TEXT_EXTRACTED
  "Reading the file was attempted and did not complete; the file itself may be fine"
  READING_FAILED
  "The file is larger than can be read"
  TOO_LARGE
}
```

## EmailType

**Schema:** user, company

The type of an email

```graphql
enum EmailType {
  ACCOUNTING
  BILLING
  HEADQUARTERS
  HOME
  IT
  LEGAL
  MARKETING
  OPERATIONS
  OPT_OUT_NOTIFICATIONS
  OTHER
  PRIVATE
  SALES
  SUPPORT
  WORK
}
```

## ExternalCommunicationDirection

**Schema:** company

```graphql
enum ExternalCommunicationDirection {
  INBOUND
  OUTBOUND
}
```

## ExternalCommunicationType

**Schema:** company

```graphql
enum ExternalCommunicationType {
  EMAIL
  MESSENGER
  MMS
  RCS
  SIGNAL
  SMS
  TELEGRAM
  VIBER
  WHATSAPP
}
```

## FormBuilderFieldType

**Schema:** user, company

```graphql
enum FormBuilderFieldType {
  CHECKBOX
  DATE
  EMAIL
  IMAGE
  NUMBER
  RADIO
  SELECT
  STATIC_TEXT
  TEXT
  TEXTAREA
  TIME
}
```

## FormBuilderFormInstanceStatus

**Schema:** user, company

```graphql
enum FormBuilderFormInstanceStatus {
  ACCEPTED
  CHANGES_REQUESTED
  IN_PROGRESS
  REJECTED
  REQUESTED
  SUBMITTED
}
```

## FormBuilderFormIntendedFor

**Schema:** user, company

```graphql
enum FormBuilderFormIntendedFor {
  COMPANY
  USER
}
```

## FormBuilderFormVisibility

**Schema:** user, company

```graphql
enum FormBuilderFormVisibility {
  CLIENT
  CUSTOMER
  EMPLOYEE
  PARTNER
  PRIVATE
  PUBLIC
  VENDOR
}
```

## GroupInviteResponse

**Schema:** user

```graphql
enum GroupInviteResponse {
  ACCEPTED
  REJECTED
}
```

## GroupInviteStatus

**Schema:** user

The status of a user group member invite

```graphql
enum GroupInviteStatus {
  ACCEPTED
  PENDING
  REJECTED
  REVOKED
}
```

## GroupRoleType

**Schema:** user

The role type of a group member

```graphql
enum GroupRoleType {
  ADMIN
  MEMBER
}
```

## GroupVisibilityType

**Schema:** user

The type of a group visibility

```graphql
enum GroupVisibilityType {
  CONNECTIONS
  PRIVATE
  PUBLIC
}
```

## InputSocialMediaType

**Schema:** user, company

The type of a social media page

```graphql
enum InputSocialMediaType {
  FACEBOOK
  INSTAGRAM
  LINKEDIN
  PINTEREST
  SNAPCHAT
  TIKTOK
  X
  YOUTUBE
}
```

## InputWebpageType

**Schema:** user, company

The type of a webpage

```graphql
enum InputWebpageType {
  OTHER
  PRIVACY_POLICY
  TERMS_AND_CONDITIONS
  WEBPAGE
}
```

## NotificationKind

**Schema:** user, company

What a notification is about.

The same vocabulary the notification settings and webhook payloads use, so a caller matching on this is matching on the one the backend already speaks.

```graphql
enum NotificationKind {
  B2B_CONNECTION_REQUEST
  B2B_FORM_SUBMISSION_REQUEST
  B2C_CONNECTION_REQUEST
  B2C_FORM_SUBMISSION_REQUEST
  B2C_SUBSCRIPTION_REQUEST
  C2B_CONNECTION_REQUEST
  C2C_CONNECTION_REQUEST
  COMPANY_SOCIAL_NETWORK
  GROUP_USER_MEMBER_INVITE
  GROUP_USER_MEMBER_JOIN_REQUEST
  USER_SOCIAL_NETWORK
}
```

## NotificationStatus

**Schema:** user, company

The read/unread status of a notification

```graphql
enum NotificationStatus {
  "The notification has been read"
  READ
  "The notification has not been read"
  UNREAD
}
```

## OnboardingStatusValue

**Schema:** user

```graphql
enum OnboardingStatusValue {
  COMPLETED
  INCOMPLETE
  SKIPPED
}
```

## OnboardingStep

**Schema:** user

```graphql
enum OnboardingStep {
  COMPANY_REGISTERED_STEP
  CONTACT_INFORMATION_STEP
  INTERESTS_INFORMATION_STEP
  INVITED_CONTACTS_STEP
  PERSONAL_INFORMATION_STEP
  SOCIAL_NETWORK_INFORMATION_STEP
}
```

## OnboardingStepStatus

**Schema:** user

```graphql
enum OnboardingStepStatus {
  COMPLETED
  SKIPPED
}
```

## OptOutRequestStatus

**Schema:** company

The status of an opt out request

```graphql
enum OptOutRequestStatus {
  ACCEPTED
  EXPIRED
  NOTIFIED
  RECEIVED
  REJECTED
  REMINDER_SENT
  REVOKED
}
```

## OptOutRequestType

**Schema:** company

The type of an opt out request

```graphql
enum OptOutRequestType {
  EMAIL
  MMS
  SMS
  TNID
  VOICE
  WEB
}
```

## ResponseStatus

**Schema:** user, company

The status of the request

```graphql
enum ResponseStatus {
  ERROR
  OK
}
```

## SearchResultType

**Schema:** user, company

Kind of entity returned by a global search row

```graphql
enum SearchResultType {
  COMPANY
  GROUP
  USER
}
```

## SentimentAnalysisAction

**Schema:** company

```graphql
enum SentimentAnalysisAction {
  NONE
  SUBSCRIBE
  UNSUBSCRIBE
}
```

## SmsOptInQrCodeType

**Schema:** company

The type of the sms qr code subscription

```graphql
enum SmsOptInQrCodeType {
  SMS
  VOICE
}
```

## SpamReportChannelType

**Schema:** user

The channel type of a spam report

```graphql
enum SpamReportChannelType {
  EMAIL
  MMS
  OTHER
  RCS
  SMS
  VOICE
}
```

## SpamReportIssueType

**Schema:** user

The issue type of a spam report

```graphql
enum SpamReportIssueType {
  FRAUD
  HARASSMENT
  ILLEGAL_CONTENT
  SCAM
  SPAM
}
```

## SpamReportStatus

**Schema:** user

The status of a spam report

```graphql
enum SpamReportStatus {
  CLOSED
  ESCALATED
  PROCESSING
  REJECTED
  SUBMITTED
}
```

## SubscriptionRequestResponse

**Schema:** user

```graphql
enum SubscriptionRequestResponse {
  ACCEPTED
  REJECTED
}
```

## SubscriptionRequestStatus

**Schema:** user, company

The status of a subscription request

```graphql
enum SubscriptionRequestStatus {
  ACCEPTED
  PENDING
  REJECTED
  REVOKED
}
```

## TelephoneNumberType

**Schema:** user, company

The type of an telephone number

```graphql
enum TelephoneNumberType {
  ACCOUNTING
  BILLING
  HEADQUARTERS
  HOME
  IT
  LEGAL
  MARKETING
  OPERATIONS
  OPT_OUT_NOTIFICATIONS
  OTHER
  PRIVATE
  SALES
  SMS_OPT_IN
  SUPPORT
  WORK
}
```

## TenDlcApiKeyType

**Schema:** company

10DLC API Key Type

```graphql
enum TenDlcApiKeyType {
  "Keys that the company is authorized to use from other companies"
  AUTHORIZED
  "Keys that the company owns"
  OWNED
}
```

## TenDlcBrandStatus

**Schema:** company

```graphql
enum TenDlcBrandStatus {
  "Brand is active and approved"
  ACTIVE
  "Brand is in draft status"
  DRAFT
  "Brand has expired"
  EXPIRED
  "Brand is pending upstream review"
  PENDING_REVIEW
  "Brand was rejected by upstream"
  REJECTED
}
```

## TenDlcBrandWorkflowStatus

**Schema:** company

10DLC brand workflow status

```graphql
enum TenDlcBrandWorkflowStatus {
  "Brand is awaiting upstream identity verification"
  AWAITING_VERIFICATION
  "Brand has been deleted"
  DELETED
  "Brand draft has been created but not submitted"
  DRAFT
  "Brand is in an error state"
  ERROR
  "Brand was rejected upstream"
  REJECTED
  "Brand is being resubmitted upstream"
  RESUBMITTING
  "Brand has been submitted upstream"
  SUBMITTED
  "Brand has been verified upstream"
  VERIFIED
}
```

## TenDlcCampaignStatus

**Schema:** company

```graphql
enum TenDlcCampaignStatus {
  "Campaign is active and approved"
  ACTIVE
  "Campaign is in draft status"
  DRAFT
  "Campaign has validation errors"
  ERROR
  "Campaign has expired"
  EXPIRED
  "Campaign is pending approval"
  PENDING
  "Campaign is suspended by MNO"
  SUSPENDED
}
```

## TenDlcCampaignWorkflowStatus

**Schema:** company

10DLC campaign workflow status

```graphql
enum TenDlcCampaignWorkflowStatus {
  "Campaign has been deleted"
  DELETED
  "Campaign draft has been created but not submitted"
  DRAFT
  "Campaign is in an error state"
  ERROR
  "Campaign has expired upstream"
  EXPIRED
  "Campaign submission failed and needs manual correction"
  FAILED_SUBMISSION
  "Campaign has been submitted and is awaiting upstream processing"
  SUBMITTED
  "Campaign has been verified and is active upstream"
  VERIFIED
  "Campaign is blocked until its brand finishes verification"
  WAITING_BRAND_VERIFICATION
}
```

## TenDlcComplianceTelephoneNumberStatus

**Schema:** company

```graphql
enum TenDlcComplianceTelephoneNumberStatus {
  "Deleted"
  DELETED
  "Initial state"
  DRAFT
  "Error occurred"
  ERROR
  "Rejected by OSR"
  REJECTED
  "Skipped (e.g., deleted campaigns)"
  SKIP
  "Submitted to OSR"
  SUBMITTED
  "Successfully verified"
  VERIFIED
  "Awaiting campaign verification"
  WAITING_CAMPAIGN_VERIFICATION
}
```

## TenDlcEntityType

**Schema:** company

```graphql
enum TenDlcEntityType {
  "Government entity"
  GOVERNMENT
  "Non-profit entity"
  NON_PROFIT
  "Private for-profit entity"
  PRIVATE_PROFIT
  "Public for-profit entity"
  PUBLIC_PROFIT
  "Sole proprietor entity"
  SOLE_PROPRIETOR
}
```

## TenDlcOwnershipType

**Schema:** company

10DLC Brand Ownership Type, indicates if the brand/campaign is owned by the company or shared by a partner company

```graphql
enum TenDlcOwnershipType {
  "Represents resources created by your 10DLC API Key"
  DIRECT
  "Resource not created by your 10DLC API key but shared by a "partner" company"
  PARTNER
}
```

## UnsubscribeType

**Schema:** company

To unsubscribe the message, or leave as is.

```graphql
enum UnsubscribeType {
  DONT_UNSUBSCRIBE
  UNSUBSCRIBE
}
```

## UrlVerificationStatus

**Schema:** user, company

The verification status of a URL

```graphql
enum UrlVerificationStatus {
  DEGRADED
  FAILING
  OPERATIONAL
  PENDING
}
```

## UserAddressType

**Schema:** user

The type of a user address

```graphql
enum UserAddressType {
  HOME
  PRIVATE
  WORK
}
```

## UserEmailType

**Schema:** user

The type of a user email

```graphql
enum UserEmailType {
  HOME
  OTHER
  PRIVATE
  WORK
}
```

## UserImportStatus

**Schema:** company

The status of a user import job

```graphql
enum UserImportStatus {
  "The import has completed successfully"
  COMPLETED
  "The import failed with an error"
  ERROR
  "The import is currently being processed"
  PROCESSING
  "The file has been uploaded and is waiting to be processed"
  UPLOADED
}
```

## UserTelephoneNumberType

**Schema:** user

The type of a user telephone number

```graphql
enum UserTelephoneNumberType {
  HOME
  OTHER
  PRIVATE
  WORK
}
```

## UserVisibilityType

**Schema:** user

The type of a user visibility

```graphql
enum UserVisibilityType {
  FAMILY
  FRIEND
  PRIVATE
  PROFESSIONAL
  PUBLIC
}
```

## VerificationStatus

**Schema:** user, company

A verification status

```graphql
enum VerificationStatus {
  UNVERIFIED
  VERIFIED
}
```

## ViewerConnectionStatus

**Schema:** user, company

Viewer-relative connection state

```graphql
enum ViewerConnectionStatus {
  "An established connection exists"
  CONNECTED
  "No connection and no pending request"
  NONE
  "A pending request the viewer received and can respond to"
  PENDING_INCOMING
  "A pending request the viewer sent and can revoke"
  PENDING_OUTGOING
  "The viewer is looking at their own profile/company"
  SELF
}
```

## ViewerConnectionType

**Schema:** user, company

Connection / request type, across all connection directions

```graphql
enum ViewerConnectionType {
  ADMIN
  CLIENT
  CUSTOMER
  EMPLOYEE
  EXTERNAL_ADMIN
  FAMILY
  FRIEND
  OTHER
  OWNER
  PARTNER
  PROFESSIONAL
  VENDOR
}
```

## VisibilityType

**Schema:** user, company

Visibility types

```graphql
enum VisibilityType {
  CLIENT
  CONNECTIONS
  CUSTOMER
  EMPLOYEE
  FAMILY
  FRIEND
  PARTNER
  PRIVATE
  PROFESSIONAL
  PUBLIC
  VENDOR
}
```

## WebpageType

**Schema:** user, company

The type of a webpage

```graphql
enum WebpageType {
  FACEBOOK
  INSTAGRAM
  LINKEDIN
  OTHER
  PINTEREST
  PRIVACY_POLICY
  SNAPCHAT
  TERMS_AND_CONDITIONS
  TIKTOK
  WEBPAGE
  X
  YOUTUBE
}
```

---

# Input Types

Source: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/inputtypes
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/inputtypes.md
Last updated: 2026-09-09T03:04:33.382Z

## B2cSubscriptionTopicInput

**Schema:** user, company

```graphql
input B2cSubscriptionTopicInput {
  description: String
  enable_email: Boolean
  enable_sms: Boolean
  enable_voice: Boolean
  "ID of the topic, to be supplied for existing topic"
  id: Id
  "Unique name of the topic"
  name: String!
  type: B2cSubscriptionTopicType
}
```

## CompanyAddressInput

**Schema:** user, company

```graphql
input CompanyAddressInput {
  city: String
  country: String
  id: Id
  state: String
  street: String
  type: CompanyAddressType
  types: [CompanyAddressType!]
  visibility: [CompanyVisibilityType!]
  zip_code: String
}
```

## CompanyEmailInput

**Schema:** user, company

```graphql
input CompanyEmailInput {
  email: String
  id: Id
  type: CompanyEmailType
  types: [CompanyEmailType!]
  visibility: [CompanyVisibilityType!]
}
```

## CompanyInput

**Schema:** company

```graphql
input CompanyInput {
  about_us: String
  addresses: [CompanyAddressInput]
  brand_name: String
  legal_name: String!
  tax_id: String
  year_founded: Integer
}
```

## CompanySocialMediaInput

**Schema:** user, company

```graphql
input CompanySocialMediaInput {
  id: Id
  type: InputSocialMediaType
  url: String
  visibility: [CompanyVisibilityType!]
}
```

## CompanySubscriptionSettingsInput

**Schema:** user, company

```graphql
input CompanySubscriptionSettingsInput {
  enable_email: Boolean
  enable_sms: Boolean
  enable_voice: Boolean
}
```

## CompanyTaxIdInput

**Schema:** user, company

```graphql
input CompanyTaxIdInput {
  id: Id
  "The type of the tax identifier, e.g. EIN, Sales Tax, etc."
  type: CompanyTaxIdType!
  "The US state associated with the tax identifier, if applicable, e.g. for Sales Tax IDs"
  us_state: String
  "The identifier itself, e.g. the EIN number, digits only, no dashes or spaces"
  value: String!
  "The visibility of the tax ID, default is ["PRIVATE"]"
  visibility: [CompanyVisibilityType!]
}
```

## CompanyTelephoneNumberInput

**Schema:** user, company

```graphql
input CompanyTelephoneNumberInput {
  "Country code of new telephone number, default is 1 (only used during creation)"
  country_code: String
  id: Id
  "Telephone number (only used during creation)"
  number: String
  type: CompanyTelephoneNumberType
  types: [CompanyTelephoneNumberType!]
  visibility: [CompanyVisibilityType!]
}
```

## CompanyWebpageInput

**Schema:** user, company

```graphql
input CompanyWebpageInput {
  id: Id
  type: InputWebpageType
  url: String
  visibility: [CompanyVisibilityType!]
}
```

## FormVersionFieldInput

**Schema:** company

```graphql
input FormVersionFieldInput {
  autofill_key: String
  content: String
  image_url: String
  label: String
  options: [String]
  required: Boolean
  style: Json
  type: FormBuilderFieldType!
  use_as_identifier: Boolean
}
```

## InviteUserInput

**Schema:** user, company

```graphql
input InviteUserInput {
  "Email of the user you want to create (one of email/telephone_number is required)"
  email: String
  "First name of the user you want to create"
  first_name: String
  "Last name of the user you want to create"
  last_name: String
  "Additional information"
  metadata: Json
  "Send an invitation email to the user you want to create"
  send_invite_email: Boolean
  "Send an invitation SMS to the user you want to create"
  send_invite_sms: Boolean
  "Telephone Number of the user you want to create (one of email/telephone_number is required)"
  telephone_number: String
}
```

## NavigationEntryInput

**Schema:** user, company

One place the caller can open, as they were offered it

```graphql
input NavigationEntryInput {
  "The label carried for this entry"
  label: String!
  "The path this entry opens"
  path: String!
  "Heading this entry sits under, when it sits under one"
  section: String
}
```

## RcsAuthorizationContactEmailInput

**Schema:** company

Email entry for an inline-created authorization contact

```graphql
input RcsAuthorizationContactEmailInput {
  email: String!
}
```

## RcsAuthorizationContactInput

**Schema:** company

Authorization contact created inline; pass instead of `authorization_contact_id`

```graphql
input RcsAuthorizationContactInput {
  emails: [RcsAuthorizationContactEmailInput!]
  first_name: String
  last_name: String
  telephone_numbers: [RcsAuthorizationContactTelephoneNumberInput!]
  title: String
}
```

## RcsAuthorizationContactTelephoneNumberInput

**Schema:** company

Telephone-number entry for an inline-created authorization contact

```graphql
input RcsAuthorizationContactTelephoneNumberInput {
  country_code: String!
  number: String!
}
```

## RcsSuggestedActionInput

**Schema:** company

```graphql
input RcsSuggestedActionInput {
  name: String!
}
```

## RcsSuggestedReplyInput

**Schema:** company

```graphql
input RcsSuggestedReplyInput {
  name: String!
}
```

## TenDlcRegisterBrandInput

**Schema:** company

```graphql
input TenDlcRegisterBrandInput {
  "Alternative business ID"
  alt_business_id: String
  "Alternative business ID type (NONE, DUNS, GIIN, LEI)"
  alt_business_id_type: String
  "Relationship to brand"
  brand_relationship: String!
  "Business contact email (required for public profit)"
  business_contact_email: String
  "City"
  city: String!
  "Company ID to associate with brand (required if not creating new company)"
  company_id: Id
  "Company legal name (required for non-sole proprietors)"
  company_name: String
  "Country code (2-letter ISO)"
  country: String!
  "Brand/Marketing/DBA name"
  display_name: String!
  "Employer identification number (required for non-sole proprietors)"
  ein: String
  "EIN issuing country (default: US)"
  ein_issuing_country: String
  "Contact email"
  email: String!
  "Business entity type"
  entity_type: TenDlcEntityType!
  "Contact first name (required for sole proprietors)"
  first_name: String
  "Contact last name (required for sole proprietors)"
  last_name: String
  "Mobile phone number (required for sole proprietors)"
  mobile_phone: String
  "Test/mock brand flag"
  mock: Boolean
  "Contact phone number (E.164 format)"
  phone: String!
  "Postal code"
  postal_code: String!
  "External reference ID"
  reference_id: String
  "Create new company during registration"
  register_new_company: Boolean
  "State code (required for US addresses)"
  state: String
  "Stock exchange (required for public profit)"
  stock_exchange: String
  "Stock ticker symbol (required for public profit)"
  stock_symbol: String
  "Street address"
  street: String!
  "10DLC API key ID to register the brand with"
  ten_dlc_api_key_id: Id!
  "Industry vertical code (required for non-sole proprietors)"
  vertical: String
  "Brand website URL (required for public profit)"
  website: String
}
```

## TenDlcRegisterCampaignInput

**Schema:** company

```graphql
input TenDlcRegisterCampaignInput {
  "Content is age-gated"
  age_gated: Boolean
  "Auto-renew each billing period (recommended), defaulting to true"
  auto_renewal: Boolean
  "Campaign description (min 40 chars)"
  description: String!
  "Direct lending campaign"
  direct_lending: Boolean
  "Campaign includes embedded links"
  embedded_link: Boolean
  "Sample embedded link"
  embedded_link_sample: String
  "Campaign includes embedded phone numbers"
  embedded_phone: Boolean
  "Keywords for help (default: 'HELP')"
  help_keywords: String
  "Help response message (min 20 chars)"
  help_message: String
  "Internal brand identifier (UUID)"
  internal_brand_id: Id!
  "Message flow description (min 40 chars)"
  message_flow: String!
  "Test/mock campaign flag"
  mock: Boolean
  "Number Resource Number ID"
  nnid: String!
  "Uses number pooling"
  number_pool: Boolean
  "Keywords for opt-in (e.g., 'SUBSCRIBE, JOIN')"
  optin_keywords: String
  "Opt-in confirmation message (min 20 chars)"
  optin_message: String
  "Keywords for opt-out (default: 'STOP')"
  optout_keywords: String
  "Opt-out confirmation message (min 20 chars)"
  optout_message: String
  "URL to privacy policy"
  privacy_policy_link: String
  "Internal reference identifier"
  reference_id: String
  "Reseller identifier or CSP ID"
  reseller_id: String
  "Message sample 1 (min 20 chars)"
  sample1: String
  "Message sample 2 (min 20 chars)"
  sample2: String
  "Message sample 3 (min 20 chars)"
  sample3: String
  "Message sample 4 (min 20 chars)"
  sample4: String
  "Message sample 5 (min 20 chars)"
  sample5: String
  "Sub-use case codes"
  sub_usecases: [String]
  "Requires help functionality"
  subscriber_help: Boolean
  "Requires opt-in functionality"
  subscriber_optin: Boolean
  "Requires opt-out functionality"
  subscriber_optout: Boolean
  "Telephone numbers to register"
  telephone_numbers: [TenDlcTelephoneNumberInput]
  "10DLC API key ID to register the campaign with"
  ten_dlc_api_key_id: Id!
  "CSP agrees to terms"
  terms_and_conditions: Boolean
  "URL to terms and conditions"
  terms_and_conditions_link: String
  "Use TNID's privacy policy"
  use_tnid_privacy_policy: Boolean
  "Use TNID's terms and conditions"
  use_tnid_terms_and_conditions: Boolean
  "Primary use case code"
  usecase: String!
}
```

## TenDlcTelephoneNumberInput

**Schema:** company

```graphql
input TenDlcTelephoneNumberInput {
  "Full telephone number (E.164 format)"
  number: String!
}
```

## TenDlcUpdateBrandInput

**Schema:** company

```graphql
input TenDlcUpdateBrandInput {
  "Alternative business ID"
  alt_business_id: String
  "Alternative business ID type"
  alt_business_id_type: String
  "Relationship to brand"
  brand_relationship: String
  "Business contact email"
  business_contact_email: String
  "City"
  city: String
  "Company legal name"
  company_name: String
  "Country code (2-letter ISO)"
  country: String
  "Brand/Marketing/DBA 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"
  first_name: String
  "Contact last name"
  last_name: String
  "Mobile phone number"
  mobile_phone: String
  "Test/mock brand flag"
  mock: Boolean
  "Additional custom attributes"
  optional_attributes: Json
  "Contact phone number (E.164 format)"
  phone: String
  "Postal code"
  postal_code: String
  "External reference ID"
  reference_id: String
  "State code"
  state: String
  "Stock exchange"
  stock_exchange: String
  "Stock ticker symbol"
  stock_symbol: String
  "Street address"
  street: String
  "Industry vertical code"
  vertical: String
  "Brand website URL"
  website: String
}
```

## TenDlcUpdateCampaignInput

**Schema:** company

```graphql
input TenDlcUpdateCampaignInput {
  "Content is age-gated"
  age_gated: Boolean
  "Auto-renew each billing period (recommended), defaulting to true"
  auto_renewal: Boolean
  "Campaign description (min 40 chars)"
  description: String
  "Direct lending campaign"
  direct_lending: Boolean
  "Campaign includes embedded links"
  embedded_link: Boolean
  "Sample embedded link"
  embedded_link_sample: String
  "Campaign includes embedded phone numbers"
  embedded_phone: Boolean
  "Keywords for help"
  help_keywords: String
  "Help response message (min 20 chars)"
  help_message: String
  "Message flow description (min 40 chars)"
  message_flow: String
  "Test/mock campaign flag"
  mock: Boolean
  "Number Resource Number ID"
  nnid: String
  "Uses number pooling"
  number_pool: Boolean
  "Keywords for opt-in"
  optin_keywords: String
  "Opt-in confirmation message (min 20 chars)"
  optin_message: String
  "Keywords for opt-out"
  optout_keywords: String
  "Opt-out confirmation message (min 20 chars)"
  optout_message: String
  "URL to privacy policy"
  privacy_policy_link: String
  "Internal reference identifier"
  reference_id: String
  "Reseller identifier or CSP ID"
  reseller_id: String
  "Message sample 1 (min 20 chars)"
  sample1: String
  "Message sample 2 (min 20 chars)"
  sample2: String
  "Message sample 3 (min 20 chars)"
  sample3: String
  "Message sample 4 (min 20 chars)"
  sample4: String
  "Message sample 5 (min 20 chars)"
  sample5: String
  "Sub-use case codes"
  sub_usecases: [String]
  "Requires help functionality"
  subscriber_help: Boolean
  "Requires opt-in functionality"
  subscriber_optin: Boolean
  "Requires opt-out functionality"
  subscriber_optout: Boolean
  "Telephone numbers to register"
  telephone_numbers: [TenDlcTelephoneNumberInput]
  "CSP agrees to terms"
  terms_and_conditions: Boolean
  "URL to terms and conditions"
  terms_and_conditions_link: String
  "Use TNID's privacy policy"
  use_tnid_privacy_policy: Boolean
  "Use TNID's terms and conditions"
  use_tnid_terms_and_conditions: Boolean
  "Primary use case code"
  usecase: String
}
```

## TrustedDomainInput

**Schema:** user, company

```graphql
input TrustedDomainInput {
  domain: String
  id: Id
}
```

## UserAddressInput

**Schema:** user

```graphql
input UserAddressInput {
  city: String
  country: String
  id: Id
  state: String
  street: String
  types: [UserAddressType!]
  visibility: [UserVisibilityType!]
  zip_code: String
}
```

## UserEmailInput

**Schema:** user

```graphql
input UserEmailInput {
  email: String
  id: Id
  primary: Boolean
  types: [UserEmailType!]
  visibility: [UserVisibilityType!]
}
```

## UserSocialMediaInput

**Schema:** user

```graphql
input UserSocialMediaInput {
  id: Id
  type: InputSocialMediaType
  url: String
  visibility: [UserVisibilityType!]
}
```

## UserTelephoneNumberInput

**Schema:** user

```graphql
input UserTelephoneNumberInput {
  "Country code of new telephone number, default is 1 (only used during creation)"
  country_code: String
  id: Id
  "Telephone number (only used during creation)"
  number: String
  primary: Boolean
  types: [UserTelephoneNumberType!]
  visibility: [UserVisibilityType!]
}
```

## UserWebpageInput

**Schema:** user

```graphql
input UserWebpageInput {
  id: Id
  type: InputWebpageType
  url: String
  visibility: [UserVisibilityType!]
}
```

---

# Mutations

Source: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/mutations
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/mutations.md
Last updated: 2026-11-06T10:11:36.615Z

## accept\_company\_documents

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
accept_company_documents(
  "Ids of the documents to accept"
  ids: [Id!]!
): BulkStatusResponse
```

## accept\_user\_documents

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
accept_user_documents(
  "Ids of the documents to accept"
  ids: [Id!]!
): BulkStatusResponse
```

## add\_company\_document\_tag

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
add_company_document_tag(
  "The document id"
  document_id: Id!
  "The tag id"
  tag_id: Id!
): StatusResponse
```

## add\_ten\_dlc\_api\_key

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcApiKey`

```graphql
add_ten_dlc_api_key(
  "TCR API Key"
  api_key: String!
  "TCR API Key Secret"
  api_key_secret: String!
  "API Key name/label"
  name: String!
): TenDlcApiKey
```

## add\_user\_document\_tag

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
add_user_document_tag(
  "The document id"
  document_id: Id!
  "The tag id"
  tag_id: Id!
): StatusResponse
```

## ask\_company\_document\_question

**Schema:** company

**Type:** Mutation

**Returns:** `DocumentAnswer`

```graphql
ask_company_document_question(
  "The natural-language question to answer from the company's documents"
  question: String!
): DocumentAnswer
```

## ask\_docs\_question

**Schema:** user, company

**Type:** Mutation

**Returns:** `DocsAnswer`

```graphql
ask_docs_question(
  "The places the caller can open. Omit to be answered from the documentation alone."
  navigation: [NavigationEntryInput!]
  "The natural-language question to answer"
  question: String!
): DocsAnswer
```

## ask\_user\_document\_question

**Schema:** user

**Type:** Mutation

**Returns:** `DocumentAnswer`

```graphql
ask_user_document_question(
  "The natural-language question to answer from the user's documents"
  question: String!
): DocumentAnswer
```

## authorize\_ten\_dlc\_api\_key

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcApiKeyAuthorization`

```graphql
authorize_ten_dlc_api_key(
  "ID of the API key to share"
  api_key_id: Uuid!
  "ID of the company that should be authorized to use the API key"
  authorized_company_id: Uuid!
): TenDlcApiKeyAuthorization
```

## complete\_onboarding\_step

**Schema:** user

**Type:** Mutation

**Returns:** `OnboardingStatus`

```graphql
complete_onboarding_step(
  "The status to set"
  status: OnboardingStepStatus!
  "The step to update"
  step: OnboardingStep!
): OnboardingStatus
```

## confirm\_document\_upload

**Schema:** user, company

**Type:** Mutation

**Returns:** `Document`

```graphql
confirm_document_upload(
  "Id returned by prepareDocumentUpload"
  id: Id!
): Document
```

## create\_b2b\_connection\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2bConnectionRequest`

```graphql
create_b2b_connection_request(
  "Type of the relationship you want to create"
  connection_type: B2bConnectionType!
  "Id of the company you want to send connection request to"
  invited_company_id: Id!
): B2bConnectionRequest
```

## create\_b2b\_form\_submission\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2bFormSubmissionRequest`

```graphql
create_b2b_form_submission_request(
  "The ID of the form"
  form_id: Id!
  "The ID of the company to request"
  submitter_id: Id!
): B2bFormSubmissionRequest
```

## create\_b2b\_invite

**Schema:** company

**Type:** Mutation

**Returns:** `B2bConnectionRequest`

```graphql
create_b2b_invite(
  "Information of the company you want to create"
  company: CompanyInput!
  "Type of the relationship you want to create"
  connection_type: B2bConnectionType!
  "Information of the representatives you want to create"
  representatives: [InviteUserInput!]!
): B2bConnectionRequest
```

## create\_b2c\_connection\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2cConnectionRequest`

```graphql
create_b2c_connection_request(
  "Type of the relationship you want to create"
  connection_type: B2cConnectionType!
  "Id of the user you want to send connection request to"
  invited_user_id: Id!
): B2cConnectionRequest
```

## create\_b2c\_form\_submission\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2cFormSubmissionRequest`

```graphql
create_b2c_form_submission_request(
  "The ID of the form"
  form_id: Id!
  "The ID of the user to request"
  submitter_id: Id!
): B2cFormSubmissionRequest
```

## create\_b2c\_invite

**Schema:** company

**Type:** Mutation

**Returns:** `B2cConnectionRequest`

```graphql
create_b2c_invite(
  "Type of the relationship you want to create"
  connection_type: B2cConnectionType!
  "Information of the user you want to create"
  user: InviteUserInput!
): B2cConnectionRequest
```

## create\_b2c\_subscription\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2cSubscriptionRequest`

```graphql
create_b2c_subscription_request(
  "Id of the user you want to send subscription request to"
  invited_user_id: Id!
  "Subscription topic IDs the request applies to. Enables picking a subset
of its topics for each request. Empty/nil means no topics attached."
  subscription_topic_ids: [Id!]
  "Type of the subscription"
  type: B2cSubscriptionType!
): B2cSubscriptionRequest
```

## create\_b2c\_subscription\_topic

**Schema:** company

**Type:** Mutation

**Returns:** `B2cSubscriptionTopic`

```graphql
create_b2c_subscription_topic(
  description: String
  enable_email: Boolean
  enable_sms: Boolean
  enable_voice: Boolean
  "Unique name of the topic"
  name: String!
  type: B2cSubscriptionTopicType
): B2cSubscriptionTopic
```

## create\_c2b\_connection\_request

**Schema:** user

**Type:** Mutation

**Returns:** `C2bConnectionRequest`

```graphql
create_c2b_connection_request(
  "Type of the relationship you want to create"
  connection_type: B2cConnectionType!
  "Id of the company you want to send connection request to"
  invited_company_id: Id!
): C2bConnectionRequest
```

## create\_c2c\_connection\_request

**Schema:** user

**Type:** Mutation

**Returns:** `C2cConnectionRequest`

```graphql
create_c2c_connection_request(
  "Type of the relationship you want to create"
  connection_type: C2cConnectionType!
  "Id of the user you want to send connection request to"
  invited_user_id: Id!
): C2cConnectionRequest
```

## create\_c2c\_invite

**Schema:** user

**Type:** Mutation

**Returns:** `C2cConnectionRequest`

```graphql
create_c2c_invite(
  "Type of the relationship you want to create"
  connection_type: C2cConnectionType!
  "Information of the user you want to create"
  user: InviteUserInput!
): C2cConnectionRequest
```

## create\_client\_secret

**Schema:** company

**Type:** Mutation

**Returns:** `ClientSecret`

```graphql
create_client_secret(
  "Human-readable description of the client secret"
  description: String
): ClientSecret
```

## create\_company

**Schema:** user

**Type:** Mutation

**Returns:** `Company`

```graphql
create_company(
  "About us of the company"
  about_us: String
  "About us visibility of the company"
  about_us_visibility: [CompanyVisibilityType!]
  "Addresses of the company"
  addresses: [CompanyAddressInput]
  "B2C relation visibility of the company"
  b2c_visibility: [CompanyVisibilityType!]
  "Brand name of the company"
  brand_name: String
  "Brand name visibility of the company"
  brand_name_visibility: [CompanyVisibilityType!]
  "Specialty ids of the company"
  company_specialties: [Id]
  "Type of the relationship to the company"
  connection_type: AdminB2cConnectionType
  "Email addresses of the company"
  emails: [CompanyEmailInput]
  "Legal name of the company"
  legal_name: String!
  "Legal name visibility of the company"
  legal_name_visibility: [CompanyVisibilityType!]
  "Logo url visibility of company"
  logo_url_visibility: [CompanyVisibilityType!]
  "Additional information"
  metadata: Json
  "Metadata visibility of the company"
  metadata_visibility: [CompanyVisibilityType!]
  "Organization type id of the company"
  organization_type_id: Id
  "Organization type visibility of the company"
  organization_type_visibility: [CompanyVisibilityType!]
  "Profile name of the company"
  profile_name: String!
  "Optionally create Client secret to take up the role of the company right away post creation"
  provision_company_client_secret: Boolean
  "Social media pages of the company"
  social_networks: [CompanySocialMediaInput]
  "Specialties visibility of the company"
  specialties_visibility: [CompanyVisibilityType!]
  "Subscription settings of the company"
  subscription_settings: CompanySubscriptionSettingsInput
  "Subscription topics of the company"
  subscription_topics: [B2cSubscriptionTopicInput]
  "Tax IDs of the company (EIN, Sales Tax, etc.)"
  tax_ids: [CompanyTaxIdInput]
  "Telephone numbers of the company"
  telephone_numbers: [CompanyTelephoneNumberInput]
  "Trusted domains of the company"
  trusted_domains: [TrustedDomainInput]
  "Vertical type id of the company"
  vertical_type_id: Id
  "Vertical type visibility of the company"
  vertical_type_visibility: [CompanyVisibilityType!]
  "Webpages of the company"
  webpages: [CompanyWebpageInput]
  "Year of foundation of the company"
  year_founded: Integer
  "Year of foundation visibility of the company"
  year_founded_visibility: [CompanyVisibilityType!]
): Company
```

## create\_company\_address

**Schema:** company

**Type:** Mutation

**Returns:** `Address`

```graphql
create_company_address(
  "City of the address"
  city: String!
  "Country of the address"
  country: String!
  "State of the address"
  state: String
  "Street of the address"
  street: String!
  "Types of the address"
  types: [CompanyAddressType!]
  "Visibility of the address"
  visibility: [CompanyVisibilityType!]
  "Zip code of the address"
  zip_code: String!
): Address
```

## create\_company\_ai\_task

**Schema:** company

**Type:** Mutation

**Returns:** `AiTask`

```graphql
create_company_ai_task(
  "The folders to watch, each covering everything beneath it; omit for a task that runs only against the documents a run names"
  folder_ids: [Id!]
  "What to call the task"
  name: String!
  "The answer's shape: names to types, where a value may be an object or a one-element list for a repeated entry"
  output_shape: Json!
  "The instructions to run against each document"
  prompt: String!
  "Watch the whole repository, whatever folders it holds now or later; folders named alongside this are dropped"
  run_on_root: Boolean
): AiTask
```

## create\_company\_client\_secret

**Schema:** user

**Type:** Mutation

**Returns:** `ClientSecret`

```graphql
create_company_client_secret(
  "Company id that the client secret belongs to"
  company_id: Id!
  "Description of the client secret"
  description: String
): ClientSecret
```

## create\_company\_email

**Schema:** company

**Type:** Mutation

**Returns:** `Email`

```graphql
create_company_email(
  "Email address"
  email: String!
  "Types of the email"
  types: [CompanyEmailType!]
  "Visibility of the email"
  visibility: [CompanyVisibilityType!]
): Email
```

## create\_company\_email\_verification\_code

**Schema:** company

**Type:** Mutation

**Returns:** `OtpData`

```graphql
create_company_email_verification_code(
  "Branding token minted by the partner company's backend; the message then names that company"
  branding_token: String
  "Id of the company email"
  email_id: Id!
): OtpData
```

## create\_company\_folder

**Schema:** company

**Type:** Mutation

**Returns:** `Folder`

```graphql
create_company_folder(
  "The folder name"
  name: String!
  "The parent folder id; omit for a folder at the repository root"
  parent_id: Id
): Folder
```

## create\_company\_invitation\_link

**Schema:** company

**Type:** Mutation

**Returns:** `InvitationLink`

```graphql
create_company_invitation_link(
  "Allow subscribing without creating a TNID account"
  allow_anonymous_subscription: Boolean
  "Allow connecting user to the inviting user's personal connections"
  allow_user_connection: Boolean
  "B2C connection type for joining users"
  b2c_connection_type: B2cConnectionType
  "C2C connection type for joining users (if allow_user_connection is true)"
  c2c_connection_type: C2cConnectionType
  "Name for the invitation link"
  name: String
  "Request email subscription for joining users"
  request_email_subscription: Boolean
  "Request SMS subscription for joining users"
  request_sms_subscription: Boolean
  "Request voice subscription for joining users"
  request_voice_subscription: Boolean
): InvitationLink
```

## create\_company\_tag

**Schema:** company

**Type:** Mutation

**Returns:** `Tag`

```graphql
create_company_tag(
  "The tag name"
  name: String!
): Tag
```

## create\_company\_telephone\_number

**Schema:** company

**Type:** Mutation

**Returns:** `TelephoneNumber`

```graphql
create_company_telephone_number(
  "Country code of the telephone number"
  country_code: String!
  "Telephone number without country code"
  number: String!
  "Additional information"
  types: [CompanyTelephoneNumberType!]
  "Visibility of the telephone number"
  visibility: [CompanyVisibilityType!]
): TelephoneNumber
```

## create\_company\_telephone\_number\_verification\_code

**Schema:** company

**Type:** Mutation

**Returns:** `OtpData`

```graphql
create_company_telephone_number_verification_code(
  "Branding token minted by the partner company's backend; the message then names that company"
  branding_token: String
  "Id of the company telephone number"
  telephone_number_id: Id!
): OtpData
```

## create\_company\_webhook

**Schema:** company

**Type:** Mutation

**Returns:** `CompanyWebhook`

```graphql
create_company_webhook(
  "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
  "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!
): CompanyWebhook
```

## create\_form

**Schema:** company

**Type:** Mutation

**Returns:** `Form`

```graphql
create_form(
  "Description of the form"
  description: String
  "Who the form is intended for"
  intended_for: [FormBuilderFormIntendedFor!]
  "Title of the form"
  title: String!
  "Visibility settings"
  visibility: [FormBuilderFormVisibility!]
): Form
```

## create\_form\_version

**Schema:** company

**Type:** Mutation

**Returns:** `FormVersion`

```graphql
create_form_version(
  "Fields for the new version"
  fields: [FormVersionFieldInput!]!
  "The ID of the form"
  form_id: Id!
  "Publish this version immediately"
  published: Boolean
): FormVersion
```

## create\_group

**Schema:** user

**Type:** Mutation

**Returns:** `Group`

```graphql
create_group(
  "Additional information"
  metadata: Json
  "Name of the group"
  name: String!
  "Visibility of the group"
  visibility: [GroupVisibilityType!]
): Group
```

## create\_group\_user\_member\_invite

**Schema:** user

**Type:** Mutation

**Returns:** `GroupUserMemberInvite`

```graphql
create_group_user_member_invite(
  "Id of the Group the user is being invited to"
  group_id: Id!
  "Id of the user you want to send the invite to"
  invited_user_id: Id!
  "Role of the user in the group"
  role: GroupRoleType!
): GroupUserMemberInvite
```

## create\_group\_user\_member\_join\_request

**Schema:** user

**Type:** Mutation

**Returns:** `GroupUserMemberJoinRequest`

```graphql
create_group_user_member_join_request(
  "Id of the Group the user wants to join"
  group_id: Id!
): GroupUserMemberJoinRequest
```

## create\_opt\_out\_request

**Schema:** company

**Type:** Mutation

**Returns:** `OptOutRequest`

```graphql
create_opt_out_request(
  "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
  "Textual part of the entire message in which opt-out is requested"
  message_body: String
  "Any additional information as stringified JSON"
  metadata: Json
  "Request origin - email, phone number, username or any other identifier from where request was sent"
  source: String!
  "Date and time when the opt-out request was initially received"
  timestamp: NaiveDatetime!
  "Type of the request you want to create"
  type: OptOutRequestType!
): OptOutRequest
```

## create\_spam\_report

**Schema:** user

**Type:** Mutation

**Returns:** `SpamReport`

```graphql
create_spam_report(
  "Channel type of the spam report you want to create"
  channel_type: SpamReportChannelType!
  "Destination of the content that the report is about"
  destination: String
  "Origin number of the content that the report is about"
  from_number: String
  "Issue type of the spam report you want to create"
  issue_type: SpamReportIssueType
  "Content of the SMS the report is about"
  message_content: String
  "Any additional information as stringified JSON"
  metadata: Json
  "Date and time of the incident"
  reported_at: NaiveDatetime
  "Source of the content that the report is about"
  source: String
  "Date and time of the incident"
  timestamp: NaiveDatetime
  "Receiver number of the content that the report is about"
  to_number: String
  "Aditional notes by the user"
  user_note: String
): SpamReport
```

## create\_support\_request

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
create_support_request(
  "The email address to reply to"
  email: String!
  "The support message"
  message: String!
): StatusResponse
```

## create\_user\_address

**Schema:** user

**Type:** Mutation

**Returns:** `Address`

```graphql
create_user_address(
  "City of the address"
  city: String!
  "Country of the address"
  country: String!
  "State of the address"
  state: String
  "Street of the address"
  street: String!
  "Types of the address"
  types: [UserAddressType!]
  "Visibility of the address"
  visibility: [UserVisibilityType!]
  "Zip code of the address"
  zip_code: String!
): Address
```

## create\_user\_ai\_task

**Schema:** user

**Type:** Mutation

**Returns:** `AiTask`

```graphql
create_user_ai_task(
  "The folders to watch, each covering everything beneath it; omit for a task that runs only against the documents a run names"
  folder_ids: [Id!]
  "What to call the task"
  name: String!
  "The answer's shape: names to types, where a value may be an object or a one-element list for a repeated entry"
  output_shape: Json!
  "The instructions to run against each document"
  prompt: String!
  "Watch the whole repository, whatever folders it holds now or later; folders named alongside this are dropped"
  run_on_root: Boolean
): AiTask
```

## create\_user\_email

**Schema:** user

**Type:** Mutation

**Returns:** `UserEmail`

```graphql
create_user_email(
  "Email address"
  email: String!
  "Types of the email"
  types: [UserEmailType!]
  "Visibility of the email"
  visibility: [UserVisibilityType!]
): UserEmail
```

## create\_user\_email\_verification\_code

**Schema:** user

**Type:** Mutation

**Returns:** `OtpData`

```graphql
create_user_email_verification_code(
  "Branding token minted by the partner company's backend; the message then names that company"
  branding_token: String
  "Id of the email"
  email_id: Id!
): OtpData
```

## create\_user\_event

**Schema:** user

Record an event about the calling user. The ledger is append-only: events cannot be changed or deleted, and a correction is recorded as a new event. Posting an external\_ref again returns the event already recorded under it, unchanged.

**Type:** Mutation

**Returns:** `UserEvent`

```graphql
create_user_event(
  "Event token minted by the partner company's backend for the calling user"
  event_token: String!
  "The poster's unique reference for the event, used to make posting idempotent"
  external_ref: String!
  "When the event happened"
  occurred_at: Datetime!
  "A JSON object with the event's data; its shape is defined by the event type"
  payload: Json!
  "The user the event is about; currently only the calling user is accepted"
  subject_user_id: Id
  "Dot-separated event type starting with the company's prefix (e.g. hoozit.order.completed)"
  type: String!
): UserEvent
```

## create\_user\_folder

**Schema:** user

**Type:** Mutation

**Returns:** `Folder`

```graphql
create_user_folder(
  "The folder name"
  name: String!
  "The parent folder id; omit for a folder at the repository root"
  parent_id: Id
): Folder
```

## create\_user\_tag

**Schema:** user

**Type:** Mutation

**Returns:** `Tag`

```graphql
create_user_tag(
  "The tag name"
  name: String!
): Tag
```

## create\_user\_telephone\_number

**Schema:** user

**Type:** Mutation

**Returns:** `UserTelephoneNumber`

```graphql
create_user_telephone_number(
  "Country code of the telephone number"
  country_code: String!
  "Telephone number without country code"
  number: String!
  "Additional information"
  types: [UserTelephoneNumberType!]
  "Visibility of the telephone number"
  visibility: [UserVisibilityType!]
): UserTelephoneNumber
```

## create\_user\_telephone\_number\_verification\_code

**Schema:** user

**Type:** Mutation

**Returns:** `OtpData`

```graphql
create_user_telephone_number_verification_code(
  "Branding token minted by the partner company's backend; the message then names that company"
  branding_token: String
  "Id of the telephone_number"
  telephone_number_id: Id!
): OtpData
```

## delete\_client\_secret

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_client_secret(
  "Id of the client secret to delete"
  id: Id!
): StatusResponse
```

## delete\_company

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_company(
  "The ID of the company to delete"
  company_id: Id!
): StatusResponse
```

## delete\_company\_ai\_task

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_company_ai_task(
  id: Id!
): StatusResponse
```

## delete\_company\_documents

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
delete_company_documents(
  "Ids of the documents to move to the trash"
  ids: [Id!]!
): BulkStatusResponse
```

## delete\_company\_folders

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
delete_company_folders(
  "Ids of the folders to delete"
  ids: [Id!]!
): BulkStatusResponse
```

## delete\_company\_invitation\_link

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_company_invitation_link(
  "The ID of the invitation link to delete"
  id: Id!
): StatusResponse
```

## delete\_company\_tag

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_company_tag(
  "The tag id"
  id: Id!
): StatusResponse
```

## delete\_form

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_form(
  "The ID of the form to delete"
  form_id: Id!
): StatusResponse
```

## delete\_ten\_dlc\_api\_key

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcApiKey`

```graphql
delete_ten_dlc_api_key(
  "API Key ID to delete"
  id: String!
): TenDlcApiKey
```

## delete\_ten\_dlc\_brand

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_ten_dlc_brand(
  "Internal brand identifier (UUID)"
  id: Id!
): StatusResponse
```

## delete\_ten\_dlc\_campaign

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_ten_dlc_campaign(
  "Internal campaign identifier (UUID)"
  id: Id!
): StatusResponse
```

## delete\_user\_ai\_task

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_user_ai_task(
  id: Id!
): StatusResponse
```

## delete\_user\_documents

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
delete_user_documents(
  "Ids of the documents to move to the trash"
  ids: [Id!]!
): BulkStatusResponse
```

## delete\_user\_folders

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
delete_user_folders(
  "Ids of the folders to delete"
  ids: [Id!]!
): BulkStatusResponse
```

## delete\_user\_tag

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
delete_user_tag(
  "The tag id"
  id: Id!
): StatusResponse
```

## empty\_company\_trash

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
empty_company_trash: BulkStatusResponse
```

## empty\_user\_trash

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
empty_user_trash: BulkStatusResponse
```

## feedback\_on\_detected\_unsubscribe

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
feedback_on_detected_unsubscribe(
  "The action, whether to unsubscribe the user or not."
  action: UnsubscribeType!
  "The ID of the external communication message that triggered the unsubscribe feedback."
  external_communication_id: String!
): StatusResponse
```

## generate\_sms\_opt\_in\_qr\_code

**Schema:** company

**Type:** Mutation

**Returns:** `SmsOptInQrCode`

```graphql
generate_sms_opt_in_qr_code(
  "Ids of topics that the the user opts into"
  subscription_topic_ids: [Id!]!
  "Opt in telephone number id that the opt in sms will be sent to"
  telephone_number_id: Id!
  "Type of contact the user opts into"
  type: SmsOptInQrCodeType!
): SmsOptInQrCode
```

## get\_ai\_company\_profile\_suggestions

**Schema:** company

**Type:** Mutation

**Returns:** `CompanyProfileSuggestions`

```graphql
get_ai_company_profile_suggestions(
  "Website URL to scrape (with or without scheme — `https://` is assumed when omitted)"
  website_url: String!
): CompanyProfileSuggestions
```

## get\_ai\_form\_suggestions\_from\_file

**Schema:** company

**Type:** Mutation

**Returns:** `FormSuggestions`

```graphql
get_ai_form_suggestions_from_file(
  "Base64 data URL of the file, e.g. `data:application/pdf;base64,...` or `data:image/png;base64,...`. Accepts PDF, PNG, JPEG, GIF, WEBP up to 10 MB (decoded)."
  file_data_url: String!
): FormSuggestions
```

## get\_ai\_form\_suggestions\_from\_url

**Schema:** company

**Type:** Mutation

**Returns:** `FormSuggestions`

```graphql
get_ai_form_suggestions_from_url(
  "URL of a page containing the form to analyze"
  url: String!
): FormSuggestions
```

## get\_ai\_rcs\_suggestions

**Schema:** company

**Type:** Mutation

**Returns:** `RcsInformationSuggestions`

```graphql
get_ai_rcs_suggestions: RcsInformationSuggestions
```

## import\_users\_from\_csv

**Schema:** company

**Type:** Mutation

**Returns:** `UserImport`

```graphql
import_users_from_csv(
  "The type of B2C connection to create for imported users (omit to skip)"
  b2c_type: B2cConnectionType
  "The type of C2C connection to create for imported users (omit to skip)"
  c2c_type: C2cConnectionType
  "The S3 file key from prepareFileUpload"
  file_key: String!
  "Internal note about this import"
  note: String
  "Request email subscription for imported users"
  request_email_subscription: Boolean
  "Request SMS subscription for imported users"
  request_sms_subscription: Boolean
  "Request voice subscription for imported users"
  request_voice_subscription: Boolean
): UserImport
```

## leave\_group

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
leave_group(
  "Id of the group you want to leave"
  group_id: Id!
): StatusResponse
```

## mark\_all\_notifications\_as\_read

**Schema:** user, company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
mark_all_notifications_as_read: StatusResponse
```

## mark\_notification\_as\_read

**Schema:** user, company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
mark_notification_as_read(
  "The ID of the notification to mark as read"
  id: Id!
): StatusResponse
```

## mark\_notifications\_as\_read

**Schema:** user, company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
mark_notifications_as_read(
  "The IDs of the notifications to mark as read"
  ids: [Id!]!
): StatusResponse
```

## move\_company\_documents

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
move_company_documents(
  "Destination folder id; omit or pass null to move to the repository root"
  folder_id: Id
  "Ids of the documents to move"
  ids: [Id!]!
): BulkStatusResponse
```

## move\_company\_folders

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
move_company_folders(
  "Ids of the folders to move"
  ids: [Id!]!
  "Destination folder id; omit or pass null to move to the repository root. A folder can't move into itself or one of its own descendants — those are skipped"
  parent_id: Id
): BulkStatusResponse
```

## move\_user\_documents

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
move_user_documents(
  "Destination folder id; omit or pass null to move to the repository root"
  folder_id: Id
  "Ids of the documents to move"
  ids: [Id!]!
): BulkStatusResponse
```

## move\_user\_folders

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
move_user_folders(
  "Ids of the folders to move"
  ids: [Id!]!
  "Destination folder id; omit or pass null to move to the repository root. A folder can't move into itself or one of its own descendants — those are skipped"
  parent_id: Id
): BulkStatusResponse
```

## permanently\_delete\_company\_documents

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
permanently_delete_company_documents(
  "Ids of the trashed documents to permanently delete"
  ids: [Id!]!
): BulkStatusResponse
```

## permanently\_delete\_user\_documents

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
permanently_delete_user_documents(
  "Ids of the trashed documents to permanently delete"
  ids: [Id!]!
): BulkStatusResponse
```

## prepare\_document\_upload

**Schema:** user, company

**Type:** Mutation

**Returns:** `DocumentUpload`

```graphql
prepare_document_upload(
  "The file size in bytes — checked against the repository size limit and the per-file limit, and pinned into the upload policy so a larger file is refused"
  byte_size: String!
  "The MIME content type of the file"
  content_type: String!
  "The original file name"
  file_name: String!
  "The folder to place the document in; omit for the repository root"
  folder_id: Id
): DocumentUpload
```

## prepare\_file\_upload

**Schema:** user, company

**Type:** Mutation

**Returns:** `FileUpload`

```graphql
prepare_file_upload(
  "The MIME content type of the file"
  content_type: String!
  "The original file name"
  file_name: String!
): FileUpload
```

## publish\_form\_version

**Schema:** company

**Type:** Mutation

**Returns:** `FormVersion`

```graphql
publish_form_version(
  "The ID of the form version"
  form_version_id: Id!
  "Whether to publish (true) or unpublish (false)"
  published: Boolean!
): FormVersion
```

## register\_and\_submit\_ten\_dlc\_brand

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcBrand`

```graphql
register_and_submit_ten_dlc_brand(
  "Brand registration parameters"
  input: TenDlcRegisterBrandInput!
): TenDlcBrand
```

## register\_and\_submit\_ten\_dlc\_campaign

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcCampaign`

```graphql
register_and_submit_ten_dlc_campaign(
  "Campaign registration parameters"
  input: TenDlcRegisterCampaignInput!
): TenDlcCampaign
```

## register\_ten\_dlc\_brand\_as\_draft

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcBrand`

```graphql
register_ten_dlc_brand_as_draft(
  "Brand registration parameters"
  input: TenDlcRegisterBrandInput!
): TenDlcBrand
```

## register\_ten\_dlc\_campaign\_when\_ready

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcCampaign`

```graphql
register_ten_dlc_campaign_when_ready(
  "Campaign registration parameters"
  input: TenDlcRegisterCampaignInput!
): TenDlcCampaign
```

## reject\_b2b\_form\_submission\_request

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
reject_b2b_form_submission_request(
  "The ID of the form submission request"
  id: Id!
): StatusResponse
```

## reject\_form\_submission\_request

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
reject_form_submission_request(
  "The ID of the form submission request"
  id: Id!
): StatusResponse
```

## remove\_b2b\_connection

**Schema:** company

**Type:** Mutation

**Returns:** `B2bConnection`

```graphql
remove_b2b_connection(
  "Id of the connection you want to remove"
  connection_id: Id!
): B2bConnection
```

## remove\_b2c\_connection

**Schema:** company

**Type:** Mutation

**Returns:** `B2cConnection`

```graphql
remove_b2c_connection(
  "Id of the connection you want to remove"
  connection_id: Id!
): B2cConnection
```

## remove\_b2c\_subscription

**Schema:** user, company

**Type:** Mutation

**Returns:** `B2cSubscription`

```graphql
remove_b2c_subscription(
  "Id of the subscription you want to remove"
  subscription_id: Id!
): B2cSubscription
```

## remove\_b2c\_subscription\_topic

**Schema:** company

**Type:** Mutation

**Returns:** `B2cSubscriptionTopic`

```graphql
remove_b2c_subscription_topic(
  "ID of the subscription topic"
  id: Id!
): B2cSubscriptionTopic
```

## remove\_c2b\_connection

**Schema:** user

**Type:** Mutation

**Returns:** `B2cConnection`

```graphql
remove_c2b_connection(
  "Id of the connection you want to remove"
  connection_id: Id!
): B2cConnection
```

## remove\_c2c\_connection

**Schema:** user

**Type:** Mutation

**Returns:** `C2cConnection`

```graphql
remove_c2c_connection(
  "Id of the connection you want to remove"
  connection_id: Id!
): C2cConnection
```

## remove\_company\_address

**Schema:** company

**Type:** Mutation

**Returns:** `Address`

```graphql
remove_company_address(
  "ID of the address"
  id: Id!
): Address
```

## remove\_company\_document\_tag

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
remove_company_document_tag(
  "The document id"
  document_id: Id!
  "The tag id"
  tag_id: Id!
): StatusResponse
```

## remove\_company\_email

**Schema:** company

**Type:** Mutation

**Returns:** `Email`

```graphql
remove_company_email(
  "ID of the email"
  id: Id!
): Email
```

## remove\_company\_telephone\_number

**Schema:** company

**Type:** Mutation

**Returns:** `TelephoneNumber`

```graphql
remove_company_telephone_number(
  "ID of the telephone number"
  id: Id!
): TelephoneNumber
```

## remove\_company\_webhook

**Schema:** company

**Type:** Mutation

**Returns:** `CompanyWebhook`

```graphql
remove_company_webhook(
  "ID of the webhook"
  id: Id!
): CompanyWebhook
```

## remove\_group\_user\_member

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
remove_group_user_member(
  "Id of the group the membership belongs to"
  group_id: Id!
  "Id of the user being removed"
  user_id: Id!
): StatusResponse
```

## remove\_user\_address

**Schema:** user

**Type:** Mutation

**Returns:** `Address`

```graphql
remove_user_address(
  "ID of the address"
  id: Id!
): Address
```

## remove\_user\_document\_tag

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
remove_user_document_tag(
  "The document id"
  document_id: Id!
  "The tag id"
  tag_id: Id!
): StatusResponse
```

## remove\_user\_email

**Schema:** user

**Type:** Mutation

**Returns:** `UserEmail`

```graphql
remove_user_email(
  "ID of the email"
  id: Id!
): UserEmail
```

## remove\_user\_telephone\_number

**Schema:** user

**Type:** Mutation

**Returns:** `UserTelephoneNumber`

```graphql
remove_user_telephone_number(
  "ID of the telephone number"
  id: Id!
): UserTelephoneNumber
```

## report\_external\_communication

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
report_external_communication(
  "Direction of the external communication, is it inbound or outbound."
  direction: CommunicationDirection!
  "External message ID"
  external_message_id: String!
  "What is the sender address of the external communication (phone number, email, username, etc.)"
  host_address: String!
  "Textual part of the external communication."
  message_body: String!
  "Additional information"
  metadata: Json
  "What is the receiver address of the external communication (phone number, email, username, etc.)"
  remote_address: String!
  "Date and time (UTC) when the external communication was sent or received"
  timestamp: NaiveDatetime!
  "Type of the external communication, e.g. SMS, MMS"
  type: CommunicationType!
): StatusResponse
```

## respond\_b2b\_connection\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2bConnectionRequest`

```graphql
respond_b2b_connection_request(
  "Id of the request you want to accept"
  request_id: Id!
  "Response to the request - accepted or rejected"
  response: ConnectionRequestResponse!
): B2bConnectionRequest
```

## respond\_b2c\_connection\_request

**Schema:** user

**Type:** Mutation

**Returns:** `B2cConnectionRequest`

```graphql
respond_b2c_connection_request(
  "Id of the request you want to accept"
  request_id: Id!
  "Response to the request - accepted or rejected"
  response: ConnectionRequestResponse!
): B2cConnectionRequest
```

## respond\_b2c\_subscription\_request

**Schema:** user

**Type:** Mutation

**Returns:** `B2cSubscriptionRequest`

```graphql
respond_b2c_subscription_request(
  "Email record to subscribe (email-channel requests). Overrides the pending record set at request creation."
  email_id: Id
  "Id of the request you want to accept"
  request_id: Id!
  "Response to the request - accepted or rejected"
  response: SubscriptionRequestResponse!
  "Telephone number record to subscribe (SMS/voice-channel requests). Overrides the pending record set at request creation."
  telephone_number_id: Id
): B2cSubscriptionRequest
```

## respond\_c2b\_connection\_request

**Schema:** company

**Type:** Mutation

**Returns:** `C2bConnectionRequest`

```graphql
respond_c2b_connection_request(
  "Id of the request you want to accept"
  request_id: Id!
  "Response to the request - accepted or rejected"
  response: ConnectionRequestResponse!
): C2bConnectionRequest
```

## respond\_c2c\_connection\_request

**Schema:** user

**Type:** Mutation

**Returns:** `C2cConnectionRequest`

```graphql
respond_c2c_connection_request(
  "Id of the request you want to accept"
  request_id: Id!
  "Response to the request - accepted or rejected"
  response: ConnectionRequestResponse!
): C2cConnectionRequest
```

## respond\_group\_user\_member\_invite

**Schema:** user

**Type:** Mutation

**Returns:** `GroupUserMemberInvite`

```graphql
respond_group_user_member_invite(
  "Id of the invite you want to respond to"
  invite_id: Id!
  "Response to the request - accepted or rejected"
  response: GroupInviteResponse!
): GroupUserMemberInvite
```

## respond\_group\_user\_member\_join\_request

**Schema:** user

**Type:** Mutation

**Returns:** `GroupUserMemberJoinRequest`

```graphql
respond_group_user_member_join_request(
  "Id of the join request you want to respond to"
  join_request_id: Id!
  "Response to the request - accepted or rejected"
  response: GroupInviteResponse!
): GroupUserMemberJoinRequest
```

## restore\_company\_documents

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
restore_company_documents(
  "Ids of the trashed documents to restore"
  ids: [Id!]!
): BulkStatusResponse
```

## restore\_user\_documents

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
restore_user_documents(
  "Ids of the trashed documents to restore"
  ids: [Id!]!
): BulkStatusResponse
```

## revoke\_b2b\_connection\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2bConnectionRequest`

```graphql
revoke_b2b_connection_request(
  "Id of the request you want to revoke"
  request_id: Id!
): B2bConnectionRequest
```

## revoke\_b2c\_connection\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2cConnectionRequest`

```graphql
revoke_b2c_connection_request(
  "Id of the request you want to revoke"
  request_id: Id!
): B2cConnectionRequest
```

## revoke\_b2c\_subscription\_request

**Schema:** company

**Type:** Mutation

**Returns:** `B2cSubscriptionRequest`

```graphql
revoke_b2c_subscription_request(
  "Id of the request you want to revoke"
  request_id: Id!
): B2cSubscriptionRequest
```

## revoke\_c2b\_connection\_request

**Schema:** user

**Type:** Mutation

**Returns:** `C2bConnectionRequest`

```graphql
revoke_c2b_connection_request(
  "Id of the request you want to revoke"
  request_id: Id!
): C2bConnectionRequest
```

## revoke\_c2c\_connection\_request

**Schema:** user

**Type:** Mutation

**Returns:** `C2cConnectionRequest`

```graphql
revoke_c2c_connection_request(
  "Id of the request you want to revoke"
  request_id: Id!
): C2cConnectionRequest
```

## revoke\_group\_user\_member\_invite

**Schema:** user

**Type:** Mutation

**Returns:** `GroupUserMemberInvite`

```graphql
revoke_group_user_member_invite(
  "Id of the invite you want to revoke"
  invite_id: Id!
): GroupUserMemberInvite
```

## revoke\_group\_user\_member\_join\_request

**Schema:** user

**Type:** Mutation

**Returns:** `GroupUserMemberJoinRequest`

```graphql
revoke_group_user_member_join_request(
  "Id of the join request you want to revoke"
  join_request_id: Id!
): GroupUserMemberJoinRequest
```

## revoke\_ten\_dlc\_api\_key\_authorization

**Schema:** company

**Type:** Mutation

**Returns:** `String`

```graphql
revoke_ten_dlc_api_key_authorization(
  "Authorization record ID to revoke"
  authorization_id: Uuid!
): String
```

## run\_company\_ai\_task

**Schema:** company

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
run_company_ai_task(
  "Documents to run against; they need not sit in the task's folders. Omitted, the run covers what the task watches — its folders and everything beneath them, or the whole repository when it runs on the root — which is nothing at all for a task that watches neither"
  ids: [Id!]
  task_id: Id!
): BulkStatusResponse
```

## run\_user\_ai\_task

**Schema:** user

**Type:** Mutation

**Returns:** `BulkStatusResponse`

```graphql
run_user_ai_task(
  "Documents to run against; they need not sit in the task's folders. Omitted, the run covers what the task watches — its folders and everything beneath them, or the whole repository when it runs on the root — which is nothing at all for a task that watches neither"
  ids: [Id!]
  task_id: Id!
): BulkStatusResponse
```

## save\_ten\_dlc\_campaign\_as\_draft

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcCampaign`

```graphql
save_ten_dlc_campaign_as_draft(
  "Campaign registration parameters"
  input: TenDlcRegisterCampaignInput!
): TenDlcCampaign
```

## set\_primary\_user\_email

**Schema:** user

**Type:** Mutation

**Returns:** `UserEmail`

```graphql
set_primary_user_email(
  "ID of the email"
  id: Id!
): UserEmail
```

## set\_primary\_user\_telephone\_number

**Schema:** user

**Type:** Mutation

**Returns:** `UserTelephoneNumber`

```graphql
set_primary_user_telephone_number(
  "ID of the telephone number"
  id: Id!
): UserTelephoneNumber
```

## setup\_invitation\_from\_token

**Schema:** user

**Type:** Mutation

**Returns:** `InvitationSetupResult`

```graphql
setup_invitation_from_token(
  "The invitation link token"
  token: String!
): InvitationSetupResult
```

## update\_and\_submit\_ten\_dlc\_brand

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcBrand`

```graphql
update_and_submit_ten_dlc_brand(
  "Internal brand identifier (UUID)"
  id: Id!
  "Brand update parameters"
  input: TenDlcUpdateBrandInput!
): TenDlcBrand
```

## update\_and\_submit\_ten\_dlc\_campaign

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcCampaign`

```graphql
update_and_submit_ten_dlc_campaign(
  "Internal campaign identifier (UUID)"
  id: Id!
  "Campaign update parameters"
  input: TenDlcUpdateCampaignInput!
): TenDlcCampaign
```

## update\_b2c\_connection\_notification\_settings

**Schema:** user

**Type:** Mutation

**Returns:** `B2cConnectionNotificationSettings`

```graphql
update_b2c_connection_notification_settings(
  "Whether to receive B2B connection request received emails"
  b2b_conn_request_received_email: Boolean
  "Whether to receive B2B connection request response emails"
  b2b_conn_request_response_email: Boolean
  "Whether to receive B2B form instance submission request received emails"
  b2b_form_instance_submission_request_received_email: Boolean
  "Whether to receive B2C connection request response emails"
  b2c_conn_request_response_email: Boolean
  "The ID of the B2C connection to update"
  b2c_connection_id: Id!
  "Whether to receive B2C subscription request response emails"
  b2c_sub_request_response_email: Boolean
  "Whether to receive C2B connection request received emails"
  c2b_conn_request_received_email: Boolean
  "Whether to receive company social network status change emails"
  company_social_network_status_change_email: Boolean
): B2cConnectionNotificationSettings
```

## update\_b2c\_subscription\_topic

**Schema:** company

**Type:** Mutation

**Returns:** `B2cSubscriptionTopic`

```graphql
update_b2c_subscription_topic(
  description: String
  enable_email: Boolean
  enable_sms: Boolean
  enable_voice: Boolean
  "ID of the subscription topic"
  id: Id!
  "Unique name of the topic"
  name: String
  type: B2cSubscriptionTopicType
): B2cSubscriptionTopic
```

## update\_client\_secret

**Schema:** company

**Type:** Mutation

**Returns:** `ClientSecret`

```graphql
update_client_secret(
  "Updated description"
  description: String!
  "Id of the client secret to update"
  id: Id!
): ClientSecret
```

## update\_company

**Schema:** company

**Type:** Mutation

**Returns:** `Company`

```graphql
update_company(
  "About us of the company"
  about_us: String
  "About us visibility of the company"
  about_us_visibility: [CompanyVisibilityType!]
  "Addresses of the company, replaces addresses as a whole."
  addresses: [CompanyAddressInput]
  "B2C relation visibility of the company"
  b2c_visibility: [CompanyVisibilityType!]
  "Brand name of the company"
  brand_name: String
  "Brand name visibility of the company"
  brand_name_visibility: [CompanyVisibilityType!]
  "Specialty ids of the company"
  company_specialties: [Id]
  "Email addresses of the company, replaces emails as a whole."
  emails: [CompanyEmailInput]
  "Legal name of the company"
  legal_name: String
  "Legal name visibility of the company"
  legal_name_visibility: [CompanyVisibilityType!]
  "Logo url of the company"
  logo_url: String
  "Logo url visibility of company"
  logo_url_visibility: [CompanyVisibilityType!]
  "Additional information"
  metadata: Json
  "Metadata visibility of the company"
  metadata_visibility: [CompanyVisibilityType!]
  "Organization type id of the company"
  organization_type_id: Id
  "Organization type visibility of the company"
  organization_type_visibility: [CompanyVisibilityType!]
  "Profile name of the company"
  profile_name: String
  "A key/value storage for private data"
  secret_storage: Json
  "Social media pages of the company, replaces social media pages as a whole."
  social_networks: [CompanySocialMediaInput]
  "Specialties visibility of the company"
  specialties_visibility: [CompanyVisibilityType!]
  "Subscription settings of the company"
  subscription_settings: CompanySubscriptionSettingsInput
  "Subscription topics of the company, subscription topics as a whole."
  subscription_topics: [B2cSubscriptionTopicInput]
  "Tax id of the company"
  tax_id: String
  "Tax id visibility of the company"
  tax_id_visibility: [CompanyVisibilityType!]
  "Tax IDs of the company (EIN, Sales Tax, etc.)"
  tax_ids: [CompanyTaxIdInput]
  "Telephone numbers of the company, replaces telephone numbers as a whole."
  telephone_numbers: [CompanyTelephoneNumberInput]
  "Trusted domains of the company"
  trusted_domains: [TrustedDomainInput]
  "Vertical type id of the company"
  vertical_type_id: Id
  "Vertical type visibility of the company"
  vertical_type_visibility: [CompanyVisibilityType!]
  "Webpages of the company, replaces webpages as a whole."
  webpages: [CompanyWebpageInput]
  "Year of foundation of the company"
  year_founded: Integer
  "Year of foundation visibility of the company"
  year_founded_visibility: [CompanyVisibilityType!]
): Company
```

## update\_company\_address

**Schema:** company

**Type:** Mutation

**Returns:** `Address`

```graphql
update_company_address(
  "City of the address"
  city: String
  "Country of the address"
  country: String
  "ID of the address"
  id: Id!
  "State of the address"
  state: String
  "Street of the address"
  street: String
  "Types of the address"
  types: [CompanyAddressType!]
  "Visibility of the address"
  visibility: [CompanyVisibilityType!]
  "Zip code of the address"
  zip_code: String
): Address
```

## update\_company\_ai\_task

**Schema:** company

**Type:** Mutation

**Returns:** `AiTask`

```graphql
update_company_ai_task(
  "Replaces the folders this task watches; omit to leave them as they are, or pass an empty list to clear them"
  folder_ids: [Id!]
  id: Id!
  name: String
  "Replaces the existing shape entirely"
  output_shape: Json
  prompt: String
  "Watch the whole repository, whatever folders it holds now or later; turning this on clears the folders"
  run_on_root: Boolean
): AiTask
```

## update\_company\_document

**Schema:** company

**Type:** Mutation

**Returns:** `Document`

```graphql
update_company_document(
  "The new file name"
  file_name: String
  "The document id"
  id: Id!
  "The new summary"
  summary: String
): Document
```

## update\_company\_email

**Schema:** company

**Type:** Mutation

**Returns:** `Email`

```graphql
update_company_email(
  "ID of the email"
  id: Id!
  "Types of the email"
  types: [CompanyEmailType!]
  "Visibility of the email"
  visibility: [CompanyVisibilityType!]
): Email
```

## update\_company\_folder

**Schema:** company

**Type:** Mutation

**Returns:** `Folder`

```graphql
update_company_folder(
  "The folder id"
  id: Id!
  "The new folder name"
  name: String
): Folder
```

## update\_company\_invitation\_link

**Schema:** company

**Type:** Mutation

**Returns:** `InvitationLink`

```graphql
update_company_invitation_link(
  "Allow subscribing without creating a TNID account"
  allow_anonymous_subscription: Boolean
  "Allow connecting user to the inviting user's personal connections"
  allow_user_connection: Boolean
  "B2C connection type for joining users"
  b2c_connection_type: B2cConnectionType
  "C2C connection type for joining users"
  c2c_connection_type: C2cConnectionType
  "The ID of the invitation link to update"
  id: Id!
  "Name for the invitation link"
  name: String
  "Request email subscription for joining users"
  request_email_subscription: Boolean
  "Request SMS subscription for joining users"
  request_sms_subscription: Boolean
  "Request voice subscription for joining users"
  request_voice_subscription: Boolean
): InvitationLink
```

## update\_company\_settings

**Schema:** company

**Type:** Mutation

**Returns:** `CompanySettings`

```graphql
update_company_settings(
  "About us visibility of the company"
  about_us_visibility: [CompanyVisibilityType!]
  "B2C relation visibility of the company"
  b2c_visibility: [CompanyVisibilityType!]
  "Brand name visibility of the company"
  brand_name_visibility: [CompanyVisibilityType!]
  "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, up to 16 KB"
  dashboard_layout: Json
  "Legal name visibility of the company"
  legal_name_visibility: [CompanyVisibilityType!]
  "Logo url visibility of company"
  logo_url_visibility: [CompanyVisibilityType!]
  "Metadata visibility of the company"
  metadata_visibility: [CompanyVisibilityType!]
  "Organization type visibility of the company"
  organization_type_visibility: [CompanyVisibilityType!]
  secret_storage: Json
  "Specialties visibility of the company"
  specialties_visibility: [CompanyVisibilityType!]
  "Subscription settings of the company"
  subscription_settings: CompanySubscriptionSettingsInput
  trusted_domains: [TrustedDomainInput]
  "Vertical type visibility of the company"
  vertical_type_visibility: [CompanyVisibilityType!]
  "Year of foundation visibility of the company"
  year_founded_visibility: [CompanyVisibilityType!]
): CompanySettings
```

## update\_company\_telephone\_number

**Schema:** company

**Type:** Mutation

**Returns:** `TelephoneNumber`

```graphql
update_company_telephone_number(
  "ID of the telephone number"
  id: Id!
  "Additional information"
  types: [CompanyTelephoneNumberType!]
  "Visibility of the telephone number"
  visibility: [CompanyVisibilityType!]
): TelephoneNumber
```

## update\_company\_webhook

**Schema:** company

**Type:** Mutation

**Returns:** `CompanyWebhook`

```graphql
update_company_webhook(
  "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
  "ID of the 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
): CompanyWebhook
```

## update\_form

**Schema:** company

**Type:** Mutation

**Returns:** `Form`

```graphql
update_form(
  "Description of the form"
  description: String
  "The ID of the form"
  form_id: Id!
  "Who the form is intended for"
  intended_for: [FormBuilderFormIntendedFor!]
  "Title of the form"
  title: String
  "Visibility settings"
  visibility: [FormBuilderFormVisibility!]
): Form
```

## update\_form\_version

**Schema:** company

**Type:** Mutation

**Returns:** `FormVersion`

```graphql
update_form_version(
  "Updated fields"
  fields: [FormVersionFieldInput!]!
  "The ID of the form"
  form_id: Id!
  "The ID of the form version to update"
  form_version_id: Id!
): FormVersion
```

## update\_group

**Schema:** user

**Type:** Mutation

**Returns:** `Group`

```graphql
update_group(
  "Id of the Group that is to be updated"
  group_id: Id!
  "Logo url of the group"
  logo_url: String
  "Additional information"
  metadata: Json
  "Name of the group"
  name: String
  "A key/value storage for private data, only accessible to group members"
  secret_storage: Json
  "Visibility of the group"
  visibility: [GroupVisibilityType!]
): Group
```

## update\_group\_notification\_settings

**Schema:** user

**Type:** Mutation

**Returns:** `GroupNotificationSettings`

```graphql
update_group_notification_settings(
  "The ID of the group user member to update settings for"
  group_user_member_id: Id!
  "Whether to receive email notifications for group user member join requests"
  group_user_member_join_request_received_email: Boolean
  "Whether to receive in-app notifications for group user member join requests"
  group_user_member_join_request_received_notification: Boolean
): GroupNotificationSettings
```

## update\_group\_user\_member\_role

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
update_group_user_member_role(
  "Id of the group the membership belongs to"
  group_id: Id!
  "New role for the membership"
  role: GroupRoleType!
  "Id of the user whose membership is being updated"
  user_id: Id!
): StatusResponse
```

## update\_notification\_settings

**Schema:** user

**Type:** Mutation

**Returns:** `UserNotificationSettings`

```graphql
update_notification_settings(
  "Receive email for company connection request received"
  b2c_conn_request_received_email: Boolean
  "Receive in-app notification for company connection request received"
  b2c_conn_request_received_notification: Boolean
  "Receive email for company form submission request received"
  b2c_form_instance_request_received_email: Boolean
  "Receive in-app notification for company form submission request received"
  b2c_form_instance_request_received_notification: Boolean
  "Receive email for company subscription request received"
  b2c_sub_request_received_email: Boolean
  "Receive in-app notification for company subscription request received"
  b2c_sub_request_received_notification: Boolean
  "Receive email for company connection request response received"
  c2b_conn_request_response_email: Boolean
  "Receive in-app notification for company connection request response received"
  c2b_conn_request_response_notification: Boolean
  "Receive email for people connection request received"
  c2c_conn_request_received_email: Boolean
  "Receive in-app notification for people connection request received"
  c2c_conn_request_received_notification: Boolean
  "Receive email for people connection request response received"
  c2c_conn_request_response_email: Boolean
  "Receive in-app notification for people connection request response received"
  c2c_conn_request_response_notification: Boolean
): UserNotificationSettings
```

## update\_ten\_dlc\_api\_key

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcApiKey`

```graphql
update_ten_dlc_api_key(
  "API Key ID to update"
  id: String!
  "Updated API Key name/label"
  name: String!
): TenDlcApiKey
```

## update\_ten\_dlc\_brand\_as\_draft

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcBrand`

```graphql
update_ten_dlc_brand_as_draft(
  "Unique brand identifier"
  id: String!
  "Brand update parameters"
  input: TenDlcUpdateBrandInput!
): TenDlcBrand
```

## update\_ten\_dlc\_campaign\_as\_draft

**Schema:** company

**Type:** Mutation

**Returns:** `TenDlcCampaign`

```graphql
update_ten_dlc_campaign_as_draft(
  "Internal campaign identifier (UUID)"
  id: Id!
  "Campaign update parameters"
  input: TenDlcUpdateCampaignInput!
): TenDlcCampaign
```

## update\_user

**Schema:** user

**Type:** Mutation

**Returns:** `User`

```graphql
update_user(
  "About me of the user"
  about_me: String
  "About me visibility of the user"
  about_me_visibility: [UserVisibilityType!]
  "Addresses of the user, replaces addresses as a whole."
  addresses: [UserAddressInput]
  "Birthdate of the user"
  birthdate: Date
  "Birthday visibility of the user"
  birthdate_visibility: [UserVisibilityType!]
  "Email addresses of the user, replaces emails as a whole."
  emails: [UserEmailInput]
  "First name of the user"
  first_name: String
  "Interests visibility of the user"
  interests_visibility: [UserVisibilityType!]
  "Last name of the user"
  last_name: String
  "Additional information"
  metadata: Json
  "Metadata visibility of the user"
  metadata_visibility: [UserVisibilityType!]
  "Middle name of the user"
  middle_name: String
  "Name visibility of the user"
  name_visibility: [UserVisibilityType!]
  "Profile image url of the user"
  profile_image_url: String
  "Profile image url visibility of the user"
  profile_image_url_visibility: [UserVisibilityType!]
  "A key/value storage for private data"
  secret_storage: Json
  "Social media pages of the user, replaces social media pages as a whole."
  social_networks: [UserSocialMediaInput]
  "Telephone numbers of the user, replaces telephone numbers as a whole."
  telephone_numbers: [UserTelephoneNumberInput!]
  "Timezone of the user"
  timezone: String
  "Timezone visibility of the user"
  timezone_visibility: [UserVisibilityType!]
  "Interest ids of the user"
  user_interests: [Id]
  "Username of the user"
  username: String
  "Webpages of the user, replaces webpages as a whole."
  webpages: [UserWebpageInput]
): User
```

## update\_user\_address

**Schema:** user

**Type:** Mutation

**Returns:** `Address`

```graphql
update_user_address(
  "City of the address"
  city: String
  "Country of the address"
  country: String
  "ID of the address"
  id: Id!
  "State of the address"
  state: String
  "Street of the address"
  street: String
  "Types of the address"
  types: [UserAddressType!]
  "Visibility of the address"
  visibility: [UserVisibilityType!]
  "Zip code of the address"
  zip_code: String
): Address
```

## update\_user\_ai\_task

**Schema:** user

**Type:** Mutation

**Returns:** `AiTask`

```graphql
update_user_ai_task(
  "Replaces the folders this task watches; omit to leave them as they are, or pass an empty list to clear them"
  folder_ids: [Id!]
  id: Id!
  name: String
  "Replaces the existing shape entirely"
  output_shape: Json
  prompt: String
  "Watch the whole repository, whatever folders it holds now or later; turning this on clears the folders"
  run_on_root: Boolean
): AiTask
```

## update\_user\_document

**Schema:** user

**Type:** Mutation

**Returns:** `Document`

```graphql
update_user_document(
  "The new file name"
  file_name: String
  "The document id"
  id: Id!
  "The new summary"
  summary: String
): Document
```

## update\_user\_email

**Schema:** user

**Type:** Mutation

**Returns:** `UserEmail`

```graphql
update_user_email(
  "ID of the email"
  id: Id!
  "Types of the email"
  types: [UserEmailType!]
  "Visibility of the email"
  visibility: [UserVisibilityType!]
): UserEmail
```

## update\_user\_folder

**Schema:** user

**Type:** Mutation

**Returns:** `Folder`

```graphql
update_user_folder(
  "The folder id"
  id: Id!
  "The new folder name"
  name: String
): Folder
```

## update\_user\_settings

**Schema:** user

**Type:** Mutation

**Returns:** `UserSettings`

```graphql
update_user_settings(
  "About me visibility of the user"
  about_me_visibility: [UserVisibilityType!]
  "Birthday visibility of the user"
  birthdate_visibility: [UserVisibilityType!]
  "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, up to 16 KB"
  dashboard_layout: Json
  "Interests visibility of the user"
  interests_visibility: [UserVisibilityType!]
  "Metadata visibility of the user"
  metadata_visibility: [UserVisibilityType!]
  "Name visibility of the user"
  name_visibility: [UserVisibilityType!]
  "Profile image url visibility of the user"
  profile_image_url_visibility: [UserVisibilityType!]
  "A key/value storage for private data"
  secret_storage: Json
  "Timezone visibility of the user"
  timezone_visibility: [UserVisibilityType!]
): UserSettings
```

## update\_user\_telephone\_number

**Schema:** user

**Type:** Mutation

**Returns:** `UserTelephoneNumber`

```graphql
update_user_telephone_number(
  "ID of the telephone number"
  id: Id!
  "Additional information"
  types: [UserTelephoneNumberType!]
  "Visibility of the telephone number"
  visibility: [UserVisibilityType!]
): UserTelephoneNumber
```

## upsert\_b2c\_subscription

**Schema:** user

**Type:** Mutation

**Returns:** `B2cSubscription`

```graphql
upsert_b2c_subscription(
  "Company ID the subscription belongs to"
  company_id: Id!
  "Email ID to use for email the subscription"
  email_id: Id
  "Date when the subscription should expire on"
  expiration_date: Date
  "End time of notifications for the subscription"
  notification_end_time: Time
  "Start time of notifications for the subscription"
  notification_start_time: Time
  "Topic IDs to subscribe to"
  subscription_topic_ids: [Id!]!
  "Telephone number ID to use for sms or voice the subscription"
  telephone_number_id: Id
  "Type of the subscription"
  type: B2cSubscriptionType!
): B2cSubscription
```

## upsert\_company\_rcs\_information

**Schema:** company

**Type:** Mutation

**Returns:** `CompanyRcsInformation`

```graphql
upsert_company_rcs_information(
  "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 (upload separately via prepareFileUpload, then pass the resulting URL here)"
  agent_logo_url: String
  "Display name of the RCS agent (max 40 characters)"
  agent_name: String
  "Region the agent will operate in"
  agent_region: String
  "Authorization contact created inline; pass when no existing contact applies (mutually exclusive with `authorization_contact_id`)"
  authorization_contact: RcsAuthorizationContactInput
  "ID of the user to list as the authorization contact for the agent registration"
  authorization_contact_id: Id
  "ISO country code where the company was incorporated"
  country_of_incorporation: String
  "Whether the agent supports rich media like images and video"
  rich_media_support: Boolean
  "Full list of actions to persist (replaces the existing list)"
  suggested_actions: [RcsSuggestedActionInput!]
  "Full list of quick replies to persist (replaces the existing list)"
  suggested_replies: [RcsSuggestedReplyInput!]
  "Welcome message shown when a user first opens a conversation (max 120 characters)"
  welcome_message: String
): CompanyRcsInformation
```

## verify\_company\_email

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
verify_company_email(
  "Verification code"
  code: String!
  "Id of the company email"
  email_id: Id!
): StatusResponse
```

## verify\_company\_telephone\_number

**Schema:** company

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
verify_company_telephone_number(
  "Verification code"
  code: String!
  "Id of the company telephone number"
  telephone_number_id: Id!
): StatusResponse
```

## verify\_user\_email

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
verify_user_email(
  "Verification code"
  code: String!
  "Id of the email"
  email_id: Id!
): StatusResponse
```

## verify\_user\_telephone\_number

**Schema:** user

**Type:** Mutation

**Returns:** `StatusResponse`

```graphql
verify_user_telephone_number(
  "Verification code"
  code: String!
  "Id of the telephone_numbe"
  telephone_number_id: Id!
): StatusResponse
```

---

# Queries

Source: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/queries
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/queries.md
Last updated: 2026-11-06T10:11:36.615Z

## ai\_task (company)

**Schema:** company

A single task of the calling company's, by id.

Backs the runs page, which is reached by link and knows only the id. Null when the id isn't theirs — a caller can't tell "someone else's" from "gone", and doesn't need to.

**Type:** Query

**Returns:** `AiTask`

```graphql
ai_task(
  id: Id!
): AiTask
```

## ai\_task (user)

**Schema:** user

A single task of the calling user's, by id.

Backs the runs page, which is reached by link and knows only the id. Null when the id isn't theirs — a caller can't tell "someone else's" from "gone", and doesn't need to.

**Type:** Query

**Returns:** `AiTask`

```graphql
ai_task(
  id: Id!
): AiTask
```

## ai\_task\_runs

**Schema:** user, company

**Type:** Query

**Returns:** `PaginatedAiTaskRuns`

```graphql
ai_task_runs(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  task_id: Id!
): PaginatedAiTaskRuns
```

## ai\_tasks

**Schema:** user, company

**Type:** Query

**Returns:** `PaginatedAiTasks`

```graphql
ai_tasks(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter to tasks that watch this folder. A task watching an ancestor covers the folder's documents without being about the folder, and is left out"
  folder_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedAiTasks
```

## b2b\_connections

**Schema:** company

**Type:** Query

**Returns:** `[B2bConnection]`

```graphql
b2b_connections(
  "Filter by excluding the type of the connection"
  excluded_type: B2bConnectionType
  "Filter by the type of the connection"
  included_type: B2bConnectionType
  "Limit number of results"
  limit: Integer
): [B2bConnection]
```

## b2c\_connection\_notification\_settings

**Schema:** user

**Type:** Query

**Returns:** `B2cConnectionNotificationSettings`

```graphql
b2c_connection_notification_settings(
  "The ID of the B2C connection"
  b2c_connection_id: Id!
): B2cConnectionNotificationSettings
```

## b2c\_connections

**Schema:** user, company

**Type:** Query

**Returns:** `[B2cConnection]`

```graphql
b2c_connections(
  "Filter by excluding the type of the connection"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection"
  included_type: B2cConnectionType
  "Limit number of results"
  limit: Integer
): [B2cConnection]
```

## b2c\_subscription\_topics

**Schema:** company

**Type:** Query

**Returns:** `[B2cSubscriptionTopic]`

```graphql
b2c_subscription_topics: [B2cSubscriptionTopic]
```

## b2c\_subscriptions

**Schema:** user, company

**Type:** Query

**Returns:** `PaginatedB2cSubscriptions`

```graphql
b2c_subscriptions(
  "Filter by the company of the subscription"
  company_id: Id
  "Cursor to get the next batch of results (null if none)"
  cursor: String
  "Filter by excluding subscriptions with the B2C subscription topic by passing the topic"
  excluded_topic: String
  "Filter by the expiration date of the subscription"
  expiration_date_after: Date
  "Filter by the expiration date of the subscription"
  expiration_date_before: Date
  "Filter by including subscriptions with the B2C subscription topic by passing the topic"
  included_topic: String
  "Limit number of results"
  limit: Integer
  "Filter by the type (channel) of the subscription"
  types: [B2cSubscriptionType!]
  "Filter by the user of the subscription"
  user_id: Id
): PaginatedB2cSubscriptions
```

## c2c\_connections

**Schema:** user

**Type:** Query

**Returns:** `[C2cConnection]`

```graphql
c2c_connections(
  "Filter by excluding the type of the connection"
  excluded_type: C2cConnectionType
  "Filter by the type of the connection"
  included_type: C2cConnectionType
  "Limit number of results"
  limit: Integer
): [C2cConnection]
```

## client\_secrets

**Schema:** company

**Type:** Query

**Returns:** `[ClientSecret!]!`

```graphql
client_secrets: [ClientSecret!]!
```

## companies

**Schema:** user, company

**Type:** Query

**Returns:** `[Company]`

```graphql
companies(
  email: String
  id: Id
  limit: Integer
  "Filter by metadata, e.g. {"key" => "value"}, only exact match is supported"
  metadata: Json
  "Filter by legal name, brand name or profile name"
  name: String
  tax_id: String
  telephone_number: String
  webpage: String
): [Company]
```

## company\_dashboard\_stats

**Schema:** company

**Type:** Query

**Returns:** `CompanyDashboardStats`

```graphql
company_dashboard_stats: CompanyDashboardStats
```

## company\_document

**Schema:** company

**Type:** Query

**Returns:** `Document`

```graphql
company_document(
  "The document id"
  id: Id!
): Document
```

## company\_documents

**Schema:** company

**Type:** Query

**Returns:** `PaginatedDocuments`

```graphql
company_documents(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Scope to a folder's contents, or with an explicit null to the repository root; omit for no folder filter"
  folder_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Filter by file name"
  search: String
  "Filter by status; defaults to accepted"
  status: DocumentStatus
  "Filter to documents carrying any of these tag ids"
  tag_ids: [Id!]
): PaginatedDocuments
```

## company\_folders

**Schema:** company

**Type:** Query

**Returns:** `FoldersPage`

```graphql
company_folders: FoldersPage
```

## company\_form

**Schema:** company

**Type:** Query

**Returns:** `Form`

```graphql
company_form(
  "The ID of the form"
  id: Id!
): Form
```

## company\_forms

**Schema:** company

**Type:** Query

**Returns:** `PaginatedForms`

```graphql
company_forms(
  "Cursor for pagination"
  cursor: String
  "Limit number of results"
  limit: Integer
): PaginatedForms
```

## company\_invitation\_links

**Schema:** company

**Type:** Query

**Returns:** `[InvitationLink]`

```graphql
company_invitation_links(
  "Limit number of results"
  limit: Integer
): [InvitationLink]
```

## company\_rcs\_information

**Schema:** company

**Type:** Query

**Returns:** `CompanyRcsInformation`

```graphql
company_rcs_information: CompanyRcsInformation
```

## company\_settings

**Schema:** company

**Type:** Query

**Returns:** `CompanySettings`

```graphql
company_settings: CompanySettings
```

## company\_tags

**Schema:** company

**Type:** Query

**Returns:** `[Tag]`

```graphql
company_tags: [Tag]
```

## company\_webhooks

**Schema:** company

**Type:** Query

**Returns:** `[CompanyWebhook]`

```graphql
company_webhooks: [CompanyWebhook]
```

## current\_company

**Schema:** company

**Type:** Query

**Returns:** `Company`

```graphql
current_company: Company
```

## current\_user

**Schema:** user

**Type:** Query

**Returns:** `User`

```graphql
current_user: User
```

## current\_user\_settings

**Schema:** user

**Type:** Query

**Returns:** `User`

```graphql
current_user_settings: User
```

## dashboard\_stats

**Schema:** user

**Type:** Query

**Returns:** `UserDashboardStats`

```graphql
dashboard_stats: UserDashboardStats
```

## document

**Schema:** user

**Type:** Query

**Returns:** `Document`

```graphql
document(
  "The document id"
  id: Id!
): Document
```

## documents

**Schema:** user

**Type:** Query

**Returns:** `PaginatedDocuments`

```graphql
documents(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Scope to a folder's contents, or with an explicit null to the repository root; omit for no folder filter"
  folder_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Filter by file name"
  search: String
  "Filter by status; defaults to accepted"
  status: DocumentStatus
  "Filter to documents carrying any of these tag ids"
  tag_ids: [Id!]
): PaginatedDocuments
```

## folders

**Schema:** user

**Type:** Query

**Returns:** `FoldersPage`

```graphql
folders: FoldersPage
```

## form\_submission

**Schema:** company

**Type:** Query

**Returns:** `FormInstance`

```graphql
form_submission(
  "The ID of the form"
  form_id: Id!
  "The ID of the form instance"
  form_instance_id: Id!
): FormInstance
```

## form\_submissions

**Schema:** company

**Type:** Query

**Returns:** `PaginatedFormSubmissions`

```graphql
form_submissions(
  "Cursor for pagination"
  cursor: String
  "The ID of the form"
  form_id: Id!
  "Limit number of results"
  limit: Integer
): PaginatedFormSubmissions
```

## global\_search

**Schema:** user, company

**Type:** Query

**Returns:** `[SearchResult!]!`

```graphql
global_search(
  "Maximum number of results per entity kind (user/company/group); defaults to 10"
  limit: Integer
  "Search term; at least 3 characters are required to return any results"
  query: String!
  "When true, include the viewer-visible subset of contact info (emails, phone numbers, addresses) on each row. Defaults to false."
  show_sensitive_data: Boolean
): [SearchResult!]!
```

## group

**Schema:** user

**Type:** Query

**Returns:** `Group`

```graphql
group(
  "Id of the group"
  id: Id!
): Group
```

## group\_notification\_settings

**Schema:** user

**Type:** Query

**Returns:** `GroupNotificationSettings`

```graphql
group_notification_settings(
  "The ID of the group user member record"
  group_user_member_id: Id!
): GroupNotificationSettings
```

## groups

**Schema:** user

**Type:** Query

**Returns:** `[Group]`

```graphql
groups(
  limit: Integer
  "Filter by metadata, e.g. {"key" => "value"}, only exact match is supported"
  metadata: Json
  "Filter by group name"
  name: String
): [Group]
```

## interests

**Schema:** user

**Type:** Query

**Returns:** `[Interest]`

```graphql
interests: [Interest]
```

## notification

**Schema:** user, company

A single notification of the current actor's, by id.

Null when the id isn't the actor's — a caller can't tell "someone else's" from "gone", and doesn't need to.

**Type:** Query

**Returns:** `Notification`

```graphql
notification(
  id: Id!
): Notification
```

## notification\_settings

**Schema:** user

**Type:** Query

**Returns:** `UserNotificationSettings`

```graphql
notification_settings: UserNotificationSettings
```

## notifications

**Schema:** user, company

**Type:** Query

**Returns:** `PaginatedNotifications`

```graphql
notifications(
  "Cursor to get the next batch of results (null if none)"
  cursor: String
  "Limit number of results"
  limit: Integer
  "Filter to only read or unread notifications"
  status: NotificationStatus
): PaginatedNotifications
```

## onboarding\_status

**Schema:** user

**Type:** Query

**Returns:** `OnboardingStatus`

```graphql
onboarding_status: OnboardingStatus
```

## opt\_out\_requests

**Schema:** company

**Type:** Query

**Returns:** `[OptOutRequest]`

```graphql
opt_out_requests(
  "Filter by the destination of the opt out request"
  destination: String
  "Filter by the external_id of the opt out request"
  external_id: String
  "Limit number of results"
  limit: Integer
  "Filter by the source of the opt out request"
  source: String
  "Filter by the status of the opt out request"
  status: OptOutRequestStatus
  "Filter by the timestamp of the opt out request"
  timestamp_after: NaiveDatetime
  "Filter by the timestamp of the opt out request"
  timestamp_before: NaiveDatetime
  "Filter by the type of the opt out request"
  type: OptOutRequestType
): [OptOutRequest]
```

## organization\_types

**Schema:** company

**Type:** Query

**Returns:** `[OrganizationType]`

```graphql
organization_types: [OrganizationType]
```

## paginated\_b2b\_connections

**Schema:** company

**Type:** Query

**Returns:** `PaginatedB2bConnections`

```graphql
paginated_b2b_connections(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter to one or more B2B connection types (any-of)"
  included_types: [B2bConnectionType!]
  "Fuzzy substring match on the other party's legal name; the calling company is never returned"
  legal_name: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2bConnections
```

## paginated\_b2c\_connections

**Schema:** user

**Type:** Query

**Returns:** `PaginatedB2cConnections`

```graphql
paginated_b2c_connections(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter to one or more B2C connection types (any-of)"
  included_types: [B2cConnectionType!]
  "Fuzzy substring match on the connected company's legal name"
  legal_name: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2cConnections
```

## paginated\_b2c\_connections\_as\_company

**Schema:** company

**Type:** Query

**Returns:** `PaginatedB2cConnections`

```graphql
paginated_b2c_connections_as_company(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter to one or more B2C connection types (any-of)"
  included_types: [B2cConnectionType!]
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Fuzzy substring match on the connected user's full name"
  user_name: String
): PaginatedB2cConnections
```

## paginated\_c2c\_connections

**Schema:** user

**Type:** Query

**Returns:** `PaginatedC2cConnections`

```graphql
paginated_c2c_connections(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter to one or more C2C connection types (any-of)"
  included_types: [C2cConnectionType!]
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Fuzzy substring match on the other party's full name; the calling user is never returned"
  user_name: String
): PaginatedC2cConnections
```

## paginated\_client\_secrets

**Schema:** company

**Type:** Query

**Returns:** `PaginatedClientSecrets`

```graphql
paginated_client_secrets(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedClientSecrets
```

## paginated\_company\_invitation\_links

**Schema:** company

**Type:** Query

**Returns:** `PaginatedInvitationLinks`

```graphql
paginated_company_invitation_links(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedInvitationLinks
```

## paginated\_form\_versions

**Schema:** company

**Type:** Query

**Returns:** `PaginatedCompanyFormVersions`

```graphql
paginated_form_versions(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "The ID of the form"
  form_id: Id!
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedCompanyFormVersions
```

## paginated\_pending\_b2b\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedB2bConnectionRequests`

```graphql
paginated_pending_b2b_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: B2bConnectionType
  "Filter by the type of the connection request"
  included_type: B2bConnectionType
  "Filter by invited company id"
  invited_company_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2bConnectionRequests
```

## paginated\_pending\_b2c\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedB2cConnectionRequests`

```graphql
paginated_pending_b2c_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2cConnectionRequests
```

## paginated\_pending\_b2c\_subscription\_requests

**Schema:** user, company

**Type:** Query

**Returns:** `PaginatedB2cSubscriptionRequests`

```graphql
paginated_pending_b2c_subscription_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2cSubscriptionRequests
```

## paginated\_pending\_c2b\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedC2bConnectionRequests`

```graphql
paginated_pending_c2b_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedC2bConnectionRequests
```

## paginated\_pending\_c2c\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedC2cConnectionRequests`

```graphql
paginated_pending_c2c_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: C2cConnectionType
  "Filter by the type of the connection request"
  included_type: C2cConnectionType
  "Filter by invited user id"
  invited_user_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedC2cConnectionRequests
```

## paginated\_pending\_group\_user\_member\_invites

**Schema:** user

**Type:** Query

**Returns:** `PaginatedGroupUserMemberInvites`

```graphql
paginated_pending_group_user_member_invites(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by group id"
  group_id: Id
  "Filter by invited user id"
  invited_user_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedGroupUserMemberInvites
```

## paginated\_pending\_group\_user\_member\_join\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedGroupUserMemberJoinRequests`

```graphql
paginated_pending_group_user_member_join_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedGroupUserMemberJoinRequests
```

## paginated\_received\_b2b\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedB2bConnectionRequests`

```graphql
paginated_received_b2b_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: B2bConnectionType
  "Filter by the type of the connection request"
  included_type: B2bConnectionType
  "Filter by inviting company id - the one that invited you"
  inviting_company_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2bConnectionRequests
```

## paginated\_received\_b2b\_form\_submission\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedReceivedB2bFormSubmissionRequests`

```graphql
paginated_received_b2b_form_submission_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by form instance status"
  form_instance_status: FormBuilderFormInstanceStatus
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Search by company name or form title"
  search_query: String
): PaginatedReceivedB2bFormSubmissionRequests
```

## paginated\_received\_b2c\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedB2cConnectionRequests`

```graphql
paginated_received_b2c_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedB2cConnectionRequests
```

## paginated\_received\_c2b\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedC2bConnectionRequests`

```graphql
paginated_received_c2b_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Filter by inviter user id"
  user_id: Id
): PaginatedC2bConnectionRequests
```

## paginated\_received\_c2c\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedC2cConnectionRequests`

```graphql
paginated_received_c2c_connection_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the type of the connection request"
  excluded_type: C2cConnectionType
  "Filter by the type of the connection request"
  included_type: C2cConnectionType
  "Filter by inviting user id - the one that invited you"
  inviting_user_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedC2cConnectionRequests
```

## paginated\_received\_form\_submission\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedReceivedB2cFormSubmissionRequests`

```graphql
paginated_received_form_submission_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by form instance status"
  form_instance_status: FormBuilderFormInstanceStatus
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Search by company name or form title"
  search_query: String
): PaginatedReceivedB2cFormSubmissionRequests
```

## paginated\_received\_group\_user\_member\_invites

**Schema:** user

**Type:** Query

**Returns:** `PaginatedGroupUserMemberInvites`

```graphql
paginated_received_group_user_member_invites(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by inviting user id - the one that invited you"
  inviting_user_id: Id
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedGroupUserMemberInvites
```

## paginated\_received\_group\_user\_member\_join\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedGroupUserMemberJoinRequests`

```graphql
paginated_received_group_user_member_join_requests(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Id of the Group"
  group_id: Id!
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedGroupUserMemberJoinRequests
```

## paginated\_sentiment\_analysis\_results

**Schema:** company

**Type:** Query

**Returns:** `PaginatedSentimentAnalysisResults`

```graphql
paginated_sentiment_analysis_results(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by host address"
  host_address: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Filter by remote address"
  remote_address: String
  "Filter by timestamp from"
  timestamp_from: NaiveDatetime
  "Filter by timestamp to"
  timestamp_to: NaiveDatetime
  "Filter by communication type"
  type: ExternalCommunicationType
): PaginatedSentimentAnalysisResults
```

## paginated\_spam\_reports

**Schema:** user

**Type:** Query

**Returns:** `PaginatedSpamReports`

```graphql
paginated_spam_reports(
  "Filter by the channel type of the spam report"
  channel_type: SpamReportChannelType
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Filter by excluding the status of the spam report"
  excluded_status: SpamReportStatus
  "Filter by the status of the spam report"
  included_status: SpamReportStatus
  "Filter by the issue type of the spam report"
  issue_type: SpamReportIssueType
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedSpamReports
```

## paginated\_user\_groups

**Schema:** user

**Type:** Query

**Returns:** `PaginatedGroupUserMembers`

```graphql
paginated_user_groups(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
): PaginatedGroupUserMembers
```

## pending\_action\_counts (company)

**Schema:** company

**Type:** Query

**Returns:** `CompanyPendingActionCounts`

```graphql
pending_action_counts: CompanyPendingActionCounts
```

## pending\_action\_counts (user)

**Schema:** user

**Type:** Query

**Returns:** `UserPendingActionCounts`

```graphql
pending_action_counts: UserPendingActionCounts
```

## pending\_b2b\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `[B2bConnectionRequest]`

```graphql
pending_b2b_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: B2bConnectionType
  "Filter by the type of the connection request"
  included_type: B2bConnectionType
  "Filter by invited company id"
  invited_company_id: Id
  "Limit number of results"
  limit: Integer
): [B2bConnectionRequest]
```

## pending\_b2c\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `[B2cConnectionRequest]`

```graphql
pending_b2c_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Filter by invited user id"
  invited_user_id: Id
  "Limit number of results"
  limit: Integer
): [B2cConnectionRequest]
```

## pending\_b2c\_subscription\_requests

**Schema:** user, company

**Type:** Query

**Returns:** `[B2cSubscriptionRequest]`

```graphql
pending_b2c_subscription_requests: [B2cSubscriptionRequest]
```

## pending\_c2b\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `[C2bConnectionRequest]`

```graphql
pending_c2b_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results"
  limit: Integer
): [C2bConnectionRequest]
```

## pending\_c2c\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `[C2cConnectionRequest]`

```graphql
pending_c2c_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: C2cConnectionType
  "Filter by the type of the connection request"
  included_type: C2cConnectionType
  "Filter by invited user id"
  invited_user_id: Id
  "Limit number of results"
  limit: Integer
): [C2cConnectionRequest]
```

## pending\_group\_user\_member\_invites

**Schema:** user

**Type:** Query

**Returns:** `[GroupUserMemberInvite]`

```graphql
pending_group_user_member_invites(
  "Filter by group id"
  group_id: Id
  "Filter by invited user id"
  invited_user_id: Id
  "Limit number of results"
  limit: Integer
): [GroupUserMemberInvite]
```

## pending\_group\_user\_member\_join\_requests

**Schema:** user

**Type:** Query

**Returns:** `[GroupUserMemberJoinRequest]`

```graphql
pending_group_user_member_join_requests(
  "Limit number of results"
  limit: Integer
): [GroupUserMemberJoinRequest]
```

## received\_b2b\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `[B2bConnectionRequest]`

```graphql
received_b2b_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: B2bConnectionType
  "Filter by the type of the connection request"
  included_type: B2bConnectionType
  "Filter by inviting company id - the one that invited you"
  inviting_company_id: Id
  "Limit number of results"
  limit: Integer
): [B2bConnectionRequest]
```

## received\_b2b\_form\_submission\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedB2bFormSubmissionRequests`

```graphql
received_b2b_form_submission_requests(
  "Filter by form instance status"
  form_instance_status: FormBuilderFormInstanceStatus
  "Limit number of results per page"
  limit: Integer
  "Page number"
  page: Integer
  "Search by company name or form title"
  search_query: String
): PaginatedB2bFormSubmissionRequests
```

## received\_b2c\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `[B2cConnectionRequest]`

```graphql
received_b2c_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results"
  limit: Integer
): [B2cConnectionRequest]
```

## received\_c2b\_connection\_requests

**Schema:** company

**Type:** Query

**Returns:** `[C2bConnectionRequest]`

```graphql
received_c2b_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: B2cConnectionType
  "Filter by the type of the connection request"
  included_type: B2cConnectionType
  "Limit number of results"
  limit: Integer
  "Filter by inviter user id"
  user_id: Id
): [C2bConnectionRequest]
```

## received\_c2c\_connection\_requests

**Schema:** user

**Type:** Query

**Returns:** `[C2cConnectionRequest]`

```graphql
received_c2c_connection_requests(
  "Filter by excluding the type of the connection request"
  excluded_type: C2cConnectionType
  "Filter by the type of the connection request"
  included_type: C2cConnectionType
  "Filter by inviting user id - the one that invited you"
  inviting_user_id: Id
  "Limit number of results"
  limit: Integer
): [C2cConnectionRequest]
```

## received\_form\_submission\_requests

**Schema:** user

**Type:** Query

**Returns:** `PaginatedB2cFormSubmissionRequests`

```graphql
received_form_submission_requests(
  "Filter by form instance status"
  form_instance_status: FormBuilderFormInstanceStatus
  "Limit number of results per page"
  limit: Integer
  "Page number"
  page: Integer
  "Search by company name or form title"
  search_query: String
): PaginatedB2cFormSubmissionRequests
```

## received\_group\_user\_member\_invites

**Schema:** user

**Type:** Query

**Returns:** `[GroupUserMemberInvite]`

```graphql
received_group_user_member_invites(
  "Filter by inviting user id - the one that invited you"
  inviting_user_id: Id
  "Limit number of results"
  limit: Integer
): [GroupUserMemberInvite]
```

## received\_group\_user\_member\_join\_requests

**Schema:** user

**Type:** Query

**Returns:** `[GroupUserMemberJoinRequest]`

```graphql
received_group_user_member_join_requests(
  "Id of the Group"
  group_id: Id!
  "Limit number of results"
  limit: Integer
): [GroupUserMemberJoinRequest]
```

## recent\_notifications

**Schema:** user, company

**Type:** Query

**Returns:** `[Notification!]!`

```graphql
recent_notifications(
  "Maximum number of records to return (default 5)"
  limit: Integer
): [Notification!]!
```

## sent\_b2b\_form\_submission\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedSentB2bFormSubmissionRequests`

```graphql
sent_b2b_form_submission_requests(
  "Cursor for pagination"
  cursor: String
  "The ID of the form"
  form_id: Id!
  "Limit number of results"
  limit: Integer
): PaginatedSentB2bFormSubmissionRequests
```

## sent\_b2c\_form\_submission\_requests

**Schema:** company

**Type:** Query

**Returns:** `PaginatedSentB2cFormSubmissionRequests`

```graphql
sent_b2c_form_submission_requests(
  "Cursor for pagination"
  cursor: String
  "The ID of the form"
  form_id: Id!
  "Limit number of results"
  limit: Integer
): PaginatedSentB2cFormSubmissionRequests
```

## sentiment\_analysis\_result

**Schema:** company

**Type:** Query

**Returns:** `SentimentAnalysisReport`

```graphql
sentiment_analysis_result(
  "The ID of the sentiment analysis report"
  id: Id!
): SentimentAnalysisReport
```

## sentiment\_analysis\_results

**Schema:** company

**Type:** Query

**Returns:** `PaginatedSentimentAnalysisReports`

```graphql
sentiment_analysis_results(
  "Filter by host address"
  host_address: String
  "Limit number of results per page"
  limit: Integer
  "Page number"
  page: Integer
  "Filter by remote address"
  remote_address: String
  "Filter by timestamp from"
  timestamp_from: NaiveDatetime
  "Filter by timestamp to"
  timestamp_to: NaiveDatetime
  "Filter by communication type"
  type: ExternalCommunicationType
): PaginatedSentimentAnalysisReports
```

## spam\_reports

**Schema:** user

**Type:** Query

**Returns:** `[SpamReport]`

```graphql
spam_reports(
  "Filter by the channel type of the spam report"
  channel_type: SpamReportChannelType
  "Filter by excluding the status of the spam report"
  excluded_status: SpamReportStatus
  "Filter by the status of the spam report"
  included_status: SpamReportStatus
  "Filter by the issue type of the spam report"
  issue_type: SpamReportIssueType
  "Limit number of results"
  limit: Integer
): [SpamReport]
```

## specialties

**Schema:** user, company

**Type:** Query

**Returns:** `[Specialty]`

```graphql
specialties: [Specialty]
```

## switchable\_companies

**Schema:** user, company

**Type:** Query

**Returns:** `[ShallowCompany]`

```graphql
switchable_companies(
  "Limit number of results (defaults to 20)"
  limit: Integer
  "Fuzzy substring match by legal name"
  search: String
): [ShallowCompany]
```

## tags

**Schema:** user

**Type:** Query

**Returns:** `[Tag]`

```graphql
tags: [Tag]
```

## ten\_dlc\_api\_key\_authorizations

**Schema:** company

**Type:** Query

**Returns:** `[TenDlcApiKeyAuthorization]`

```graphql
ten_dlc_api_key_authorizations: [TenDlcApiKeyAuthorization]
```

## ten\_dlc\_api\_keys

**Schema:** company

**Type:** Query

**Returns:** `[TenDlcApiKey]`

```graphql
ten_dlc_api_keys(
  "Filter by key type (owned or authorized), optional"
  api_key_type: TenDlcApiKeyType
): [TenDlcApiKey]
```

## ten\_dlc\_brand

**Schema:** company

**Type:** Query

**Returns:** `TenDlcBrand`

```graphql
ten_dlc_brand(
  "Internal brand identifier (UUID)"
  id: Id!
): TenDlcBrand
```

## ten\_dlc\_brands

**Schema:** company

**Type:** Query

**Returns:** `PaginatedTenDlcBrands`

```graphql
ten_dlc_brands(
  "Filter by TCR Brand ID (e.g., B123456)"
  brand_id: String
  "Filter by company_id"
  company_id: Id
  "Filter by ownership type"
  ownership_type: TenDlcOwnershipType
  "Page number"
  page: Integer
  "Page size"
  page_size: Integer
  "Filter by status"
  status: TenDlcBrandStatus
  "Filter by workflow status"
  workflow_status: TenDlcBrandWorkflowStatus
): PaginatedTenDlcBrands
```

## ten\_dlc\_campaign

**Schema:** company

**Type:** Query

**Returns:** `TenDlcCampaign`

```graphql
ten_dlc_campaign(
  "Internal campaign identifier (UUID)"
  id: Id!
): TenDlcCampaign
```

## ten\_dlc\_campaign\_with\_telephone\_numbers

**Schema:** company

**Type:** Query

**Returns:** `TenDlcCampaignWithTelephoneNumbers`

```graphql
ten_dlc_campaign_with_telephone_numbers(
  "Internal campaign identifier (UUID)"
  id: Id!
): TenDlcCampaignWithTelephoneNumbers
```

## ten\_dlc\_campaigns

**Schema:** company

**Type:** Query

**Returns:** `PaginatedTenDlcCampaigns`

```graphql
ten_dlc_campaigns(
  "Filter by TCR Brand ID (e.g., B123456)"
  brand_id: String
  "Filter by TCR Campaign ID (e.g., C123456)"
  campaign_id: String
  "Filter by company_id"
  company_id: Id
  "Filter by ownership type: direct = owned by the company, partner = shared by a partner company"
  ownership_type: TenDlcOwnershipType
  "Page number"
  page: Integer
  "Page size"
  page_size: Integer
  "Filter by status"
  status: TenDlcCampaignStatus
  "Filter by usecase"
  usecase: String
  "Filter by vertical"
  vertical: String
  "Filter by workflow status"
  workflow_status: TenDlcCampaignWorkflowStatus
): PaginatedTenDlcCampaigns
```

## unread\_notification\_count

**Schema:** user, company

**Type:** Query

**Returns:** `Integer`

```graphql
unread_notification_count: Integer
```

## user

**Schema:** user, company

**Type:** Query

**Returns:** `User`

```graphql
user(
  "The ID of the user to retrieve"
  id: Id!
): User
```

## user\_by\_username

**Schema:** user, company

**Type:** Query

**Returns:** `User`

```graphql
user_by_username(
  "The username of the user to retrieve"
  username: String!
): User
```

## user\_events

**Schema:** user

**Type:** Query

**Returns:** `PaginatedUserEvents`

```graphql
user_events(
  "Cursor for the next page; pass back `pagination_info.next_cursor` from the previous response"
  cursor: String
  "Event token minted by the partner company's backend for the calling user"
  event_token: String!
  "Limit number of results per page; defaults are applied if omitted"
  limit: Integer
  "Only events that occurred at or after this time"
  occurred_from: Datetime
  "Only events that occurred before this time"
  occurred_to: Datetime
  "Only events whose type starts with this; must start with the company's prefix (defaults to all of its events)"
  type_prefix: String
): PaginatedUserEvents
```

## user\_group\_members

**Schema:** user

**Type:** Query

**Returns:** `GroupUserMemberList`

```graphql
user_group_members(
  "Cursor to get the next batch of results (null if none)"
  cursor: String
  "The ID of the group to list members for"
  group_id: Id!
  "Number of records to return (max. 50)"
  limit: Integer
): GroupUserMemberList
```

## user\_groups

**Schema:** user

**Type:** Query

**Returns:** `[GroupUserMember]`

```graphql
user_groups(
  "Limit number of results"
  limit: Integer
): [GroupUserMember]
```

## user\_import

**Schema:** company

**Type:** Query

**Returns:** `UserImport`

```graphql
user_import(
  "The ID of the user import"
  id: Id!
): UserImport
```

## user\_imports

**Schema:** company

**Type:** Query

**Returns:** `PaginatedUserImports`

```graphql
user_imports(
  "Cursor to get the next batch of results (null if none)"
  cursor: String
  "Limit number of results"
  limit: Integer
): PaginatedUserImports
```

## users

**Schema:** user, company

**Type:** Query

**Returns:** `[User]`

```graphql
users(
  email: String
  limit: Integer
  "Filter by metadata, e.g. {"key" => "value"}, only exact match is supported"
  metadata: Json
  "Filter by username or full name"
  name: String
  telephone_number: String
): [User]
```

## vertical\_types

**Schema:** user, company

**Type:** Query

**Returns:** `[VerticalType]`

```graphql
vertical_types: [VerticalType]
```

---

# Types

Source: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/types
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/003_definitions/types.md
Last updated: 2026-11-06T10:11:36.615Z

## Address

**Schema:** user, company

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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)

```graphql
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)

```graphql
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

```graphql
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.

```graphql
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

```graphql
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.

```graphql
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

```graphql
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

```graphql
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.

```graphql
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

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

## C2bConnectionRequest

**Schema:** user, company

```graphql
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)

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
type CompanyProfileSuggestionEmail {
  "Email address"
  email: String
}
```

## CompanyProfileSuggestionSocialNetwork

**Schema:** company

A social network URL suggestion for a company profile

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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.

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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.)

```graphql
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

```graphql
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

```graphql
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

```graphql
type FoldersPage {
  records: [Folder!]!
}
```

## Form

**Schema:** user, company

A form with versions

```graphql
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

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

## FormInstance

**Schema:** user, company

A form instance — tracks submission status and data

```graphql
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

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

## FormSuggestions

**Schema:** company

Form builder suggestions generated from an uploaded file or URL screenshot

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

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

## Interest

**Schema:** user, company

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

## InvitationLink

**Schema:** company

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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

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

## OtpData

**Schema:** user, company

```graphql
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

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

## PaginatedAiTasks

**Schema:** user, company

A page of AI tasks

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

## PaginatedB2bConnectionRequests

**Schema:** company

A cursor-paginated page of B2B connection requests

```graphql
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`

```graphql
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)

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

## PaginatedB2cConnectionRequests

**Schema:** user, company

A cursor-paginated page of B2C connection requests

```graphql
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`

```graphql
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)

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

## PaginatedB2cSubscriptionRequests

**Schema:** user, company

A cursor-paginated page of B2C subscription requests

```graphql
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

```graphql
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

```graphql
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

```graphql
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`

```graphql
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

```graphql
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

```graphql
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

```graphql
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)

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

## PaginatedForms

**Schema:** company

```graphql
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

```graphql
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

```graphql
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

```graphql
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!]!
}
```

## PaginatedInvitationLinks

**Schema:** company

A cursor-paginated page of invitation links

```graphql
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

```graphql
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)

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

## PaginatedReceivedB2cFormSubmissionRequests

**Schema:** user

Paginated received B2C form submission requests (cursor-based)

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

## PaginatedSentB2bFormSubmissionRequests

**Schema:** company

Paginated sent B2B form submission requests (cursor-based)

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

## PaginatedSentB2cFormSubmissionRequests

**Schema:** company

Paginated sent B2C form submission requests (cursor-based)

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

## PaginatedSentimentAnalysisReports

**Schema:** company

Paginated sentiment analysis results (page-based)

```graphql
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)

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

## PaginatedSpamReports

**Schema:** user

A cursor-paginated page of spam reports

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

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

## RcsSuggestedReply

**Schema:** company

A persisted suggested reply for RCS messaging

```graphql
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)

```graphql
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.

```graphql
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

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

## SearchResultEmail

**Schema:** user, company

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

## SearchResultTelephoneNumber

**Schema:** user, company

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

## SentimentAnalysisReport

**Schema:** company

A sentiment analysis report for an external communication

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

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

## Tag

**Schema:** user, company

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

```graphql
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

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

## TenDlcApiKey

**Schema:** company

```graphql
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

```graphql
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

```graphql
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

```graphql
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

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

## TenDlcComplianceTelephoneNumber

**Schema:** company

```graphql
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

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

## User

**Schema:** user, company

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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

```graphql
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]
}
```

---

# Overview

Source: https://support.tsgglobal.com/docs/tnid/api-reference/static
Markdown: https://support.tsgglobal.com/docs/tnid/api-reference/static.md
Last updated: 2025-12-18T14:20:43.564Z

TNID makes creating your personal and business identity a breeze. Connect with people and companies you care about, and manage your preferences with them in one simple to use interface.

This documentation will guide you through how to set up the integration to TNID, it contains documented endpoints and examples.

The API is implemented using GraphQL, and there's 2 GraphQL servers, so use the appropriate one:

* `/user` use this one if you're a regular user, and
* `/company` use this one if you're using it as a company.

The API is hosted on these URLs:

* `api.staging.v2.tnid.com` for our staging environment, and
* `api.zero.v2.tnid.com` for our zero/prep environment.

## Getting started

To get started you'll first need a user account on TNID (currently it's invite only), once you have a regular user account, you can authenticate and start using the API.

### Getting started as a company

Once you get started as a regular user, you can register a company, you need to specify this flag: `provisionCompanyClientSecret: true`, this will ensure that the company is created with a client ID and client secret, these can then be used to authenticate as a company, once you authenticate as a company, start using the `/company` GraphQL server, for example all the requests should go to `https://api.staging.v2.tnid.com/company` if you're on STAGING or `https://api.zero.v2.tnid.com/company` if you want to use the ZERO environment.

### High level overview of authenticating

After you're registered as a user on TNID, you can start using the API in a few steps. **Note:** If you want to use it as a company, you have to have a registered company with client credentials.

#### 1.a. Get an authentication OTP token for email

If you have an account you have to send an request to get authentication and refresh tokens.

#### 1.b. Alternative - Get an authentication OTP token for telephone number

Same as above, but instead of getting the OTP delivered to your email, it'll get delivered to your telephone number.

#### 2. Log in

Once you have the OTP, you can authenticate, check the authentication docs under the *User* section.

#### 3. Authenticate as a company

Once you've registered a company with TNID which has a client ID and secret, you can authenticate as a company, check authentication docs under the *Companies* section.

## Documentation layout

This documentation is divided into the following:

* User specific API
* Company specific API
* GraphQL Definitions

Happy coding!
