openapi: 3.0.3 info: title: Truto Admin Accounts Contacts API description: The Truto Admin API enables programmatic management of the Truto integration platform, including managing integrated accounts, generating link tokens for customer OAuth flows, running post-install actions, and provisioning MCP servers for AI agent access. version: 1.0.0 contact: url: https://truto.one/docs/api-reference/admin servers: - url: https://api.truto.one description: Truto API security: - bearerAuth: [] tags: - name: Contacts description: Contact records representing individuals at companies paths: /contacts: get: operationId: listContacts summary: List contacts description: List contact records from the connected CRM provider. Returns normalized contact data including name, email, phone, company, and associated account information. tags: - Contacts security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/IntegratedAccountId' - name: account_id in: query description: Filter contacts by account ID. required: false schema: type: string - name: cursor in: query description: Cursor for pagination. required: false schema: type: string - name: limit in: query description: Number of results per page (max 100). required: false schema: type: integer default: 20 maximum: 100 responses: '200': description: List of contacts. content: application/json: schema: $ref: '#/components/schemas/ContactListResponse' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createContact summary: Create contact description: Create a new contact in the connected CRM provider. tags: - Contacts security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/IntegratedAccountId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateContactRequest' responses: '201': description: Contact created. content: application/json: schema: $ref: '#/components/schemas/Contact' '401': $ref: '#/components/responses/Unauthorized' /contacts/{id}: get: operationId: getContact summary: Get contact description: Retrieve a single contact by ID. tags: - Contacts security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/IntegratedAccountId' - name: id in: path required: true schema: type: string responses: '200': description: Contact record. content: application/json: schema: $ref: '#/components/schemas/Contact' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateContact summary: Update contact description: Update a contact record in the connected CRM provider. tags: - Contacts security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/IntegratedAccountId' - name: id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateContactRequest' responses: '200': description: Updated contact record. content: application/json: schema: $ref: '#/components/schemas/Contact' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: UpdateContactRequest: type: object properties: firstName: type: string lastName: type: string email: type: string format: email phone: type: string title: type: string accountId: type: string CreateContactRequest: type: object required: - firstName - lastName properties: firstName: type: string lastName: type: string email: type: string format: email phone: type: string title: type: string accountId: type: string Contact: type: object description: A normalized contact record from the connected CRM provider. properties: id: type: string description: Unified contact identifier. remoteId: type: string description: Contact identifier in the source CRM. firstName: type: string lastName: type: string email: type: string format: email phone: type: string title: type: string description: Job title. accountId: type: string description: Identifier of the associated account (company). ownerId: type: string description: Identifier of the CRM user who owns this contact. leadSource: type: string description: How this contact was acquired. createdAt: type: string format: date-time updatedAt: type: string format: date-time ContactListResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/Contact' nextCursor: type: string Error: type: object properties: error: type: string message: type: string responses: NotFound: description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication failed or token is invalid. content: application/json: schema: $ref: '#/components/schemas/Error' parameters: IntegratedAccountId: name: integrated_account_id in: query required: true description: The ID of the integrated account (connected CRM provider instance) to query. Required for all Unified API requests. schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer description: Tenant Bearer token from the Truto dashboard.