Braintrust Views API
The Views API from Braintrust — 2 operation(s) for views.
The Views API from Braintrust — 2 operation(s) for views.
openapi: 3.1.1
info:
version: 1.0.0
title: Braintrust Acls Views 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: Views
paths:
/v1/view:
post:
tags:
- Views
security:
- bearerAuth: []
- {}
operationId: postView
description: Create a new view. If there is an existing view with the same name as the one specified in the request, will return the existing view unmodified
summary: Create view
requestBody:
description: Any desired information about the new view object
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateView'
responses:
'200':
description: Returns the new view object
content:
application/json:
schema:
$ref: '#/components/schemas/View'
'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:
- Views
security:
- bearerAuth: []
- {}
operationId: putView
description: Create or replace view. If there is an existing view with the same name as the one specified in the request, will replace the existing view with the provided fields
summary: Create or replace view
requestBody:
description: Any desired information about the new view object
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateView'
responses:
'200':
description: Returns the new view object
content:
application/json:
schema:
$ref: '#/components/schemas/View'
'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: getView
tags:
- Views
description: List out all views. The views are sorted by creation date, with the most recently-created views coming first
summary: List views
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/AppLimitParam'
- $ref: '#/components/parameters/StartingAfter'
- $ref: '#/components/parameters/EndingBefore'
- $ref: '#/components/parameters/Ids'
- $ref: '#/components/parameters/ViewName'
- $ref: '#/components/parameters/ViewType'
- $ref: '#/components/parameters/AclObjectType'
- $ref: '#/components/parameters/AclObjectId'
responses:
'200':
description: Returns a list of view objects
content:
application/json:
schema:
type: object
properties:
objects:
type: array
items:
$ref: '#/components/schemas/View'
description: A list of view 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/view/{view_id}:
get:
operationId: getViewId
tags:
- Views
description: Get a view object by its id
summary: Get view
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/ViewIdParam'
- $ref: '#/components/parameters/AclObjectType'
- $ref: '#/components/parameters/AclObjectId'
responses:
'200':
description: Returns the view object
content:
application/json:
schema:
$ref: '#/components/schemas/View'
'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: patchViewId
tags:
- Views
description: Partially update a view 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 view
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/ViewIdParam'
requestBody:
description: Fields to update
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/PatchView'
responses:
'200':
description: Returns the view object
content:
application/json:
schema:
$ref: '#/components/schemas/View'
'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: deleteViewId
tags:
- Views
description: Delete a view object by its id
summary: Delete view
security:
- bearerAuth: []
- {}
parameters:
- $ref: '#/components/parameters/ViewIdParam'
requestBody:
description: Additional parameters for the delete operation
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteView'
responses:
'200':
description: Returns the deleted view object
content:
application/json:
schema:
$ref: '#/components/schemas/View'
'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:
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
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
AppLimitParam:
schema:
$ref: '#/components/schemas/AppLimitParam'
required: false
description: Limit the number of objects to return
name: limit
in: query
AclObjectType:
schema:
$ref: '#/components/schemas/AclObjectType'
required: true
description: The object type that the ACL applies to
name: object_type
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
ViewType:
schema:
$ref: '#/components/schemas/ViewType'
required: false
description: Type of object that the view corresponds to.
name: view_type
in: query
AclObjectId:
schema:
$ref: '#/components/schemas/AclObjectId'
required: true
description: The id of the object the ACL applies to
name: object_id
in: query
ViewIdParam:
schema:
$ref: '#/components/schemas/ViewIdParam'
required: true
description: View id
name: view_id
in: path
ViewName:
schema:
$ref: '#/components/schemas/ViewName'
required: false
description: Name of the view to search for
name: view_name
in: query
allowReserved: true
schemas:
AclObjectId:
type: string
format: uuid
description: The id of the object the ACL applies to
ViewName:
type: string
description: Name of the view to search for
ViewIdParam:
type: string
format: uuid
description: View id
AclObjectType:
type: string
enum:
- organization
- project
- experiment
- dataset
- prompt
- prompt_session
- group
- role
- org_member
- project_log
- org_project
description: The object type that the ACL applies to
ViewData:
type: object
nullable: true
properties:
search:
$ref: '#/components/schemas/ViewDataSearch'
custom_charts:
nullable: true
description: The view definition
AppLimitParam:
type: integer
nullable: true
minimum: 0
description: Limit the number of objects to return
View:
type: object
properties:
id:
type: string
format: uuid
description: Unique identifier for the view
object_type:
$ref: '#/components/schemas/AclObjectType'
object_id:
type: string
format: uuid
description: The id of the object the view applies to
view_type:
type: string
enum:
- projects
- experiments
- experiment
- playgrounds
- playground
- datasets
- dataset
- prompts
- parameters
- tools
- scorers
- classifiers
- logs
- monitor
- for_review_project_log
- for_review_experiments
- for_review_datasets
- null
description: Type of object that the view corresponds to.
name:
type: string
description: Name of the view
created:
type: string
nullable: true
format: date-time
description: Date of view creation
view_data:
$ref: '#/components/schemas/ViewData'
options:
$ref: '#/components/schemas/ViewOptions'
user_id:
type: string
nullable: true
format: uuid
description: Identifies the user who created the view
deleted_at:
type: string
nullable: true
format: date-time
description: Date of role deletion, or null if the role is still active
required:
- id
- object_type
- object_id
- view_type
- name
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
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`'
PatchView:
type: object
properties:
object_type:
$ref: '#/components/schemas/AclObjectType'
object_id:
type: string
format: uuid
description: The id of the object the view applies to
view_type:
type: string
nullable: true
enum:
- projects
- experiments
- experiment
- playgrounds
- playground
- datasets
- dataset
- prompts
- parameters
- tools
- scorers
- classifiers
- logs
- monitor
- for_review_project_log
- for_review_experiments
- for_review_datasets
- null
description: Type of object that the view corresponds to.
name:
type: string
nullable: true
description: Name of the view
view_data:
$ref: '#/components/schemas/ViewData'
options:
$ref: '#/components/schemas/ViewOptions'
user_id:
type: string
nullable: true
format: uuid
description: Identifies the user who created the view
required:
- object_type
- object_id
ViewOptions:
anyOf:
- type: object
properties:
viewType:
type: string
enum:
- monitor
options:
type: object
properties:
spanType:
type: string
nullable: true
enum:
- range
- frame
- null
rangeValue:
type: string
nullable: true
frameStart:
type: string
nullable: true
frameEnd:
type: string
nullable: true
tzUTC:
type: boolean
nullable: true
chartVisibility:
type: object
nullable: true
additionalProperties:
type: boolean
projectId:
type: string
nullable: true
type:
type: string
nullable: true
enum:
- project
- experiment
- null
groupBy:
type: string
nullable: true
freezeColumns:
type: boolean
nullable: true
required:
- viewType
- options
title: MonitorViewOptions
- type: object
properties:
columnVisibility:
type: object
nullable: true
additionalProperties:
type: boolean
columnOrder:
type: array
nullable: true
items:
type: string
columnSizing:
type: object
nullable: true
additionalProperties:
type: number
grouping:
type: string
nullable: true
rowHeight:
type: string
nullable: true
tallGroupRows:
type: boolean
nullable: true
layout:
type: string
nullable: true
topicMapReportKey:
type: string
nullable: true
chartHeight:
type: number
nullable: true
excludedMeasures:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
enum:
- none
- score
- metric
- metadata
value:
type: string
required:
- type
- value
yMetric:
type: object
nullable: true
properties:
type:
type: string
enum:
- none
- score
- metric
- metadata
value:
type: string
required:
- type
- value
xAxis:
type: object
nullable: true
properties:
type:
type: string
enum:
- none
- score
- metric
- metadata
value:
type: string
required:
- type
- value
symbolGrouping:
type: object
nullable: true
properties:
type:
type: string
enum:
- none
- score
- metric
- metadata
value:
type: string
required:
- type
- value
xAxisAggregation:
type: string
nullable: true
description: One of 'avg', 'sum', 'min', 'max', 'median', 'all'
chartAnnotations:
type: array
nullable: true
items:
type: object
properties:
id:
type: string
text:
type: string
required:
- id
- text
timeRangeFilter:
anyOf:
- type: string
- type: object
properties:
from:
type: string
to:
type: string
required:
- from
- to
- type: 'null'
queryShape:
type: string
nullable: true
enum:
- traces
- spans
- topics
- null
cluster:
type: string
nullable: true
freezeColumns:
type: boolean
nullable: true
title: TableViewOptions
- type: 'null'
description: Options for the view in the app
DeleteView:
type: object
properties:
object_type:
$ref: '#/components/schemas/AclObjectType'
object_id:
type: string
format: uuid
description: The id of the object the view applies to
required:
- object_type
- object_id
ViewDataSearch:
type: object
nullable: true
properties:
filter:
type: array
nullable: true
items:
nullable: true
tag:
type: array
nullable: true
items:
nullable: true
match:
type: array
nullable: true
items:
nullable: true
sort:
type: array
nullable: true
items:
nullable: true
ViewType:
type: string
enum:
- projects
- experiments
- experiment
- playgrounds
- playground
- datasets
- dataset
- prompts
- parameters
- tools
- scorers
- classifiers
- logs
- monitor
- for_review_project_log
- for_review_experiments
- for_review_datasets
- null
description: Type of object that the view corresponds to.
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`'
CreateView:
type: object
properties:
object_type:
$ref: '#/components/schemas/AclObjectType'
object_id:
type: string
format: uuid
description: The id of the object the view applies to
view_type:
type: string
enum:
- projects
- experiments
- experiment
- playgrounds
- playground
- datasets
- dataset
- prompts
- parameters
- tools
- scorers
- classifiers
- logs
- monitor
- for_review_project_log
- for_review_experiments
- for_review_datasets
- null
description: Type of object that the view corresponds to.
name:
type: string
description: Name of the view
view_data:
$ref: '#/components/schemas/ViewData'
options:
$ref: '#/components/schemas/ViewOptions'
user_id:
type: string
nullable: true
format: uuid
description: Identifies the user who created the view
deleted_at:
type: string
nullable: true
format: date-time
description: Date of role deletion, or null if the role is still active
required:
- object_type
- object_id
- view_type
- name
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).'