Unisson integrations API

The integrations API from Unisson — 101 operation(s) for integrations.

Operations 123

GET /api/v1/integrations/slack/debug-users Debug Slack Users #
GET /api/v1/integrations/status Get Integration Status #
GET /api/v1/integrations/granola/credential Get Granola Credential #
POST /api/v1/integrations/granola/credential Import Granola Credential #
DELETE /api/v1/integrations/granola/credential Disconnect Granola Credential #
GET /api/v1/integrations/granola/folders List Granola Folders #
GET /api/v1/integrations/{provider}/connected-members List Connected Members #
GET /api/v1/integrations/github/connect Connect Github #
GET /api/v1/integrations/github/callback Github Callback #
GET /api/v1/integrations/github/repositories List Github Repositories #
DELETE /api/v1/integrations/github/disconnect Disconnect Github #
GET /api/v1/integrations/google_drive/connect Connect Google Drive #
GET /api/v1/integrations/google_drive/callback Google Drive Callback #
GET /api/v1/integrations/google_drive/search Search Drive Files #
DELETE /api/v1/integrations/google_drive/disconnect Disconnect Google Drive #
GET /api/v1/integrations/slack/connect Connect Slack #
GET /api/v1/integrations/slack/callback Slack Callback #
DELETE /api/v1/integrations/slack/disconnect Disconnect Slack #
GET /api/v1/integrations/slack/status Get Slack Status #
GET /api/v1/integrations/slack/notifications List Slack Notification Configs #
PUT /api/v1/integrations/slack/notifications/{notification_type} Upsert Slack Notification Config #
DELETE /api/v1/integrations/slack/notifications/{notification_type} Delete Slack Notification Config #
POST /api/v1/integrations/slack/notifications/{notification_type}/test Send Slack Notification Test #
POST /api/v1/integrations/slack/events Slack Events #
POST /api/v1/integrations/teams/messages Teams Messages #
GET /api/v1/integrations/teams/connect Connect Teams #
GET /api/v1/integrations/teams/status Teams Status #
DELETE /api/v1/integrations/teams/disconnect Disconnect Teams #
POST /api/v1/integrations/whatsapp/webhook Whatsapp Webhook #
POST /api/v1/integrations/email/inbound Email Inbound #
GET /api/v1/integrations/messaging-channels/status Messaging Channels Status #
GET /api/v1/integrations/messaging-channels/members Messaging Channels Members #
POST /api/v1/integrations/messaging-channels/pair Pair Messaging Channel #
DELETE /api/v1/integrations/messaging-channels/{binding_id} Unpair Messaging Channel #
POST /api/v1/integrations/pylon/connect Connect Pylon #
DELETE /api/v1/integrations/pylon/disconnect Disconnect Pylon #
POST /api/v1/integrations/pylon/webhooks/{org_slug} Pylon Webhooks #
GET /api/v1/integrations/hubspot/connect Connect Hubspot #
GET /api/v1/integrations/hubspot/callback Hubspot Callback #
DELETE /api/v1/integrations/hubspot/disconnect Disconnect Hubspot #
POST /api/v1/integrations/samsara/api-keys/import Import Samsara Api Keys #
GET /api/v1/integrations/samsara/accounts List Samsara Accounts #
GET /api/v1/integrations/samsara/accounts/{account_id} Get Samsara Account #
PATCH /api/v1/integrations/samsara/accounts/{account_id} Update Samsara Account #
DELETE /api/v1/integrations/samsara/accounts/{account_id}/keys/{key_id} Revoke Samsara Api Key #
PATCH /api/v1/integrations/samsara/accounts/{account_id}/keys/{key_id} Rename Samsara Api Key #
POST /api/v1/integrations/samsara/accounts/{account_id}/assignments Assign Samsara User Key #
DELETE /api/v1/integrations/samsara/accounts/{account_id}/assignments/{user_key_id} Revoke Samsara User Key #
GET /api/v1/integrations/samsara/users/me/keys List My Samsara Keys #
POST /api/v1/integrations/snyk/api-keys/import Import Snyk Api Keys #
GET /api/v1/integrations/snyk/accounts List Snyk Accounts #
GET /api/v1/integrations/snyk/accounts/{account_id} Get Snyk Account #
DELETE /api/v1/integrations/snyk/accounts/{account_id}/keys/{key_id} Revoke Snyk Api Key #
PATCH /api/v1/integrations/snyk/accounts/{account_id}/keys/{key_id} Rename Snyk Api Key #
POST /api/v1/integrations/snyk/accounts/{account_id}/assignments Assign Snyk User Key #
DELETE /api/v1/integrations/snyk/accounts/{account_id}/assignments/{user_key_id} Revoke Snyk User Key #
GET /api/v1/integrations/snyk/users/me/keys List My Snyk Keys #
POST /api/v1/integrations/checkout/api-keys/import Import Checkout Api Keys #
GET /api/v1/integrations/checkout/accounts List Checkout Accounts #
GET /api/v1/integrations/checkout/accounts/{account_id} Get Checkout Account #
PATCH /api/v1/integrations/checkout/accounts/{account_id} Update Checkout Account #
DELETE /api/v1/integrations/checkout/accounts/{account_id}/keys/{key_id} Revoke Checkout Api Key #
PATCH /api/v1/integrations/checkout/accounts/{account_id}/keys/{key_id} Rename Checkout Api Key #
POST /api/v1/integrations/checkout/accounts/{account_id}/assignments Assign Checkout User Key #
DELETE /api/v1/integrations/checkout/accounts/{account_id}/assignments/{user_key_id} Revoke Checkout User Key #
GET /api/v1/integrations/checkout/users/me/keys List My Checkout Keys #
POST /api/v1/integrations/razorpay/api-keys/import Import Razorpay Api Keys #
GET /api/v1/integrations/razorpay/accounts List Razorpay Accounts #
GET /api/v1/integrations/razorpay/accounts/{account_id} Get Razorpay Account #
PATCH /api/v1/integrations/razorpay/accounts/{account_id} Update Razorpay Account #
DELETE /api/v1/integrations/razorpay/accounts/{account_id}/keys/{key_id} Revoke Razorpay Api Key #
PATCH /api/v1/integrations/razorpay/accounts/{account_id}/keys/{key_id} Rename Razorpay Api Key #
POST /api/v1/integrations/razorpay/accounts/{account_id}/assignments Assign Razorpay User Key #
DELETE /api/v1/integrations/razorpay/accounts/{account_id}/assignments/{user_key_id} Revoke Razorpay User Key #
GET /api/v1/integrations/razorpay/users/me/keys List My Razorpay Keys #
POST /api/v1/integrations/grafana/connect Connect Grafana #
DELETE /api/v1/integrations/grafana/disconnect Disconnect Grafana #
GET /api/v1/integrations/grafana/dashboards List Grafana Dashboards #
GET /api/v1/integrations/grafana/alert-rules List Grafana Alert Rules #
GET /api/v1/integrations/google_drive/drive-folders List Google Drive Folders #
GET /api/v1/integrations/notion/pages List Notion Pages #
GET /api/v1/integrations/slack/channels List Slack Channels Endpoint #
POST /api/v1/integrations/grafana/webhooks/{org_slug} Grafana Webhooks #
GET /api/v1/integrations/gmail/connect Connect Gmail #
GET /api/v1/integrations/gmail/callback Gmail Callback #
DELETE /api/v1/integrations/gmail/disconnect Disconnect Gmail #
GET /api/v1/integrations/google_tag_manager/connect Connect Google Tag Manager #
GET /api/v1/integrations/google_tag_manager/callback Google Tag Manager Callback #
DELETE /api/v1/integrations/google_tag_manager/disconnect Disconnect Google Tag Manager #
GET /api/v1/integrations/google_calendar/connect Connect Google Calendar #
GET /api/v1/integrations/google_calendar/callback Google Calendar Callback #
DELETE /api/v1/integrations/google_calendar/disconnect Disconnect Google Calendar #
GET /api/v1/integrations/notion/connect Connect Notion #
GET /api/v1/integrations/notion/callback Notion Callback #
DELETE /api/v1/integrations/notion/disconnect Disconnect Notion #
GET /api/v1/integrations/adobe/credential Get Adobe Credential #
POST /api/v1/integrations/adobe/credential Import Adobe Credential #
DELETE /api/v1/integrations/adobe/credential Disconnect Adobe Credential #
GET /api/v1/integrations/scribe/credential Get Scribe Credential #
POST /api/v1/integrations/scribe/credential Import Scribe Credential #
DELETE /api/v1/integrations/scribe/credential Disconnect Scribe Credential #
GET /api/v1/integrations/tealium/credential Get Tealium Credential #
POST /api/v1/integrations/tealium/credential Import Tealium Credential #
DELETE /api/v1/integrations/tealium/credential Disconnect Tealium Credential #
GET /api/v1/integrations/shopify/credential Get Shopify Credential #
POST /api/v1/integrations/shopify/credential Import Shopify Credential #
DELETE /api/v1/integrations/shopify/credential Disconnect Shopify Credential #
POST /api/v1/integrations/productboard/api-keys/import Import Productboard Api Keys #
GET /api/v1/integrations/productboard/api-keys List Productboard Api Keys #
PATCH /api/v1/integrations/productboard/api-keys/{key_id} Rename Productboard Api Key #
DELETE /api/v1/integrations/productboard/api-keys/{key_id} Revoke Productboard Api Key #
GET /api/v1/integrations/productboard/assignments List Productboard Assignments #
POST /api/v1/integrations/productboard/assignments Assign Productboard User Key #
DELETE /api/v1/integrations/productboard/assignments/{user_key_id} Revoke Productboard User Key #
GET /api/v1/integrations/productboard/users/me/keys List My Productboard Keys #
POST /api/v1/integrations/mirakl/api-keys/import Import Mirakl Api Keys #
GET /api/v1/integrations/mirakl/api-keys List Mirakl Api Keys #
PATCH /api/v1/integrations/mirakl/api-keys/{key_id} Rename Mirakl Api Key #
DELETE /api/v1/integrations/mirakl/api-keys/{key_id} Revoke Mirakl Api Key #
GET /api/v1/integrations/mirakl/assignments List Mirakl Assignments #
POST /api/v1/integrations/mirakl/assignments Assign Mirakl User Key #
DELETE /api/v1/integrations/mirakl/assignments/{user_key_id} Revoke Mirakl User Key #
GET /api/v1/integrations/mirakl/users/me/keys List My Mirakl Keys #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/unisson-integrations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

unisson-integrations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Unisson agent-evals Integrations API
  version: 1.0.0
servers:
- url: https://api.unisson.ai
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: integrations
paths:
  /api/v1/integrations/slack/debug-users:
    get:
      tags:
      - integrations
      summary: Debug Slack Users
      description: Debug endpoint to check Slack user mappings (admin only)
      operationId: debug_slack_users_api_v1_integrations_slack_debug_users_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/status:
    get:
      tags:
      - integrations
      summary: Get Integration Status
      description: Get status of all integrations for current organization
      operationId: get_integration_status_api_v1_integrations_status_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/IntegrationStatus'
                type: array
                title: Response Get Integration Status Api V1 Integrations Status Get
      security:
      - HTTPBearer: []
  /api/v1/integrations/granola/credential:
    get:
      tags:
      - integrations
      summary: Get Granola Credential
      operationId: get_granola_credential_api_v1_integrations_granola_credential_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
    post:
      tags:
      - integrations
      summary: Import Granola Credential
      description: Validate and store the org's Granola workspace API key.
      operationId: import_granola_credential_api_v1_integrations_granola_credential_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GranolaCredentialRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
    delete:
      tags:
      - integrations
      summary: Disconnect Granola Credential
      operationId: disconnect_granola_credential_api_v1_integrations_granola_credential_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/granola/folders:
    get:
      tags:
      - integrations
      summary: List Granola Folders
      operationId: list_granola_folders_api_v1_integrations_granola_folders_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/{provider}/connected-members:
    get:
      tags:
      - integrations
      summary: List Connected Members
      description: 'List org members that have connected the given (per-user) provider.


        Used by the customer IntegrationsTab to render a "Synced by …" list

        for per-user integrations (gmail, google_calendar, …) so admins can

        see whose mailbox/calendar contributes to customer sync.


        Org-scoped providers always return at most one row (the admin who

        connected). Per-user providers return one row per connected member.'
      operationId: list_connected_members_api_v1_integrations__provider__connected_members_get
      security:
      - HTTPBearer: []
      parameters:
      - name: provider
        in: path
        required: true
        schema:
          type: string
          title: Provider
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/github/connect:
    get:
      tags:
      - integrations
      summary: Connect Github
      description: Get GitHub OAuth URL to start connection (admin only)
      operationId: connect_github_api_v1_integrations_github_connect_get
      security:
      - HTTPBearer: []
      parameters:
      - name: redirect_url
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/github/callback:
    get:
      tags:
      - integrations
      summary: Github Callback
      description: Handle GitHub OAuth callback
      operationId: github_callback_api_v1_integrations_github_callback_get
      security:
      - HTTPBearer: []
      parameters:
      - name: code
        in: query
        required: true
        schema:
          type: string
          title: Code
      - name: state
        in: query
        required: true
        schema:
          type: string
          title: State
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/github/repositories:
    get:
      tags:
      - integrations
      summary: List Github Repositories
      description: List accessible GitHub repositories
      operationId: list_github_repositories_api_v1_integrations_github_repositories_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/GitHubRepository'
                type: array
                title: Response List Github Repositories Api V1 Integrations Github Repositories Get
      security:
      - HTTPBearer: []
  /api/v1/integrations/github/disconnect:
    delete:
      tags:
      - integrations
      summary: Disconnect Github
      description: Disconnect GitHub integration
      operationId: disconnect_github_api_v1_integrations_github_disconnect_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/google_drive/connect:
    get:
      tags:
      - integrations
      summary: Connect Google Drive
      description: Get Google OAuth URL to start a Drive-only connection (admin only).
      operationId: connect_google_drive_api_v1_integrations_google_drive_connect_get
      security:
      - HTTPBearer: []
      parameters:
      - name: redirect_url
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/google_drive/callback:
    get:
      tags:
      - integrations
      summary: Google Drive Callback
      description: Handle Google Drive OAuth callback.
      operationId: google_drive_callback_api_v1_integrations_google_drive_callback_get
      security:
      - HTTPBearer: []
      parameters:
      - name: code
        in: query
        required: true
        schema:
          type: string
          title: Code
      - name: state
        in: query
        required: true
        schema:
          type: string
          title: State
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/google_drive/search:
    get:
      tags:
      - integrations
      summary: Search Drive Files
      description: 'Search files in Google Drive. Empty query returns the most-

        recently-modified ``limit`` files (search_files orders by

        modifiedTime desc). Pass ``exclude_folders=true`` to skip

        ``application/vnd.google-apps.folder`` rows — used by the customer

        document picker, where folders aren''t linkable as documents.'
      operationId: search_drive_files_api_v1_integrations_google_drive_search_get
      security:
      - HTTPBearer: []
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
          title: Query
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 25
          title: Limit
      - name: exclude_folders
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Exclude Folders
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DriveFile'
                title: Response Search Drive Files Api V1 Integrations Google Drive Search Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/google_drive/disconnect:
    delete:
      tags:
      - integrations
      summary: Disconnect Google Drive
      description: Disconnect Google Drive integration.
      operationId: disconnect_google_drive_api_v1_integrations_google_drive_disconnect_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/slack/connect:
    get:
      tags:
      - integrations
      summary: Connect Slack
      description: Get Slack OAuth URL to start connection (admin only)
      operationId: connect_slack_api_v1_integrations_slack_connect_get
      security:
      - HTTPBearer: []
      parameters:
      - name: redirect_url
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/slack/callback:
    get:
      tags:
      - integrations
      summary: Slack Callback
      description: Handle Slack OAuth callback
      operationId: slack_callback_api_v1_integrations_slack_callback_get
      security:
      - HTTPBearer: []
      parameters:
      - name: code
        in: query
        required: true
        schema:
          type: string
          title: Code
      - name: state
        in: query
        required: true
        schema:
          type: string
          title: State
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/slack/disconnect:
    delete:
      tags:
      - integrations
      summary: Disconnect Slack
      description: Disconnect Slack integration
      operationId: disconnect_slack_api_v1_integrations_slack_disconnect_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/slack/status:
    get:
      tags:
      - integrations
      summary: Get Slack Status
      description: 'Return whether Slack is connected for the org + workspace display info.


        Hydrates ``team_name`` / ``team_icon`` lazily into

        ``IntegrationToken.provider_metadata`` so subsequent pageloads don''t

        each round-trip Slack for display data.'
      operationId: get_slack_status_api_v1_integrations_slack_status_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/slack/notifications:
    get:
      tags:
      - integrations
      summary: List Slack Notification Configs
      description: Return the org's saved Slack notification configs.
      operationId: list_slack_notification_configs_api_v1_integrations_slack_notifications_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/slack/notifications/{notification_type}:
    put:
      tags:
      - integrations
      summary: Upsert Slack Notification Config
      operationId: upsert_slack_notification_config_api_v1_integrations_slack_notifications__notification_type__put
      security:
      - HTTPBearer: []
      parameters:
      - name: notification_type
        in: path
        required: true
        schema:
          type: string
          title: Notification Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SlackNotificationConfigBody'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - integrations
      summary: Delete Slack Notification Config
      operationId: delete_slack_notification_config_api_v1_integrations_slack_notifications__notification_type__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: notification_type
        in: path
        required: true
        schema:
          type: string
          title: Notification Type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/slack/notifications/{notification_type}/test:
    post:
      tags:
      - integrations
      summary: Send Slack Notification Test
      operationId: send_slack_notification_test_api_v1_integrations_slack_notifications__notification_type__test_post
      security:
      - HTTPBearer: []
      parameters:
      - name: notification_type
        in: path
        required: true
        schema:
          type: string
          title: Notification Type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/slack/events:
    post:
      tags:
      - integrations
      summary: Slack Events
      description: 'Slack Events API + interactivity endpoint (handled by Bolt).


        Bolt owns signature verification, the ``url_verification`` challenge,

        per-workspace token resolution (via the custom ``authorize`` that

        bridges to ``IntegrationToken``), and dispatch to the event / action

        / assistant listeners registered in ``app.integrations.slack_bolt_app``.

        Point both the Slack *Events* and *Interactivity* Request URLs here.'
      operationId: slack_events_api_v1_integrations_slack_events_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/teams/messages:
    post:
      tags:
      - integrations
      summary: Teams Messages
      description: 'Inbound Bot Framework endpoint (Activities). JWT auth + dispatch.


        The adapter validates the Bot-Framework JWT (the Teams analog of Slack''s

        signature check) inside ``process_activity``; we just deserialize the

        Activity and hand it to the bot''s ``on_turn``.'
      operationId: teams_messages_api_v1_integrations_teams_messages_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/teams/connect:
    get:
      tags:
      - integrations
      summary: Connect Teams
      description: 'Start the Teams connection: returns a pairing code (admin only).


        The admin installs the Unisson Teams app, then messages the bot

        ``/connect <code>``; the bot claims the code and stores the tenant link.'
      operationId: connect_teams_api_v1_integrations_teams_connect_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/teams/status:
    get:
      tags:
      - integrations
      summary: Teams Status
      operationId: teams_status_api_v1_integrations_teams_status_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/teams/disconnect:
    delete:
      tags:
      - integrations
      summary: Disconnect Teams
      operationId: disconnect_teams_api_v1_integrations_teams_disconnect_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/whatsapp/webhook:
    post:
      tags:
      - integrations
      summary: Whatsapp Webhook
      description: 'Inbound Twilio WhatsApp webhook (form-encoded). Acks immediately.


        Verifies ``X-Twilio-Signature``, dedups on ``MessageSid``, then either

        completes a pending verification (the member echoed their code) or routes the

        message to the bound member''s org. Twilio retries on a slow response, so the

        heavy turn runs in a background task.'
      operationId: whatsapp_webhook_api_v1_integrations_whatsapp_webhook_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/email/inbound:
    post:
      tags:
      - integrations
      summary: Email Inbound
      description: 'Inbound Postmark email webhook (JSON). Acks immediately.


        Verifies the shared secret, enforces DMARC, dedups on ``Message-ID``, then

        either completes a pending verification or routes the mail to the bound

        member''s org. Threads by the email''s root ``Message-ID``.'
      operationId: email_inbound_api_v1_integrations_email_inbound_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/messaging-channels/status:
    get:
      tags:
      - integrations
      summary: Messaging Channels Status
      description: 'Whether the server is configured for each channel + this org''s paired count.


        "Configured" is derived from the credentials actually needed to operate —

        there''s no separate enable flag; each provider is always registered and

        simply no-ops without these (like Slack without a token).'
      operationId: messaging_channels_status_api_v1_integrations_messaging_channels_status_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/messaging-channels/members:
    get:
      tags:
      - integrations
      summary: Messaging Channels Members
      description: Org members joined to their WhatsApp / Email bindings (admin view).
      operationId: messaging_channels_members_api_v1_integrations_messaging_channels_members_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/messaging-channels/pair:
    post:
      tags:
      - integrations
      summary: Pair Messaging Channel
      description: 'Pair a member''s phone/email; returns the verify code + instructions.


        The member must confirm by sending the code from that phone/email (so we know

        they control it) before routing activates.'
      operationId: pair_messaging_channel_api_v1_integrations_messaging_channels_pair_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MessagingPairRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/v1/integrations/messaging-channels/{binding_id}:
    delete:
      tags:
      - integrations
      summary: Unpair Messaging Channel
      operationId: unpair_messaging_channel_api_v1_integrations_messaging_channels__binding_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: binding_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Binding Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/pylon/connect:
    post:
      tags:
      - integrations
      summary: Connect Pylon
      description: 'Connect Pylon integration using API token (admin only).


        Returns the webhook URL that the customer must configure in their

        Pylon Trigger settings.'
      operationId: connect_pylon_api_v1_integrations_pylon_connect_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PylonConnectRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/v1/integrations/pylon/disconnect:
    delete:
      tags:
      - integrations
      summary: Disconnect Pylon
      description: Disconnect Pylon integration.
      operationId: disconnect_pylon_api_v1_integrations_pylon_disconnect_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/pylon/webhooks/{org_slug}:
    post:
      tags:
      - integrations
      summary: Pylon Webhooks
      description: 'Handle Pylon webhook events.


        No auth required — verified via webhook signature.

        The org_slug in the URL identifies the organization.'
      operationId: pylon_webhooks_api_v1_integrations_pylon_webhooks__org_slug__post
      security:
      - HTTPBearer: []
      parameters:
      - name: org_slug
        in: path
        required: true
        schema:
          type: string
          title: Org Slug
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/hubspot/connect:
    get:
      tags:
      - integrations
      summary: Connect Hubspot
      description: Get HubSpot OAuth URL to start connection (admin only).
      operationId: connect_hubspot_api_v1_integrations_hubspot_connect_get
      security:
      - HTTPBearer: []
      parameters:
      - name: redirect_url
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/hubspot/callback:
    get:
      tags:
      - integrations
      summary: Hubspot Callback
      description: Handle HubSpot OAuth callback.
      operationId: hubspot_callback_api_v1_integrations_hubspot_callback_get
      security:
      - HTTPBearer: []
      parameters:
      - name: code
        in: query
        required: true
        schema:
          type: string
          title: Code
      - name: state
        in: query
        required: true
        schema:
          type: string
          title: State
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/hubspot/disconnect:
    delete:
      tags:
      - integrations
      summary: Disconnect Hubspot
      description: Disconnect HubSpot integration and remove all customer configs.
      operationId: disconnect_hubspot_api_v1_integrations_hubspot_disconnect_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/samsara/api-keys/import:
    post:
      tags:
      - integrations
      summary: Import Samsara Api Keys
      description: 'Import one or many Samsara API keys (admin only).


        For each key the backend calls Samsara''s ``GET /me`` to learn the

        customer''s ``samsara_org_id`` + name, upserts ``samsara_accounts``,

        and stores the encrypted key. Returns a per-key result so the UI

        can show the success/failure for each line of the textarea

        independently.'
      operationId: import_samsara_api_keys_api_v1_integrations_samsara_api_keys_import_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportApiKeysRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/v1/integrations/samsara/accounts:
    get:
      tags:
      - integrations
      summary: List Samsara Accounts
      description: 'List every known Samsara customer org for this workspace, with

        key + assignment counts (admin only).'
      operationId: list_samsara_accounts_api_v1_integrations_samsara_accounts_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/integrations/samsara/accounts/{account_id}:
    get:
      tags:
      - integrations
      summary: Get Samsara Account
      description: Fetch one account + all its keys + all assignments (admin only).
      operationId: get_samsara_account_api_v1_integrations_samsara_accounts__account_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Account Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - integrations
      summary: Update Samsara Account
      description: 'Reassign the Unisson customer this Samsara account is linked to

        (admin only). The new customer must already exist.


        Returns 409 if the target customer is already linked to a

        different Samsara account — the

        ``uq_samsara_accounts_org_customer`` constraint enforces a 1:1

        mapping.'
      operationId: update_samsara_account_api_v1_integrations_samsara_accounts__account_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Account Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/integrations/samsara/accounts/{account_id}/keys/{key_id}:
    delete:
      tags:
      - integrations
      summary: Revoke Samsara Api Key
      description: 'Delete a Samsara API key (admin only). Cascades to any

        ``samsara_user_keys`` row

# --- truncated at 32 KB (101 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/unisson/refs/heads/main/openapi/unisson-integrations-api-openapi.yml