openapi: 3.0.3 info: title: One-Time Login Applications Organizations API description: Login users using one-time login methods like magic links or OTPs. This implements a backend-to-backend integration for authentication. version: '' servers: - url: https://api.sbx.transmitsecurity.io/cis description: Sandbox environment - url: https://api.transmitsecurity.io/cis description: Production environment (US) - url: https://api.eu.transmitsecurity.io/cis description: Production environment (EU) - url: https://api.ca.transmitsecurity.io/cis description: Production environment (CA) - url: https://api.au.transmitsecurity.io/cis description: Production environment (AU) security: [] tags: - name: Organizations paths: /v1/organizations: post: operationId: createOrganization summary: Create organization description: 'Create an organization that represents your business customer or partner. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:create`, `orgs:create`.' parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiCreateOrganizationInput' responses: '201': description: '' content: application/json: schema: title: ApiCreatedResponse-createOrganization type: object required: - result description: Organization created properties: result: $ref: '#/components/schemas/ApiOrganization' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/BadRequestHttpError' '409': description: '' content: application/json: schema: $ref: '#/components/schemas/IdentifierIsTakenHttpError' security: - AdminAccessToken: [] tags: - Organizations get: operationId: getAllOrganizations summary: Get organizations description: 'Retrieve a list of all organizations. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:read`, `orgs:read`, `organizations:list`, `orgs:list`.' parameters: - name: name required: false in: query schema: type: string responses: '200': description: '' content: application/json: schema: title: ApiOkResponse-getAllOrganizations type: object required: - result description: List of organizations properties: result: type: array items: $ref: '#/components/schemas/ApiOrganization' security: - AdminAccessToken: [] tags: - Organizations /v1/organizations/{organization_id}: get: operationId: getOrganization summary: Get organization by ID description: 'Retrieve an organization by ID. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:read`, `orgs:read`.' parameters: - name: organization_id required: true in: path description: ID of the organization to retrieve schema: type: string responses: '200': description: '' content: application/json: schema: title: ApiOkResponse-getOrganization type: object required: - result description: Organization information properties: result: $ref: '#/components/schemas/ApiOrganization' '404': description: '' content: application/json: schema: $ref: '#/components/schemas/NotFoundHttpError' security: - AdminAccessToken: [] tags: - Organizations put: operationId: updateOrganization summary: Update organization description: 'Update an organization''s basic configuration. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:edit`, `orgs:edit`.' parameters: - name: organization_id required: true in: path description: ID of the organization to update schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiUpdateOrganizationInput' responses: '200': description: '' content: application/json: schema: title: ApiOkResponse-updateOrganization type: object required: - result description: Updated organization properties: result: $ref: '#/components/schemas/ApiOrganization' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/BadRequestHttpError' '404': description: '' content: application/json: schema: $ref: '#/components/schemas/NotFoundHttpError' security: - AdminAccessToken: [] tags: - Organizations delete: operationId: deleteOrganization summary: Delete organization description: 'Delete an organization. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:delete`, `orgs:delete`.' parameters: - name: organization_id required: true in: path description: The ID of the organization that should be deleted schema: type: string responses: '400': description: '' content: application/json: schema: $ref: '#/components/schemas/BadRequestHttpError' '404': description: '' content: application/json: schema: $ref: '#/components/schemas/NotFoundHttpError' security: - AdminAccessToken: [] tags: - Organizations /v1/organizations/name/{organization_name}: get: operationId: getOrganizationByName summary: Get organization by name description: 'Retrieve an organization by name. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:read`, `orgs:read`.' parameters: - name: organization_name required: true in: path description: Name of the organization to retrieve schema: type: string responses: '200': description: '' content: application/json: schema: title: ApiOkResponse-getOrganizationByName type: object required: - result description: Organization information properties: result: $ref: '#/components/schemas/ApiOrganization' '404': description: '' content: application/json: schema: $ref: '#/components/schemas/NotFoundHttpError' security: - AdminAccessToken: [] tags: - Organizations /v1/organizations/{organization_id}/apps: put: operationId: addAppsToOrganization summary: Add apps to organization description: 'Add apps to the organization so its members can access them. If the organization already has apps, this can be used to add additional ones. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:edit`, `orgs:edit`.' parameters: - name: organization_id required: true in: path description: The ID of the organization that should be updated schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiAppIds' responses: '204': description: '' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/BadRequestHttpError' '404': description: '' content: application/json: schema: $ref: '#/components/schemas/NotFoundHttpError' security: - AdminAccessToken: [] tags: - Organizations delete: operationId: removeAppsFromOrganization summary: Remove apps from organization description: 'Remove apps from the organization so its members cannot access them. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:edit`, `orgs:edit`.' parameters: - name: organization_id required: true in: path description: The ID of the organization that should be updated schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiAppIds' responses: '204': description: '' '400': description: '' content: application/json: schema: $ref: '#/components/schemas/BadRequestHttpError' '404': description: '' content: application/json: schema: $ref: '#/components/schemas/NotFoundHttpError' security: - AdminAccessToken: [] tags: - Organizations /v1/organizations/{organization_id}/logo: post: operationId: uploadLogo summary: Upload organization logo description: 'Upload the organization logo and update the logo URL in the database. This should be called from the backend, using an admin access token (generated by a management app).

**Required permissions**: `organizations:edit`, `orgs:edit`.' parameters: - name: organization_id required: true in: path description: ID of the organization to upload the logo for schema: type: string requestBody: required: true description: Logo image content: multipart/form-data: schema: $ref: '#/components/schemas/LogoUploadDto' responses: '202': description: '' security: - AdminAccessToken: [] tags: - Organizations /v1/organizations/{organization_id}/applications/{app_id}/managed-organizations: post: operationId: createManagedOrganization summary: Create managed organization description: 'Create a managed organization in context of a specific app. This should be called from the backend, using an admin access token (generated by a management app) or an organization admin access token.

**Required permissions**: `organizations:create`, `orgs:create`.' parameters: - name: organization_id required: true in: path description: The ID of the organization that creates the managed organization schema: type: string - name: app_id required: true in: path description: ID of application schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiCreateManagedOrganizationInput' responses: '201': description: '' content: application/json: schema: title: ApiCreatedResponse-createManagedOrganization type: object required: - result description: Managed organization created properties: result: $ref: '#/components/schemas/ApiOrganization' '409': description: '' content: application/json: schema: $ref: '#/components/schemas/IdentifierIsTakenHttpError' security: - AdminAccessToken: [] tags: - Organizations components: schemas: NotFoundHttpError: type: object properties: message: type: string error_code: type: number example: 404 required: - message - error_code ApiCreateOrganizationInput: type: object properties: name: type: string description: Name of the organization domain: type: string description: Domain of the organization deprecated: true domains: description: Domains of the organization type: array items: type: string app_ids: description: A list of applications the organization can access type: array items: type: string enabled: type: boolean description: Indicates if the organization is currently enabled alias_name: type: string description: Alias name of the organization required: - name - domain - domains - app_ids IdentifierIsTakenHttpError: type: object properties: message: type: string error_code: type: number ts_error_code: type: string required: - message - error_code - ts_error_code ApiOrganization: type: object properties: organization_id: type: string description: ID of the organization app_ids: description: A list of applications the organization can access type: array items: type: string name: type: string description: Name of the organization domain: type: string description: Domain of the organization deprecated: true domains: description: Domains of the organization type: array items: type: string created_at: type: number description: Date the organization was created in the tenant updated_at: type: number description: Date the organization was last updated enabled: type: boolean description: Indicates if the organization is currently enabled managed_organizations_by_app: type: object description: Mapping of app IDs to managed organization IDs assigned to this app additionalProperties: type: array items: type: string managing_organization_id: type: string description: ID of the managing organization logo_url: type: string description: The URL of the organization's logo alias_name: type: string description: Alias name of the organization required: - organization_id - app_ids - name - domain - enabled LogoUploadDto: type: object properties: logo: type: string format: binary required: - logo BadRequestHttpError: type: object properties: message: example: Bad request type: array items: type: string error_code: type: number example: 400 required: - message - error_code ApiCreateManagedOrganizationInput: type: object properties: name: type: string description: Name of the organization domain: type: string description: Domain of the organization deprecated: true domains: description: Domains of the organization type: array items: type: string enabled: type: boolean description: Indicates if the organization is currently enabled alias_name: type: string description: Alias name of the managed organization required: - name - domain - domains ApiUpdateOrganizationInput: type: object properties: name: type: string description: Name of the organization domain: type: string description: Domain of the organization deprecated: true domains: description: Domains of the organization type: array items: type: string enabled: type: boolean description: Indicates if the organization is currently enabled alias_name: type: string description: Alias name of the organization ApiAppIds: type: object properties: app_ids: description: A list of applications to add the organization to type: array items: type: string required: - app_ids securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: http UserAccessToken: type: http description: A token returned upon end-user authentication, which provides access to resources and data for the user and app for which it was generated scheme: bearer bearerFormat: JWT AdminAccessToken: type: oauth2 flows: clientCredentials: tokenUrl: /oidc/token scopes: {} description: A token generated by a management application using the [token endpoint](/openapi/token.openapi/other/getaccesstoken). It provides access to all resources for the tenant and its apps ClientAccessToken: type: oauth2 flows: clientCredentials: tokenUrl: /oidc/token scopes: {} description: A token generated by an end-user application using the [token endpoint](/openapi/token.openapi/other/getaccesstoken). It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant) OrgAdminAccessToken: type: oauth2 flows: clientCredentials: tokenUrl: /oidc/token scopes: {} description: A token returned upon B2B authentication for a user that has the organizationAdmin or organizationCreator role.