> ## Documentation Index
> Fetch the complete documentation index at: https://docs.assetinfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Exchange this session for one in another tenant the same person holds an account in.

> Carries nothing across but the person: the token names the other tenant's user row, and that row's
own roles and site access are what RLS answers to. Refuses anything that is not a live account in a
live tenant linked to this one, and says the same sentence for "no such organisation" as for "not
yours".

Applies the door rules of the tenant being entered rather than the one being left: an
SSO-only tenant is refused with SSO_REQUIRED, and a tenant that asks for a second factor answers
MFA_REQUIRED with a challenge api.verify_mfa finishes.



## OpenAPI

````yaml /api-reference/openapi.json post /rpc/switch_organization
openapi: 3.0.0
info:
  description: ''
  title: >-
    The only schema PostgREST exposes. Reads are security_invoker views; writes
    are SECURITY DEFINER functions. Rebuilt wholesale on every deploy — it holds
    no data.
  version: 12.2.3
servers:
  - url: https://app.assetinfinity.ai/api
security: []
tags:
  - name: Signing in
  - name: Profile
  - name: Assets
  - name: Asset lifecycle
  - name: Work lifecycle
  - name: Maintenance
  - name: Inventory
  - name: Inventory detail
  - name: Procurement
  - name: Contracts
  - name: Workforce
  - name: Capacity
  - name: Dispatch
  - name: Tools
  - name: Inspections
  - name: Verification
  - name: Reliability
  - name: Parts demand
  - name: Sensors and meters
  - name: Map
  - name: Floor plans
  - name: Labels
  - name: Lost and found
  - name: Root cause analysis
  - name: Reports
  - name: Audit center
  - name: Activity
  - name: Notifications
  - name: Channels
  - name: Search
  - name: Copilot
  - name: Import
  - name: Files
  - name: Sync
  - name: Support
  - name: Admin
  - name: Access
  - name: Lookups
  - name: Read models
  - name: Branding
  - name: Custom fields
  - name: Form studio
  - name: Workflows
  - name: Workflow studio
  - name: Rules
  - name: Statuses and transitions
  - name: Currencies and locales
  - name: Work configuration
  - name: Asset configuration
  - name: Inventory configuration
  - name: Tool configuration
  - name: Workforce configuration
  - name: Vendor and contract configuration
  - name: Document configuration
  - name: Inspection configuration
  - name: Sites, locations and the organisation
  - name: Platform
  - name: Amendments
  - name: Asset clone
  - name: Asset components
  - name: Asset register
  - name: Asset transfer
  - name: Audit feed
  - name: Billing
  - name: Bookings
  - name: Budgets
  - name: Bulk jobs
  - name: Calibration history
  - name: Capex plans
  - name: Conversations
  - name: Costing
  - name: Currency
  - name: Dashboards
  - name: Directory sync
  - name: Document control
  - name: Document folders
  - name: Document tree
  - name: Documents
  - name: Energy
  - name: Extracts
  - name: Features
  - name: Feeds
  - name: File exchange
  - name: Filing exceptions
  - name: Finance
  - name: Inbound mail
  - name: Keys
  - name: Knowledge
  - name: Licence
  - name: List views
  - name: Locations
  - name: Mapping
  - name: Mcp
  - name: Mcp oauth
  - name: Mfa
  - name: Numbering
  - name: Permits
  - name: Readers
  - name: Reference
  - name: Reference columns
  - name: Reference entry
  - name: Release
  - name: Scim
  - name: Security streams
  - name: Self verification
  - name: Setup
  - name: Shutdown
  - name: Sso
  - name: Telegram
  - name: Tenant switch
  - name: The caller's own work
  - name: The checklist library
  - name: Tools on a job, and who has them out
  - name: Tray
  - name: Vendor spend forecast
  - name: Vendors and contracts
  - name: Visitors
  - name: Work order execution
  - name: Work sequencing
  - name: Workforce detail
externalDocs:
  description: PostgREST Documentation
  url: https://postgrest.org/en/v12/references/api.html
paths:
  /rpc/switch_organization:
    post:
      tags:
        - Tenant switch
      summary: >-
        Exchange this session for one in another tenant the same person holds an
        account in.
      description: >-
        Carries nothing across but the person: the token names the other
        tenant's user row, and that row's

        own roles and site access are what RLS answers to. Refuses anything that
        is not a live account in a

        live tenant linked to this one, and says the same sentence for "no such
        organisation" as for "not

        yours".


        Applies the door rules of the tenant being entered rather than the one
        being left: an

        SSO-only tenant is refused with SSO_REQUIRED, and a tenant that asks for
        a second factor answers

        MFA_REQUIRED with a challenge api.verify_mfa finishes.
      parameters:
        - $ref: '#/components/parameters/preferParams'
      requestBody:
        content:
          application/json:
            schema:
              description: >-
                Exchange this session for one in another tenant the same person
                holds an account in.


                Carries nothing across but the person: the token names the other
                tenant's user row, and that row's

                own roles and site access are what RLS answers to. Refuses
                anything that is not a live account in a

                live tenant linked to this one, and says the same sentence for
                "no such organisation" as for "not

                yours".


                Applies the door rules of the tenant being entered rather than
                the one being left: an

                SSO-only tenant is refused with SSO_REQUIRED, and a tenant that
                asks for a second factor answers

                MFA_REQUIRED with a challenge api.verify_mfa finishes.
              properties:
                p_device_identifier:
                  format: text
                  type: string
                p_organization_id:
                  format: uuid
                  type: string
                p_platform:
                  format: text
                  type: string
              required:
                - p_organization_id
              type: object
          application/vnd.pgrst.object+json:
            schema:
              description: >-
                Exchange this session for one in another tenant the same person
                holds an account in.


                Carries nothing across but the person: the token names the other
                tenant's user row, and that row's

                own roles and site access are what RLS answers to. Refuses
                anything that is not a live account in a

                live tenant linked to this one, and says the same sentence for
                "no such organisation" as for "not

                yours".


                Applies the door rules of the tenant being entered rather than
                the one being left: an

                SSO-only tenant is refused with SSO_REQUIRED, and a tenant that
                asks for a second factor answers

                MFA_REQUIRED with a challenge api.verify_mfa finishes.
              properties:
                p_device_identifier:
                  format: text
                  type: string
                p_organization_id:
                  format: uuid
                  type: string
                p_platform:
                  format: text
                  type: string
              required:
                - p_organization_id
              type: object
          application/vnd.pgrst.object+json;nulls=stripped:
            schema:
              description: >-
                Exchange this session for one in another tenant the same person
                holds an account in.


                Carries nothing across but the person: the token names the other
                tenant's user row, and that row's

                own roles and site access are what RLS answers to. Refuses
                anything that is not a live account in a

                live tenant linked to this one, and says the same sentence for
                "no such organisation" as for "not

                yours".


                Applies the door rules of the tenant being entered rather than
                the one being left: an

                SSO-only tenant is refused with SSO_REQUIRED, and a tenant that
                asks for a second factor answers

                MFA_REQUIRED with a challenge api.verify_mfa finishes.
              properties:
                p_device_identifier:
                  format: text
                  type: string
                p_organization_id:
                  format: uuid
                  type: string
                p_platform:
                  format: text
                  type: string
              required:
                - p_organization_id
              type: object
          text/csv:
            schema:
              description: >-
                Exchange this session for one in another tenant the same person
                holds an account in.


                Carries nothing across but the person: the token names the other
                tenant's user row, and that row's

                own roles and site access are what RLS answers to. Refuses
                anything that is not a live account in a

                live tenant linked to this one, and says the same sentence for
                "no such organisation" as for "not

                yours".


                Applies the door rules of the tenant being entered rather than
                the one being left: an

                SSO-only tenant is refused with SSO_REQUIRED, and a tenant that
                asks for a second factor answers

                MFA_REQUIRED with a challenge api.verify_mfa finishes.
              properties:
                p_device_identifier:
                  format: text
                  type: string
                p_organization_id:
                  format: uuid
                  type: string
                p_platform:
                  format: text
                  type: string
              required:
                - p_organization_id
              type: object
        required: true
      responses:
        '200':
          description: OK
components:
  parameters:
    preferParams:
      description: Preference
      in: header
      name: Prefer
      required: false
      schema:
        enum:
          - params=single-object
        type: string

````