Braintrust Organizations API
The Organizations API from Braintrust — 3 operation(s) for organizations.
The Organizations API from Braintrust — 3 operation(s) for organizations.
openapi: 3.1.1
info:
version: 1.0.0
title: Braintrust Acls Organizations API
description: 'API specification for the backend data server. The API is hosted globally at
https://api.braintrust.dev or in your own environment.
You can access the OpenAPI spec for this API at https://github.com/braintrustdata/braintrust-openapi.'
license:
name: Apache 2.0
servers:
- url: https://api.braintrust.dev
security:
- bearerAuth: []
- {}
tags:
- name: Organizations
paths:
/v1/organization:
get:
operationId: getOrganization
tags:
- Organizations
description: List out all organizations. The organizations are sorted by creation date, with the most recently-created organizations coming first
summary: List organizations
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/AppLimitParam'
- $ref: '#/components/parameters/StartingAfter'
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/Ids'
- $ref: '#/components/parameters/OrgName'
responses:
'200':
description: Returns a list of organization objects
content:
application/json:
schema:
type: object
properties:
objects:
type: array
items:
$ref: '#/components/schemas/Organization'
description: A list of organization objects
required:
- objects
additionalProperties: false
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
/v1/organization/{organization_id}:
get:
operationId: getOrganizationId
tags:
- Organizations
description: Get an organization object by its id
summary: Get organization
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/OrganizationIdParam'
responses:
'200':
description: Returns the organization object
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
patch:
operationId: patchOrganizationId
tags:
- Organizations
description: Partially update an organization object. Specify the fields to update in the payload. Any object-type fields will be deep-merged with existing content. Currently we do not support removing fields or setting them to null.
summary: Partially update organization
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/OrganizationIdParam'
requestBody:
description: Fields to update
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/PatchOrganization'
responses:
'200':
description: Returns the organization object
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
/v1/organization/members:
patch:
operationId: patchOrganizationMembers
tags:
- Organizations
description: 'Modify organization membership.
Organization owners can use this endpoint to create service accounts, but service tokens for those accounts must be created in the Braintrust UI, at [**Settings > Service tokens**](https://www.braintrust.dev/app/~/configuration/org/service-tokens).'
summary: Modify organization membership
security:
- bearerAuth: []
- {}
requestBody:
description: Members to add/remove
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/PatchOrganizationMembers'
responses:
'200':
description: A success status
content:
application/json:
schema:
$ref: '#/components/schemas/PatchOrganizationMembersOutput'
'400':
description: The request was unacceptable, often due to missing a required parameter
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'401':
description: No valid API key provided
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'403':
description: The API key doesn’t have permissions to perform the request
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'429':
description: Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
headers:
Retry-After:
schema:
type: string
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
'500':
description: Something went wrong on Braintrust's end. (These are rare.)
content:
text/plain:
schema:
type: string
application/json:
schema:
nullable: true
components:
schemas:
PatchOrganizationMembers:
type: object
properties:
invite_users:
type: object
nullable: true
properties:
ids:
type: array
nullable: true
items:
type: string
format: uuid
description: Unique identifier for the user
description: Ids of existing users to invite
emails:
type: array
nullable: true
items:
type: string
description: Emails of users to invite
service_accounts:
type: array
nullable: true
items:
type: object
properties:
name:
type: string
token_name:
type: string
nullable: true
description: Omit this field and create the token in the Braintrust UI ([**Settings > Service tokens**](https://www.braintrust.dev/app/~/configuration/org/service-tokens)). If you include this field, the API call will return a 403.
required:
- name
description: Service accounts to create. Users with organization-owner permissions can create service accounts via the API, but the service tokens required to authenticate those accounts must be created in the Braintrust UI.
send_invite_emails:
type: boolean
nullable: true
description: If true, send invite emails to the users who wore actually added
group_ids:
type: array
nullable: true
items:
type: string
format: uuid
description: Unique identifier for the group
description: Optional list of group ids to add newly-invited users to.
group_names:
type: array
nullable: true
items:
type: string
description: Name of the group
description: Optional list of group names to add newly-invited users to.
group_id:
type: string
nullable: true
format: uuid
description: Singular form of group_ids
group_name:
type: string
nullable: true
description: Singular form of group_names
description: Users to invite to the organization
remove_users:
type: object
nullable: true
properties:
ids:
type: array
nullable: true
items:
type: string
format: uuid
description: Unique identifier for the user
description: Ids of users to remove
emails:
type: array
nullable: true
items:
type: string
description: Emails of users to remove
description: Users to remove from the organization
org_name:
type: string
nullable: true
description: For nearly all users, this parameter should be unnecessary. But in the rare case that your API key belongs to multiple organizations, or in case you want to explicitly assert the organization you are modifying, you may specify the name of the organization.
org_id:
type: string
nullable: true
description: For nearly all users, this parameter should be unnecessary. But in the rare case that your API key belongs to multiple organizations, or in case you want to explicitly assert the organization you are modifying, you may specify the id of the organization.
OrganizationIdParam:
type: string
format: uuid
description: Organization id
PatchOrganization:
type: object
properties:
name:
type: string
nullable: true
description: Name of the organization
api_url:
type: string
nullable: true
is_universal_api:
type: boolean
nullable: true
is_dataplane_private:
type: boolean
nullable: true
proxy_url:
type: string
nullable: true
realtime_url:
type: string
nullable: true
image_rendering_mode:
$ref: '#/components/schemas/ImageRenderingMode'
AppLimitParam:
type: integer
nullable: true
minimum: 0
description: Limit the number of objects to return
StartingAfter:
type: string
format: uuid
description: 'Pagination cursor id.
For example, if the final item in the last page you fetched had an id of `foo`, pass `starting_after=foo` to fetch the next page. Note: you may only pass one of `starting_after` and `ending_before`'
OrgName:
type: string
description: Filter search results to within a particular organization
PatchOrganizationMembersOutput:
type: object
properties:
status:
type: string
enum:
- success
org_id:
type: string
description: The id of the org that was modified.
send_email_error:
type: string
nullable: true
description: If invite emails failed to send for some reason, the patch operation will still complete, but we will return an error message here
added_users:
type: array
nullable: true
items:
type: object
properties:
id:
type: string
format: uuid
email:
type: string
nullable: true
api_key:
type: string
nullable: true
token_name:
type: string
nullable: true
required:
- id
description: If service accounts with tokens were created, this will contain the added users with their API keys
required:
- status
- org_id
Ids:
anyOf:
- type: string
format: uuid
- type: array
items:
type: string
format: uuid
description: Filter search results to a particular set of object IDs. To specify a list of IDs, include the query param multiple times
ImageRenderingMode:
type: string
nullable: true
enum:
- auto
- click_to_load
- blocked
- null
description: 'Controls how images are rendered in the UI: ''auto'' loads images automatically, ''click_to_load'' shows a placeholder until clicked, ''blocked'' prevents image loading entirely'
EndingBefore:
type: string
format: uuid
description: 'Pagination cursor id.
For example, if the initial item in the last page you fetched had an id of `foo`, pass `ending_before=foo` to fetch the previous page. Note: you may only pass one of `starting_after` and `ending_before`'
Organization:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the organization
name:
type: string
description: Name of the organization
api_url:
type: string
nullable: true
is_universal_api:
type: boolean
nullable: true
is_dataplane_private:
type: boolean
nullable: true
proxy_url:
type: string
nullable: true
realtime_url:
type: string
nullable: true
created:
type: string
nullable: true
format: date-time
description: Date of organization creation
image_rendering_mode:
$ref: '#/components/schemas/ImageRenderingMode'
required:
- id
- name
parameters:
EndingBefore:
schema:
$ref: '#/components/schemas/EndingBefore'
required: false
description: 'Pagination cursor id.
For example, if the initial item in the last page you fetched had an id of `foo`, pass `ending_before=foo` to fetch the previous page. Note: you may only pass one of `starting_after` and `ending_before`'
name: ending_before
in: query
AppLimitParam:
schema:
$ref: '#/components/schemas/AppLimitParam'
required: false
description: Limit the number of objects to return
name: limit
in: query
Ids:
schema:
$ref: '#/components/schemas/Ids'
required: false
description: Filter search results to a particular set of object IDs. To specify a list of IDs, include the query param multiple times
name: ids
in: query
OrgName:
schema:
$ref: '#/components/schemas/OrgName'
required: false
description: Filter search results to within a particular organization
name: org_name
in: query
allowReserved: true
StartingAfter:
schema:
$ref: '#/components/schemas/StartingAfter'
required: false
description: 'Pagination cursor id.
For example, if the final item in the last page you fetched had an id of `foo`, pass `starting_after=foo` to fetch the next page. Note: you may only pass one of `starting_after` and `ending_before`'
name: starting_after
in: query
OrganizationIdParam:
schema:
$ref: '#/components/schemas/OrganizationIdParam'
required: true
description: Organization id
name: organization_id
in: path
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API key or JWT
description: 'Most Braintrust endpoints are authenticated by providing your API key as a header `Authorization: Bearer [api_key]` to your HTTP request. You can create an API key in the Braintrust [organization settings page](https://www.braintrustdata.com/app/settings?subroute=api-keys).'