Braintrust Groups API
The Groups API from Braintrust — 2 operation(s) for groups.
The Groups API from Braintrust — 2 operation(s) for groups.
openapi: 3.1.1
info:
version: 1.0.0
title: Braintrust Acls Groups 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: Groups
paths:
/v1/group:
post:
tags:
- Groups
security:
- bearerAuth: []
- {}
operationId: postGroup
description: Create a new group. If there is an existing group with the same name as the one specified in the request, will return the existing group unmodified
summary: Create group
requestBody:
description: Any desired information about the new group object
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGroup'
responses:
'200':
description: Returns the new group object
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'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
put:
tags:
- Groups
security:
- bearerAuth: []
- {}
operationId: putGroup
description: Create or replace group. If there is an existing group with the same name as the one specified in the request, will replace the existing group with the provided fields
summary: Create or replace group
requestBody:
description: Any desired information about the new group object
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateGroup'
responses:
'200':
description: Returns the new group object
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'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
get:
operationId: getGroup
tags:
- Groups
description: List out all groups. The groups are sorted by creation date, with the most recently-created groups coming first
summary: List groups
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/AppLimitParam'
- $ref: '#/components/parameters/StartingAfter'
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/Ids'
- $ref: '#/components/parameters/GroupName'
- $ref: '#/components/parameters/OrgName'
responses:
'200':
description: Returns a list of group objects
content:
application/json:
schema:
type: object
properties:
objects:
type: array
items:
$ref: '#/components/schemas/Group'
description: A list of group 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/group/{group_id}:
get:
operationId: getGroupId
tags:
- Groups
description: Get a group object by its id
summary: Get group
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/GroupIdParam'
responses:
'200':
description: Returns the group object
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'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: patchGroupId
tags:
- Groups
description: Partially update a group 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 group
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/GroupIdParam'
requestBody:
description: Fields to update
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/PatchGroup'
responses:
'200':
description: Returns the group object
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'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
delete:
operationId: deleteGroupId
tags:
- Groups
description: Delete a group object by its id
summary: Delete group
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/GroupIdParam'
responses:
'200':
description: Returns the deleted group object
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'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:
Group:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the group
org_id:
type: string
format: uuid
description: 'Unique id for the organization that the group belongs under
It is forbidden to change the org after creating a group'
user_id:
type: string
nullable: true
format: uuid
description: Identifies the user who created the group
created:
type: string
nullable: true
format: date-time
description: Date of group creation
name:
type: string
description: Name of the group
description:
type: string
nullable: true
description: Textual description of the group
deleted_at:
type: string
nullable: true
format: date-time
description: Date of group deletion, or null if the group is still active
member_users:
type: array
nullable: true
items:
type: string
format: uuid
description: Ids of users which belong to this group
member_groups:
type: array
nullable: true
items:
type: string
format: uuid
description: 'Ids of the groups this group inherits from
An inheriting group has all the users contained in its member groups, as well as all of their inherited users'
required:
- id
- org_id
- name
description: 'A group is a collection of users which can be assigned an ACL
Groups can consist of individual users, as well as a set of groups they inherit from'
PatchGroup:
type: object
properties:
description:
type: string
nullable: true
description: Textual description of the group
name:
type: string
nullable: true
minLength: 1
description: Name of the group
add_member_users:
type: array
nullable: true
items:
type: string
format: uuid
description: A list of user IDs to add to the group
remove_member_users:
type: array
nullable: true
items:
type: string
format: uuid
description: A list of user IDs to remove from the group
add_member_groups:
type: array
nullable: true
items:
type: string
format: uuid
description: A list of group IDs to add to the group's inheriting-from set
remove_member_groups:
type: array
nullable: true
items:
type: string
format: uuid
description: A list of group IDs to remove from the group's inheriting-from set
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
AppLimitParam:
type: integer
nullable: true
minimum: 0
description: Limit the number of objects to return
CreateGroup:
type: object
properties:
name:
type: string
minLength: 1
description: Name of the group
description:
type: string
nullable: true
description: Textual description of the group
member_users:
type: array
nullable: true
items:
type: string
format: uuid
description: Ids of users which belong to this group
member_groups:
type: array
nullable: true
items:
type: string
format: uuid
description: 'Ids of the groups this group inherits from
An inheriting group has all the users contained in its member groups, as well as all of their inherited users'
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, you may specify the name of the organization the group belongs in.
required:
- name
GroupName:
type: string
description: Name of the group to search for
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
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`'
GroupIdParam:
type: string
format: uuid
description: Group id
parameters:
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
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
GroupName:
schema:
$ref: '#/components/schemas/GroupName'
required: false
description: Name of the group to search for
name: group_name
in: query
allowReserved: true
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
GroupIdParam:
schema:
$ref: '#/components/schemas/GroupIdParam'
required: true
description: Group id
name: group_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).'