{"openapi":"3.1.0","info":{"title":"LangSmith Deployment Control Plane API","description":"The LangSmith Deployment Control Plane API is used to programmatically create and manage\nAgent Server deployments. For example, the APIs can be orchestrated to\ncreate custom CI/CD workflows.\n\n## Host\nhttps://api.host.langchain.com\n\n## Authentication\nTo authenticate with the LangSmith Deployment Control Plane API, set the `X-Api-Key` header\nto a valid [LangSmith API key](https://docs.langchain.com/langsmith/create-account-api-key#create-an-api-key).\n\n## Versioning\nEach endpoint path is prefixed with a version (e.g. `v1`, `v2`).\n\n## Quick Start\n1. Call `POST /v2/deployments` to create a new Deployment. The response body contains the Deployment ID (`id`) and the ID of the latest (and first) revision (`latest_revision_id`).\n1. Call `GET /v2/deployments/{deployment_id}` to retrieve the Deployment. Set `deployment_id` in the URL to the value of Deployment ID (`id`).\n1. Poll for revision `status` until `status` is `DEPLOYED` by calling `GET /v2/deployments/{deployment_id}/revisions/{latest_revision_id}`.\n1. Call `PATCH /v2/deployments/{deployment_id}` to update the deployment.\n","version":"0.1.0"},"paths":{"/v1/integrations/github/install":{"get":{"tags":["Integrations (v1)"],"summary":"List GitHub Integrations","description":"List available GitHub integrations for LangGraph Platfom Cloud SaaS.","operationId":"list_github_integrations_v1_integrations_github_install_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/GithubIntegration"},"type":"array","title":"Response List Github Integrations V1 Integrations Github Install Get"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v1/integrations/github/{integration_id}/repos":{"get":{"tags":["Integrations (v1)"],"summary":"List GitHub Repositories","description":"List available GitHub repositories for an integration that are available to deploy to LangSmith Deployment.","operationId":"list_github_repositories_v1_integrations_github__integration_id__repos_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration ID","description":"GitHub integration ID."},"description":"GitHub integration ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepository"},"title":"Response List Github Repositories V1 Integrations Github  Integration Id  Repos Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/forge/github/install":{"get":{"tags":["Integrations (v1)"],"summary":"List Forge GitHub Integrations","description":"List available Forge GitHub integrations.","operationId":"list_forge_github_integrations_v1_integrations_forge_github_install_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ForgeGithubIntegration"},"type":"array","title":"Response List Forge Github Integrations V1 Integrations Forge Github Install Get"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v1/integrations/forge/github/{integration_id}/repos":{"get":{"tags":["Integrations (v1)"],"summary":"List Forge GitHub Repositories","description":"List available GitHub repositories for a Forge integration.","operationId":"list_forge_github_repositories_v1_integrations_forge_github__integration_id__repos_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration ID","description":"Forge GitHub integration ID."},"description":"Forge GitHub integration ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GithubRepository"},"title":"Response List Forge Github Repositories V1 Integrations Forge Github  Integration Id  Repos Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments":{"get":{"tags":["Deployments (v2)"],"summary":"List Deployments","description":"List all deployments.","operationId":"list_deployments_v2_deployments_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Limit"},"description":"Maximum number of resources to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset. Pass this value to subsequent requests to fetch the next page of resources.","default":0,"title":"Offset"},"description":"Pagination offset. Pass this value to subsequent requests to fetch the next page of resources."},{"name":"name_contains","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Name of the deployment to filter by.","title":"Name Contains"},"description":"Name of the deployment to filter by."},{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exact deployment name to filter by.","title":"Name"},"description":"Exact deployment name to filter by."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"`status` of the deployment to filter by.","title":"Status"},"description":"`status` of the deployment to filter by."},{"name":"remote_reconciled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Flag to filter by remote reconciled deployments.","title":"Remote Reconciled"},"description":"Flag to filter by remote reconciled deployments."},{"name":"tag_value_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma separated list of tag value IDs of the deployment to filter by.","title":"Tag Value Ids"},"description":"Comma separated list of tag value IDs of the deployment to filter by."},{"name":"image_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Image version to filter by.","title":"Image Version"},"description":"Image version to filter by."},{"name":"deployment_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["dev_free","dev","prod","dev_zero","dev_free_zero"],"type":"string"},{"type":"null"}],"description":"Deployment type to filter by.","title":"Deployment Type"},"description":"Deployment type to filter by."},{"name":"deployment_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma separated list of deployment IDs to filter by.","title":"Deployment Ids"},"description":"Comma separated list of deployment IDs to filter by."},{"name":"url","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Serving URL of the deployment to filter by.","title":"Url"},"description":"Serving URL of the deployment to filter by."},{"name":"agent_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$"},{"type":"null"}],"description":"Exact agent ID (slug) to filter by: 1 to 63 lowercase letters, digits, or hyphens, starting with a letter. Requires agent mode.","title":"Agent Id"},"description":"Exact agent ID (slug) to filter by: 1 to 63 lowercase letters, digits, or hyphens, starting with a letter. Requires agent mode."},{"name":"agent_environment","in":"query","required":false,"schema":{"anyOf":[{"enum":["local","development","staging","production"],"type":"string"},{"type":"null"}],"description":"Agent environment to filter by. Requires agent mode.","title":"Agent Environment"},"description":"Agent environment to filter by. Requires agent mode."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Deployments (v2)"],"summary":"Create Deployment","description":"Create a new deployment.","operationId":"create_deployment_v2_deployments_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"detail":"Error description."}}}},"409":{"description":"Conflict","content":{"application/json":{"example":{"detail":"A deployment named '{name}' already exists."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Deployments (v2)"],"summary":"Delete Deployments","description":"Delete multiple deployments with partial success support.\n\nReturns:\n    - 200: All deployments deleted successfully\n    - 207: Some deployments deleted successfully, some failed","operationId":"delete_deployments_v2_deployments_delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_ids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"maxItems":100,"title":"Deployment Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/free-count":{"get":{"tags":["Deployments (v2)"],"summary":"Get Free Deployment Count","description":"Return the number of free deployments used by the caller's organization.","operationId":"get_free_deployment_count_v2_deployments_free_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeDeploymentCountResponse"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/deployments/{deployment_id}":{"get":{"tags":["Deployments (v2)"],"summary":"Get Deployment","description":"Get a deployment by ID.","operationId":"get_deployment_v2_deployments__deployment_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Deployments (v2)"],"summary":"Patch Deployment","description":"Patch a deployment by ID.","operationId":"patch_deployment_v2_deployments__deployment_id__patch","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"detail":"Error description."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Deployments (v2)"],"summary":"Delete Deployment","description":"Delete a deployment by ID.","operationId":"delete_deployment_v2_deployments__deployment_id__delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"delete_tracing_project","in":"query","required":false,"schema":{"type":"boolean","description":"Optionally delete the deployment's tracing project.","default":false,"title":"Delete Tracing Project"},"description":"Optionally delete the deployment's tracing project."},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","description":"Force delete the deployment's control-plane metadata, skipping Kubernetes resource cleanup. Only works on a deployment that has already been soft-deleted by a prior delete call; force-deleting a still-active deployment returns 400. Use to clear stale deployments whose runtime is already gone. This is unrecoverable and may orphan remaining cluster-side resources. Reusing the deployment name after a force delete is unsupported and may attach a new deployment to those orphaned resources; use a different name.","default":false,"title":"Force"},"description":"Force delete the deployment's control-plane metadata, skipping Kubernetes resource cleanup. Only works on a deployment that has already been soft-deleted by a prior delete call; force-deleting a still-active deployment returns 400. Use to clear stale deployments whose runtime is already gone. This is unrecoverable and may orphan remaining cluster-side resources. Reusing the deployment name after a force delete is unsupported and may attach a new deployment to those orphaned resources; use a different name."}],"responses":{"204":{"description":"Successful Response"},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/deployment-tier":{"patch":{"tags":["Deployments (v2)"],"summary":"Patch Deployment Tier","description":"Patch a deployment's fixed resource tier.","operationId":"patch_deployment_tier_v2_deployments__deployment_id__deployment_tier_patch","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentTierUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"detail":"Error description."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/resource-tiers":{"patch":{"tags":["Deployments (v2)"],"summary":"Patch Deployment Resource Tiers","description":"Patch a deployment's compute and database resource tiers independently.","operationId":"patch_deployment_resource_tiers_v2_deployments__deployment_id__resource_tiers_patch","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentResourceTiersUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"detail":"Error description."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/revisions":{"get":{"tags":["Deployments (v2)"],"summary":"List Revisions","description":"List all revisions for a deployment.","operationId":"list_revisions_v2_deployments__deployment_id__revisions_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Limit"},"description":"Maximum number of resources to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset. Pass this value to subsequent requests to fetch the next page of resources.","default":0,"title":"Offset"},"description":"Pagination offset. Pass this value to subsequent requests to fetch the next page of resources."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma separated list of revision `status` (CREATING, QUEUED, AWAITING_BUILD, BUILDING, AWAITING_DEPLOY, DEPLOYING, CREATE_FAILED, BUILD_FAILED, DEPLOY_FAILED, DEPLOYED, SKIPPED, INTERRUPTED, UNKNOWN) fields to filter by.","title":"Status"},"description":"Comma separated list of revision `status` (CREATING, QUEUED, AWAITING_BUILD, BUILDING, AWAITING_DEPLOY, DEPLOYING, CREATE_FAILED, BUILD_FAILED, DEPLOY_FAILED, DEPLOYED, SKIPPED, INTERRUPTED, UNKNOWN) fields to filter by."},{"name":"remote_reconciled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Flag to filter by remote reconciled revisions.","title":"Remote Reconciled"},"description":"Flag to filter by remote reconciled revisions."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevisionsList"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Deployments (v2)"],"summary":"Create Deployment Revision","description":"Create a new revision for a deployment.\n\nThe dedicated create-revision entry point: unlike PATCH, this always\ncreates a revision and returns the created ``Revision`` directly.","operationId":"create_deployment_revision_v2_deployments__deployment_id__revisions_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevisionCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revision"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"detail":"Error description."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/revisions/{revision_id}":{"get":{"tags":["Deployments (v2)"],"summary":"Get Revision","description":"Get a revision by ID for a deployment.","operationId":"get_revision_v2_deployments__deployment_id__revisions__revision_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"revision_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Revision ID"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revision"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/revisions/{revision_id}/redeploy":{"post":{"tags":["Deployments (v2)"],"summary":"Redeploy Revision","description":"Redeploy a specific revision ID.","operationId":"redeploy_revision_v2_deployments__deployment_id__revisions__revision_id__redeploy_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"revision_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Revision ID"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deployment"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"400":{"description":"Bad Request","content":{"application/json":{"example":{"detail":"Error description."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/logs":{"get":{"tags":["Deployments (v2)"],"summary":"List Deployment Logs","description":"List deploy logs for a deployment (across all revisions).","operationId":"list_deployment_logs_v2_deployments__deployment_id__logs_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offset"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Query"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"enum":["DEBUG","INFO","WARNING","ERROR","CRITICAL"],"type":"string"},{"type":"null"}],"title":"Level"}},{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogsResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/revisions/{revision_id}/logs":{"get":{"tags":["Deployments (v2)"],"summary":"List Revision Logs","description":"List build or deploy logs for a specific revision of a deployment.","operationId":"list_revision_logs_v2_deployments__deployment_id__revisions__revision_id__logs_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"revision_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Revision ID"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Offset"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Query"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"enum":["DEBUG","INFO","WARNING","ERROR","CRITICAL"],"type":"string"},{"type":"null"}],"title":"Level"}},{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}},{"name":"type","in":"query","required":true,"schema":{"enum":["build","deploy"],"type":"string","description":"Which logs to return: build-time or deploy-time.","title":"Type"},"description":"Which logs to return: build-time or deploy-time."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogsResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployments/{deployment_id}/revisions/{revision_id}/interruption":{"post":{"tags":["Deployments (v2)"],"summary":"Interrupt Deployment Revision","description":"Interrupt an in-progress revision build/deploy.","operationId":"interrupt_deployment_revision_v2_deployments__deployment_id__revisions__revision_id__interruption_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment ID"}},{"name":"revision_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Revision ID"}}],"responses":{"204":{"description":"Successful Response"},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Deployment ID {deployment_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/deployment-logs":{"get":{"tags":["Deployments (v2)"],"summary":"List Deployment Log Entries","description":"List build or deploy log entries for a deployment.","operationId":"list_deployment_log_entries_v2_deployment_logs_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"deployment_id","in":"query","required":true,"schema":{"type":"string","format":"uuid","title":"Deployment Id"}},{"name":"revision_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Revision Id"}},{"name":"log_type","in":"query","required":false,"schema":{"enum":["BUILD","DEPLOY"],"type":"string","default":"DEPLOY","title":"Log Type"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort_order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"asc","title":"Sort Order"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Page Size"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Query"}},{"name":"level","in":"query","required":false,"schema":{"anyOf":[{"enum":["DEBUG","INFO","WARNING","ERROR","CRITICAL"],"type":"string"},{"type":"null"}],"title":"Level"}},{"name":"run_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLogsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/listeners":{"get":{"tags":["Listeners (v2)"],"summary":"List Listeners","description":"List all listeners.","operationId":"list_listeners_v2_listeners_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Limit"},"description":"Maximum number of resources to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Pagination offset. Pass this value to subsequent requests to fetch the next page of resources.","default":0,"title":"Offset"},"description":"Pagination offset. Pass this value to subsequent requests to fetch the next page of resources."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenersList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Listeners (v2)"],"summary":"Create Listener","description":"Create a listener.<br>\n<br>\nCreating a listener is only allowed for LangSmith organizations with self-hosted enterprise plans.","operationId":"create_listener_v2_listeners_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenerCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Listener"}}}},"403":{"description":"Forbidden","content":{"application/json":{"example":{"detail":"Listeners cannot be created for LangSmith workspace ID '{workspace_id}'. Creating listeners is only allowed for LangSmith organizations with self-hosted enterprise plans."}}}},"409":{"description":"Conflict","content":{"application/json":{"example":{"detail":"Listener for LangSmith workspace ID '{workspace_id}' and compute ID '{compute_id}' already exists."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/listeners/{listener_id}":{"get":{"tags":["Listeners (v2)"],"summary":"Get Listener","description":"Get a listener by ID.","operationId":"get_listener_v2_listeners__listener_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"listener_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Listener ID"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Listener"}}}},"403":{"description":"Forbidden","content":{"application/json":{"example":{"detail":"Listeners cannot be created for LangSmith workspace ID '{workspace_id}'. Creating listeners is only allowed for LangSmith organizations with self-hosted enterprise plans."}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Listener ID {listener_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Listeners (v2)"],"summary":"Patch Listener","description":"Patch a listener by ID.","operationId":"patch_listener_v2_listeners__listener_id__patch","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"listener_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Listener ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenerPatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Listener"}}}},"403":{"description":"Forbidden","content":{"application/json":{"example":{"detail":"Listeners cannot be created for LangSmith workspace ID '{workspace_id}'. Creating listeners is only allowed for LangSmith organizations with self-hosted enterprise plans."}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Listener ID {listener_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Listeners (v2)"],"summary":"Delete Listener","description":"Delete a listener by ID.","operationId":"delete_listener_v2_listeners__listener_id__delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"listener_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Listener ID"}}],"responses":{"204":{"description":"Successful Response"},"403":{"description":"Forbidden","content":{"application/json":{"example":{"detail":"Listeners cannot be created for LangSmith workspace ID '{workspace_id}'. Creating listeners is only allowed for LangSmith organizations with self-hosted enterprise plans."}}}},"404":{"description":"Not Found","content":{"application/json":{"example":{"detail":"Listener ID {listener_id} not found."}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/integrations/github/installations":{"get":{"tags":["Integrations (v2)"],"summary":"List Github Installations","description":"List GitHub App installations available to the workspace.","operationId":"list_github_installations_v2_integrations_github_installations_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Page Size"},"description":"Maximum number of resources to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor returned by the previous page.","title":"Cursor"},"description":"Opaque cursor returned by the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubInstallationsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/integrations/github/installations/{integration_id}/repositories":{"get":{"tags":["Integrations (v2)"],"summary":"List Github Installation Repositories","description":"List repositories available through a GitHub App installation.","operationId":"list_github_installation_repositories_v2_integrations_github_installations__integration_id__repositories_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration ID","description":"GitHub integration ID."},"description":"GitHub integration ID."},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Page Size"},"description":"Maximum number of resources to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor returned by the previous page.","title":"Cursor"},"description":"Opaque cursor returned by the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubRepositoriesList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/integrations/github/installation-link":{"post":{"tags":["Integrations (v2)"],"summary":"Get Github Install Link Endpoint","description":"Create a GitHub App installation link.","operationId":"get_github_install_link_endpoint_v2_integrations_github_installation_link_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubInstallLink"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/integrations/forge-github/installations":{"get":{"tags":["Integrations (v2)"],"summary":"List Forge Github Installations","description":"List Forge GitHub App installations available to the workspace.","operationId":"list_forge_github_installations_v2_integrations_forge_github_installations_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Page Size"},"description":"Maximum number of resources to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor returned by the previous page.","title":"Cursor"},"description":"Opaque cursor returned by the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgeGithubInstallationsList"}}}},"501":{"description":"The Engine GitHub App isn't configured on this install. The problem detail names the settings an operator must set."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/integrations/forge-github/installations/{integration_id}/repositories":{"get":{"tags":["Integrations (v2)"],"summary":"List Forge Github Installation Repositories","description":"List repositories available through a Forge GitHub App installation.","operationId":"list_forge_github_installation_repositories_v2_integrations_forge_github_installations__integration_id__repositories_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"integration_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Integration ID","description":"Forge GitHub integration ID."},"description":"Forge GitHub integration ID."},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of resources to return.","default":20,"title":"Page Size"},"description":"Maximum number of resources to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque cursor returned by the previous page.","title":"Cursor"},"description":"Opaque cursor returned by the previous page."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubRepositoriesList"}}}},"501":{"description":"The Engine GitHub App isn't configured on this install. The problem detail names the settings an operator must set."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/integrations/forge-github/installation-link":{"post":{"tags":["Integrations (v2)"],"summary":"Get Forge Github Install Link Endpoint","description":"Create a Forge GitHub App installation link.","operationId":"get_forge_github_install_link_endpoint_v2_integrations_forge_github_installation_link_post","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GithubInstallLinkRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngineInstallLink"}}}},"501":{"description":"The Engine GitHub App isn't configured on this install. The problem detail names the settings an operator must set."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/integrations/forge-github/picker-sessions/{session_id}":{"get":{"tags":["Integrations (v2)"],"summary":"Get Engine Picker Session Endpoint","description":"Get a Forge GitHub App installation picker session.","operationId":"get_engine_picker_session_endpoint_v2_integrations_forge_github_picker_sessions__session_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Picker session ID"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnginePickerSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/integrations/forge-github/picker-sessions/{session_id}/selection":{"post":{"tags":["Integrations (v2)"],"summary":"Create Engine Picker Session Selection","description":"Select an installation or begin a new GitHub App installation.","operationId":"create_engine_picker_session_selection_v2_integrations_forge_github_picker_sessions__session_id__selection_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Picker session ID"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgeGithubPickerSelectionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnginePickerSelectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/providers":{"get":{"tags":["Auth Service (v2)"],"summary":"List Oauth Providers","description":"List OAuth providers.","operationId":"list_oauth_providers_v2_auth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OAuthProviderResponse"},"type":"array","title":"Response List Oauth Providers V2 Auth Providers Get"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]},"post":{"tags":["Auth Service (v2)"],"summary":"Create Oauth Provider","description":"Create a new OAuth provider manually.","operationId":"create_oauth_provider_v2_auth_providers_post","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AuthorizationCodeProviderCreateRequest"},{"$ref":"#/components/schemas/ClientCredentialsProviderCreateRequest"}],"title":"Request Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProviderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/platform-providers":{"get":{"tags":["Auth Service (v2)"],"summary":"List Platform Oauth Providers","description":"List platform-level OAuth providers available to all workspaces.","operationId":"list_platform_oauth_providers_v2_auth_platform_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/OAuthProviderResponse"},"type":"array","title":"Response List Platform Oauth Providers V2 Auth Platform Providers Get"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/platform-providers/{provider_id}":{"get":{"tags":["Auth Service (v2)"],"summary":"Get Platform Oauth Provider","description":"Get a platform-level OAuth provider available to all workspaces.","operationId":"get_platform_oauth_provider_v2_auth_platform_providers__provider_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","description":"OAuth provider ID","title":"Provider Id"},"description":"OAuth provider ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProviderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/setup/{provider_id}":{"get":{"tags":["Auth Service (v2)"],"summary":"Oauth Setup Callback","description":"Handle OAuth setup callback redirect from GitHub Apps.\n\nThis endpoint handles the \"Setup URL\" callback from GitHub Apps, which is\ntriggered when a user installs or updates their GitHub App installation.\n\nFor \"update\" actions (user modified repo access via GitHub), we just show\na success page since no token exchange is needed.\n\nFor new installations with code/state, we process similar to the regular\nOAuth callback.","operationId":"oauth_setup_callback_v2_auth_setup__provider_id__get","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","description":"Authorization code from OAuth provider","title":"Code"},"description":"Authorization code from OAuth provider"},{"name":"state","in":"query","required":false,"schema":{"type":"string","description":"State parameter containing auth_id","title":"State"},"description":"State parameter containing auth_id"},{"name":"setup_action","in":"query","required":false,"schema":{"type":"string","description":"Setup action from GitHub App","title":"Setup Action"},"description":"Setup action from GitHub App"},{"name":"installation_id","in":"query","required":false,"schema":{"type":"integer","description":"GitHub App installation ID","title":"Installation Id"},"description":"GitHub App installation ID"},{"name":"error","in":"query","required":false,"schema":{"type":"string","description":"Error code from OAuth provider","title":"Error"},"description":"Error code from OAuth provider"},{"name":"error_description","in":"query","required":false,"schema":{"type":"string","description":"Error description from OAuth provider","title":"Error Description"},"description":"Error description from OAuth provider"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/callback/{provider_id}":{"get":{"tags":["Auth Service (v2)"],"summary":"Oauth Callback Get","description":"Handle OAuth callback redirect from OAuth providers.\n\nAlways delegates to the frontend host-oauth-callback when LANGSMITH_URL is\nset — including agent-subject sessions — so finalize goes through the\nauthenticated POST callback (org-scoped). Unauthenticated GET never mints\nor binds tokens for agent subjects.","operationId":"oauth_callback_get_v2_auth_callback__provider_id__get","security":[{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","description":"Authorization code from OAuth provider","title":"Code"},"description":"Authorization code from OAuth provider"},{"name":"state","in":"query","required":false,"schema":{"type":"string","description":"State parameter containing auth_id","title":"State"},"description":"State parameter containing auth_id"},{"name":"error","in":"query","required":false,"schema":{"type":"string","description":"Error code from OAuth provider","title":"Error"},"description":"Error code from OAuth provider"},{"name":"error_description","in":"query","required":false,"schema":{"type":"string","description":"Error description from OAuth provider","title":"Error Description"},"description":"Error description from OAuth provider"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Auth Service (v2)"],"summary":"Oauth Callback","description":"Finalize an OAuth flow.\n\nClaims the auth request, verifies the caller, exchanges the code, and saves the token.\nUsed by both the frontend bridge and the headless flow (where a customer-owned service\nforwards the code/state, optionally proxied through smith-go).\n\nUser-subject sessions require the authenticated caller to match the initiator.\nAgent-subject sessions (MDA Connect) skip that match — start is gated by\n``deployments:create`` / service key, and the FE bridge may present a different\nsame-org workspace session to complete consent — then bind via\n``host_oauth_agent_connections``.","operationId":"oauth_callback_v2_auth_callback__provider_id__post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthFinalizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/authenticate":{"post":{"tags":["Auth Service (v2)"],"summary":"Authenticate","description":"Get OAuth token or start authentication flow if needed.","operationId":"authenticate_v2_auth_authenticate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthAuthenticateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthAuthenticateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/wait/{auth_id}":{"get":{"tags":["Auth Service (v2)"],"summary":"Wait For Auth Completion","description":"Wait for OAuth authentication completion.","operationId":"wait_for_auth_completion_v2_auth_wait__auth_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"auth_id","in":"path","required":true,"schema":{"type":"string","description":"Authentication ID to wait for","title":"Auth Id"},"description":"Authentication ID to wait for"},{"name":"timeout","in":"query","required":false,"schema":{"type":"integer","description":"Timeout in seconds (default: 30)","default":30,"title":"Timeout"},"description":"Timeout in seconds (default: 30)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthWaitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/providers/mcp-discover":{"post":{"tags":["Auth Service (v2)"],"summary":"Create Mcp Oauth Provider","description":"Create an OAuth provider via MCP auto-discovery.","operationId":"create_mcp_oauth_provider_v2_auth_providers_mcp_discover_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MCPOAuthProviderCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProviderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/providers/{provider_id}":{"get":{"tags":["Auth Service (v2)"],"summary":"Get Oauth Provider","description":"Get a specific OAuth provider.","operationId":"get_oauth_provider_v2_auth_providers__provider_id__get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","description":"OAuth provider ID","title":"Provider Id"},"description":"OAuth provider ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProviderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Auth Service (v2)"],"summary":"Update Oauth Provider","description":"Update an OAuth provider.","operationId":"update_oauth_provider_v2_auth_providers__provider_id__patch","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProviderUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthProviderResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Auth Service (v2)"],"summary":"Delete Oauth Provider","description":"Delete an OAuth provider.","operationId":"delete_oauth_provider_v2_auth_providers__provider_id__delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/tokens":{"get":{"tags":["Auth Service (v2)"],"summary":"List Oauth Tokens For User","description":"List the calling user's tokens for a provider.","operationId":"list_oauth_tokens_for_user_v2_auth_tokens_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"OAuth provider ID","title":"Provider Id"},"description":"OAuth provider ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OAuthTokenSummary"},"title":"Response List Oauth Tokens For User V2 Auth Tokens Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Auth Service (v2)"],"summary":"Delete Oauth Tokens For User","description":"Delete all tokens for the current user for the given provider (across agents).","operationId":"delete_oauth_tokens_for_user_v2_auth_tokens_delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"query","required":true,"schema":{"type":"string","description":"OAuth provider ID to revoke for current user","title":"Provider Id"},"description":"OAuth provider ID to revoke for current user"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/token-events":{"get":{"tags":["Auth Service (v2)"],"summary":"List Token Events For User","description":"List the calling user's OAuth connection audit events, newest first.\n\nBacks the frontend \"your connection dropped, reconnect\" surface. Scoped to\nthe authenticated user + org; both come from the auth context, never from\nrequest input.","operationId":"list_token_events_for_user_v2_auth_token_events_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one OAuth provider","title":"Provider Id"},"description":"Filter to one OAuth provider"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Max events to return","default":50,"title":"Limit"},"description":"Max events to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TokenEventSummary"},"title":"Response List Token Events For User V2 Auth Token Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/tokens/{token_id}/metadata":{"patch":{"tags":["Auth Service (v2)"],"summary":"Update Token Label","description":"Update a token's provider_account_label. Only the token owner can update.","operationId":"update_token_label_v2_auth_tokens__token_id__metadata_patch","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string","title":"Token Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/tokens/import":{"post":{"tags":["Auth Service (v2)"],"summary":"Import Oauth Token","description":"Persist a directly-obtained OAuth token (no authorization-code exchange).\n\nThe Slack managed-install flow receives a bot token inline from\n``apps.managedInstall`` instead of through the browser OAuth redirect. This\nstores it (Fernet-encrypted at rest, via ``create_oauth_token``) for the\ncaller's org/user against an existing provider. Requiring the provider to\nalready exist in the caller's org scopes the write and blocks cross-org\ntoken creation. The token value is never logged or returned.","operationId":"import_oauth_token_v2_auth_tokens_import_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenImportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/tokens/{token_id}":{"delete":{"tags":["Auth Service (v2)"],"summary":"Delete Single Oauth Token","description":"Delete a specific OAuth token, revoking it at the provider first.\n\nOnly the token owner can delete it.","operationId":"delete_single_oauth_token_v2_auth_tokens__token_id__delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"token_id","in":"path","required":true,"schema":{"type":"string","title":"Token Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/tokens/exists":{"get":{"tags":["Auth Service (v2)"],"summary":"Check Oauth Token Exists","description":"Return whether the current user has any tokens for a given provider (across agents).","operationId":"check_oauth_token_exists_v2_auth_tokens_exists_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"provider_id","in":"query","required":true,"schema":{"type":"string","description":"OAuth provider ID","title":"Provider Id"},"description":"OAuth provider ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/tokens/exists/batch":{"post":{"tags":["Auth Service (v2)"],"summary":"Check Oauth Tokens Exist Batch","description":"Batch token-presence check: per requested provider, whether the current user has any token.","operationId":"check_oauth_tokens_exist_batch_v2_auth_tokens_exists_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenStatusBatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenStatusBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/tokens/workspace/slack/exists":{"get":{"tags":["Auth Service (v2)"],"summary":"Check Workspace Slack Tokens Exist","description":"Check if the workspace has any Slack tokens.","operationId":"check_workspace_slack_tokens_exist_v2_auth_tokens_workspace_slack_exists_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenStatusResponse"}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/tokens/workspace/slack":{"delete":{"tags":["Auth Service (v2)"],"summary":"Revoke All Slack Tokens For Workspace","description":"Revoke ALL Slack tokens for the workspace. Admin-only action that disconnects Slack entirely.\n\nThis is a destructive operation that:\n- Revokes all Slack tokens on Slack's side for all users in the workspace\n- Deletes all Slack tokens from the database","operationId":"revoke_all_slack_tokens_for_workspace_v2_auth_tokens_workspace_slack_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}]}},"/v2/auth/agents/{agent_id}/connections":{"get":{"tags":["Agent Connections (v2)"],"summary":"List Connections","operationId":"list_connections_v2_auth_agents__agent_id__connections_get","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","description":"Agent ID","title":"Agent Id"},"description":"Agent ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConnectionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Agent Connections (v2)"],"summary":"Create Connection","operationId":"create_connection_v2_auth_agents__agent_id__connections_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","description":"Agent ID","title":"Agent Id"},"description":"Agent ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentConnectionRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/agents/{agent_id}/connections/{connection_id}":{"delete":{"tags":["Agent Connections (v2)"],"summary":"Remove Connection","operationId":"remove_connection_v2_auth_agents__agent_id__connections__connection_id__delete","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","description":"Agent ID","title":"Agent Id"},"description":"Agent ID"},{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","description":"Connection ID","title":"Connection Id"},"description":"Connection ID"}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/agents/{agent_id}/providers/{provider_id}/tokens":{"post":{"tags":["Agent Connections (v2)"],"summary":"Upsert Agent Provider Token","description":"Import an OAuth token and bind it to the agent for the given provider.\n\nReplaces any prior connection for the same agent+provider. The previously\nlinked token is deleted only when it is agent-owned (no user owner) and no\nother agent connections still reference it — user vault credentials and\nshared tokens are left intact. Tokens are stored without a LangSmith user\nowner so synthetic MDA actor agent_ids resolve via the agent-connection path.","operationId":"upsert_agent_provider_token_v2_auth_agents__agent_id__providers__provider_id__tokens_post","security":[{"API Key":[]},{"Tenant ID":[]},{"Bearer Auth":[]}],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string","description":"Agent ID","title":"Agent Id"},"description":"Agent ID"},{"name":"provider_id","in":"path","required":true,"schema":{"type":"string","description":"OAuth provider ID","title":"Provider Id"},"description":"OAuth provider ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertAgentProviderTokenRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AgentConnectionListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AgentConnectionResponse"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AgentConnectionListResponse"},"AgentConnectionResponse":{"properties":{"id":{"type":"string","title":"Id"},"agent_id":{"type":"string","title":"Agent Id"},"oauth_token_id":{"type":"string","title":"Oauth Token Id"},"provider_id":{"type":"string","title":"Provider Id"},"provider_account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Account Label"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"created_by":{"type":"string","title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","agent_id","oauth_token_id","provider_id","provider_account_label","scopes","expires_at","created_by","created_at"],"title":"AgentConnectionResponse"},"AuthAuthenticateRequest":{"properties":{"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"ls_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ls User Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"provider":{"type":"string","title":"Provider"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"use_agent_builder_public_oauth":{"type":"boolean","title":"Use Agent Builder Public Oauth","default":false,"include_in_schema":false},"force_new":{"type":"boolean","title":"Force New","default":false},"token_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Token Id"},"redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect Uri"},"is_default":{"type":"boolean","title":"Is Default","default":true},"check_only":{"type":"boolean","title":"Check Only","default":false,"include_in_schema":false}},"type":"object","required":["provider","scopes"],"title":"AuthAuthenticateRequest","description":"Auth authenticate request."},"AuthAuthenticateResponse":{"properties":{"status":{"$ref":"#/components/schemas/AuthStatus"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"auth_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Id"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["status"],"title":"AuthAuthenticateResponse","description":"Auth authenticate response."},"AuthStatus":{"type":"string","enum":["completed","pending","connection_required","token_expired"],"title":"AuthStatus","description":"Valid authentication status values."},"AuthWaitResponse":{"properties":{"status":{"$ref":"#/components/schemas/AuthWaitStatus"},"token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},"type":"object","required":["status"],"title":"AuthWaitResponse","description":"Auth wait response."},"AuthWaitStatus":{"type":"string","enum":["completed","pending","timeout","not_found"],"title":"AuthWaitStatus","description":"Valid auth wait status values."},"AuthorizationCodeProviderCreateRequest":{"properties":{"provider_id":{"type":"string","title":"Provider Id"},"name":{"type":"string","title":"Name"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"grant_type":{"type":"string","const":"authorization_code","title":"Grant Type","default":"authorization_code"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"},"auth_url":{"type":"string","minLength":1,"title":"Auth Url"},"uses_pkce":{"type":"boolean","title":"Uses Pkce","default":false},"code_challenge_method":{"type":"string","title":"Code Challenge Method","default":"S256"},"provider_type":{"anyOf":[{"type":"string","enum":["microsoft","salesforce","slack","x"]},{"type":"null"}],"title":"Provider Type"},"token_endpoint_auth_method":{"type":"string","enum":["none","client_secret_basic","client_secret_post"],"title":"Token Endpoint Auth Method","default":"client_secret_post"},"authorization_params":{"additionalProperties":{"type":"string"},"type":"object","title":"Authorization Params"},"allowed_redirect_uris":{"items":{"type":"string"},"type":"array","title":"Allowed Redirect Uris"},"default_redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Redirect Uri"}},"type":"object","required":["provider_id","name","client_id","token_url","auth_url"],"title":"AuthorizationCodeProviderCreateRequest","description":"Create an authorization_code provider (the default when grant_type is omitted)."},"ClientCredentialsProviderCreateRequest":{"properties":{"provider_id":{"type":"string","title":"Provider Id"},"name":{"type":"string","title":"Name"},"client_id":{"type":"string","title":"Client Id"},"token_url":{"type":"string","title":"Token Url"},"grant_type":{"type":"string","const":"client_credentials","title":"Grant Type"},"client_secret":{"type":"string","minLength":1,"title":"Client Secret"},"token_endpoint_auth_method":{"type":"string","enum":["client_secret_basic","client_secret_post"],"title":"Token Endpoint Auth Method","default":"client_secret_post"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"token_params":{"$ref":"#/components/schemas/ClientCredentialsTokenParams-Input"}},"additionalProperties":false,"type":"object","required":["provider_id","name","client_id","token_url","grant_type","client_secret"],"title":"ClientCredentialsProviderCreateRequest","description":"Create a client_credentials provider.\n\nUnknown fields are rejected so authorization-code settings (auth_url, PKCE,\nredirect URIs) fail loudly instead of being silently dropped."},"ClientCredentialsTokenParams-Input":{"properties":{"audience":{"anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"title":"Audience"},"resource":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array","maxItems":10}],"title":"Resource"}},"additionalProperties":false,"type":"object","title":"ClientCredentialsTokenParams","description":"Optional extra fields for a client_credentials token request."},"ClientCredentialsTokenParams-Output":{"properties":{"audience":{"anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"title":"Audience"},"resource":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Resource"}},"additionalProperties":false,"type":"object","title":"ClientCredentialsTokenParams","description":"Optional extra fields for a client_credentials token request."},"Container":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the container. Must be a DNS_LABEL."},"image":{"type":"string","title":"Image","description":"Container image name."},"imagePullPolicy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Imagepullpolicy","description":"Image pull policy. One of Always, Never, IfNotPresent."},"command":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Command","description":"Entrypoint array. Not executed within a shell."},"args":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Args","description":"Arguments to the entrypoint."},"workingDir":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workingdir","description":"Container's working directory."},"env":{"anyOf":[{"items":{"$ref":"#/components/schemas/EnvVar"},"type":"array"},{"type":"null"}],"title":"Env","description":"List of environment variables to set in the container."},"envFrom":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Envfrom","description":"List of sources to populate environment variables in the container."},"resources":{"anyOf":[{"$ref":"#/components/schemas/ResourceRequirements"},{"type":"null"}],"description":"Compute resource requirements."},"volumeMounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/VolumeMount"},"type":"array"},{"type":"null"}],"title":"Volumemounts","description":"Pod volumes to mount into the container's filesystem."},"securityContext":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Securitycontext","description":"Security options the pod should run with."},"restartPolicy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Restartpolicy","description":"RestartPolicy for the container (for sidecar containers). One of Always, OnFailure."}},"type":"object","required":["name","image"],"title":"Container","description":"Container specification for init and sidecar containers."},"CreateAgentConnectionRequest":{"properties":{"oauth_token_id":{"type":"string","title":"Oauth Token Id"}},"type":"object","required":["oauth_token_id"],"title":"CreateAgentConnectionRequest"},"Deployment":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"Deployment name. Required when agent is omitted; retained as the agent identity in the production environment when agent associations are enabled. Omit when supplying agent to generate a deployment name."},"agent":{"anyOf":[{"$ref":"#/components/schemas/DeploymentAgent"},{"type":"null"}],"description":"Agent and environment to deploy. Both fields are required when supplied."},"source":{"type":"string","enum":["github","external_docker","internal_docker","internal_source","internal_template"],"title":"Source","description":"Deploy from a GitHub repository (`github`), an external Docker image (`external_docker`), a CLI-pushed image (`internal_docker`), uploaded source (`internal_source`), or a prebuilt LangChain template (`internal_template`).<br><br>Deploying from GitHub, internal Docker, internal source, or a template is only available for Cloud SaaS deployments. Deploying from an external Docker image is only available for self-hosted deployments. This cannot be changed once the deployment is created."},"source_config":{"$ref":"#/components/schemas/SourceConfig"},"source_revision_config":{"$ref":"#/components/schemas/SourceRevisionConfig"},"secrets":{"items":{"$ref":"#/components/schemas/Secret"},"type":"array","title":"Secrets"},"secret_references":{"anyOf":[{"items":{"$ref":"#/components/schemas/SecretReference"},"type":"array"},{"type":"null"}],"title":"Secret References","description":"List of Kubernetes Secret references.<br><br>Only applicable for `external_docker` source."},"shareable":{"type":"boolean","title":"Shareable","description":"Whether the deployment can be shared with LangSmith users outside the organization.","default":false},"route_through_gateway":{"type":"boolean","title":"Route Through Gateway","description":"Route OpenAI and Anthropic model calls through the LangSmith LLM gateway.","default":false},"id":{"type":"string","format":"uuid","title":"ID","description":"The ID of the deployment.<br><br>This is a read-only field."},"tenant_id":{"type":"string","format":"uuid","title":"Tenant ID","description":"The ID of the tenant that owns the deployment.<br><br>This is a read-only field."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"The creation time of the deployment.<br><br>This is a read-only field."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"The last update time of the deployment.<br><br>This is a read-only field."},"status":{"type":"string","enum":["AWAITING_DATABASE","READY","UNUSED","AWAITING_DELETE","AWAITING_FINAL_DELETE","UNKNOWN"],"title":"Status","description":"The status of the deployment.<br><br>This is a read-only field."},"latest_revision_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Latest Revision ID","description":"The ID of the latest revision of the deployment.<br><br>This is a read-only field."},"active_revision_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Active Revision ID","description":"The ID of the current (actively deployed) revision of the deployment.<br><br>This is a read-only field."},"tracer_session_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Tracer Session ID","description":"The ID of the LangSmith tracing project the deployment writes runs to.<br><br>This is a read-only field."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"URL","description":"The deployment's serving URL, once provisioned.<br><br>This is a read-only field."},"is_preview":{"type":"boolean","title":"Is Preview","description":"Whether this is a preview-build deployment. Full preview metadata (parent deployment, PR, lifecycle) is available from the preview-builds details endpoint.<br><br>This is a read-only field.","default":false},"image_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Version","description":"Image version of the deployment."},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name","description":"Human-readable display name for the deployment."},"is_managed_deep_agent":{"type":"boolean","title":"Is Managed Deep Agent","description":"Whether this deployment is a Managed Deep Agent deployment.<br><br>This is a read-only field.","default":false},"deployment_tier":{"anyOf":[{"$ref":"#/components/schemas/DeploymentTier"},{"type":"null"}],"title":"Deployment Tier","description":"The selected fixed resource tier for this deployment. Existing deployments without an explicit selection return the default tier for their deployment type. When compute and database tiers differ, this reflects the compute tier. Null when compute has a custom size."},"compute_tier":{"anyOf":[{"$ref":"#/components/schemas/DeploymentTier"},{"type":"string","const":"LEGACY_CUSTOM"},{"type":"null"}],"title":"Compute Tier","description":"The selected fixed resource tier for this deployment's compute. Deployments without an explicit selection return the default tier for their deployment type. `LEGACY_CUSTOM` means the compute has a custom size that matches no tier."},"database_tier":{"anyOf":[{"$ref":"#/components/schemas/DeploymentTier"},{"type":"string","const":"LEGACY_CUSTOM"},{"type":"null"}],"title":"Database Tier","description":"The selected fixed resource tier for this deployment's database. Deployments without an explicit selection return the default tier for their deployment type. `LEGACY_CUSTOM` means the database has a custom size that matches no tier."}},"type":"object","required":["source","source_config","source_revision_config","secrets","id","tenant_id","created_at","updated_at","status","latest_revision_id","active_revision_id"],"title":"Deployment","description":"Deployment resource."},"DeploymentAgent":{"properties":{"agent_id":{"type":"string","maxLength":255,"minLength":1,"title":"Agent Id"},"environment":{"type":"string","enum":["local","development","staging","production"],"title":"Environment"}},"type":"object","required":["agent_id","environment"],"title":"DeploymentAgent","description":"Agent identity and environment for a deployment."},"DeploymentCreateRequest":{"properties":{"name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Name","description":"Deployment name. Required when agent is omitted; retained as the agent identity in the production environment when agent associations are enabled. Omit when supplying agent to generate a deployment name."},"agent":{"anyOf":[{"$ref":"#/components/schemas/DeploymentAgent"},{"type":"null"}],"description":"Agent and environment to deploy. Both fields are required when supplied."},"source":{"type":"string","enum":["github","external_docker","internal_docker","internal_source","internal_template"],"title":"Source","description":"Deploy from a GitHub repository (`github`), an external Docker image (`external_docker`), a CLI-pushed image (`internal_docker`), uploaded source (`internal_source`), or a prebuilt LangChain template (`internal_template`).<br><br>Deploying from GitHub, internal Docker, internal source, or a template is only available for Cloud SaaS deployments. Deploying from an external Docker image is only available for self-hosted deployments. This cannot be changed once the deployment is created."},"source_config":{"$ref":"#/components/schemas/SourceConfigRequest"},"source_revision_config":{"$ref":"#/components/schemas/SourceRevisionConfigRequest"},"secrets":{"items":{"$ref":"#/components/schemas/Secret"},"type":"array","title":"Secrets"},"secret_references":{"anyOf":[{"items":{"$ref":"#/components/schemas/SecretReference"},"type":"array"},{"type":"null"}],"title":"Secret References","description":"List of Kubernetes Secret references.<br><br>Only applicable for `external_docker` source."},"shareable":{"type":"boolean","title":"Shareable","description":"Whether the deployment can be shared with LangSmith users outside the organization.","default":false},"route_through_gateway":{"type":"boolean","title":"Route Through Gateway","description":"Route OpenAI and Anthropic model calls through the LangSmith LLM gateway.","default":false}},"type":"object","required":["source","source_config","source_revision_config","secrets"],"title":"DeploymentCreateRequest","description":"Request body for creating a deployment."},"DeploymentLogEntry":{"properties":{"id":{"type":"string","title":"Id","description":"Identifier of the log line, unique within the deployment."},"timestamp":{"type":"integer","title":"Timestamp","description":"When the line was written, in Unix milliseconds."},"message":{"type":"string","title":"Message","description":"The log message, including any exception text."},"level":{"type":"string","title":"Level","description":"Severity, such as INFO or ERROR."},"source":{"anyOf":[{"type":"string","enum":["API","QUEUE","BUILD","PLATFORM"]},{"type":"null"}],"title":"Source","description":"What wrote the line: the API server, a queue worker, the image build, or the platform itself."},"replica":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replica","description":"Name of the replica (pod) that wrote the line."},"attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Attributes","description":"Selected fields of a structured (JSON) log line, such as run_id, thread_id and HTTP status. Limited to 8 KB per line."},"has_truncated_attributes":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Truncated Attributes","description":"Present and true when some attributes were left out to fit the limits."}},"type":"object","required":["id","timestamp","message","level"],"title":"DeploymentLogEntry","description":"One line of deployment build or server logs."},"DeploymentLogsList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DeploymentLogEntry"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","title":"DeploymentLogsList","description":"Canonical cursor-paginated deployment-log collection."},"DeploymentPatchRequest":{"properties":{"display_name":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Display Name","description":"Human-readable display name for the deployment. Updating this does not create a new revision."},"revision_source":{"anyOf":[{"type":"string","enum":["github","internal_docker","internal_source"]},{"type":"null"}],"title":"Revision Source","description":"Override the source for this revision. If omitted, falls back to deployment's default source."},"source_config":{"anyOf":[{"$ref":"#/components/schemas/SourceConfigRequest"},{"type":"null"}]},"source_revision_config":{"anyOf":[{"$ref":"#/components/schemas/SourceRevisionConfigRequest"},{"type":"null"}]},"tracked_repo_ref":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Tracked Repo Ref","description":"Retarget the git ref the deployment tracks without creating a new revision. Use `source_revision_config.repo_ref` to deploy from a ref instead."},"deployment_tier":{"anyOf":[{"$ref":"#/components/schemas/DeploymentTier"},{"type":"null"}],"title":"Deployment Tier","description":"Fixed resource tier to apply to the deployment. Serverless deployments support `SERVERLESS_S`, `SERVERLESS_M`, and `SERVERLESS_L`; dedicated deployments support `DEDICATED_S`, `DEDICATED_M`, and `DEDICATED_L`."},"secrets":{"anyOf":[{"items":{"$ref":"#/components/schemas/Secret"},"type":"array"},{"type":"null"}],"title":"Secrets"},"secret_references":{"anyOf":[{"items":{"$ref":"#/components/schemas/SecretReference"},"type":"array"},{"type":"null"}],"title":"Secret References","description":"List of Kubernetes Secret references.<br><br>Only applicable for `external_docker` source."},"route_through_gateway":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Route Through Gateway","description":"Enable or disable routing OpenAI and Anthropic model calls through the LangSmith LLM gateway."}},"type":"object","title":"DeploymentPatchRequest","description":"Request body for patching a deployment.<br>\n<br>\nPatching a deployment may trigger a new revision depending on the provided `source` configurations."},"DeploymentResourceTiersUpdateRequest":{"properties":{"compute_tier":{"anyOf":[{"$ref":"#/components/schemas/DeploymentTier"},{"type":"null"}],"title":"Compute Tier","description":"Fixed resource tier to apply to the deployment's compute. Serverless deployments support `SERVERLESS_S`, `SERVERLESS_M`, and `SERVERLESS_L`; dedicated deployments support `DEDICATED_S`, `DEDICATED_M`, and `DEDICATED_L`. Leave `null` to keep the current compute tier."},"database_tier":{"anyOf":[{"$ref":"#/components/schemas/DeploymentTier"},{"type":"null"}],"title":"Database Tier","description":"Fixed resource tier to apply to the deployment's database. Only supported for dedicated deployments (`DEDICATED_S`, `DEDICATED_M`, `DEDICATED_L`). Leave `null` to keep the current database tier."}},"type":"object","title":"DeploymentResourceTiersUpdateRequest","description":"Request body for updating a deployment's scaling configuration."},"DeploymentTier":{"type":"string","enum":["SERVERLESS_S","SERVERLESS_M","SERVERLESS_L","DEDICATED_S","DEDICATED_M","DEDICATED_L"],"title":"DeploymentTier"},"DeploymentTierUpdateRequest":{"properties":{"deployment_tier":{"$ref":"#/components/schemas/DeploymentTier","title":"Deployment Tier","description":"Fixed resource tier to apply to the deployment. Serverless deployments support `SERVERLESS_S`, `SERVERLESS_M`, and `SERVERLESS_L`; dedicated deployments support `DEDICATED_S`, `DEDICATED_M`, and `DEDICATED_L`."}},"type":"object","required":["deployment_tier"],"title":"DeploymentTierUpdateRequest","description":"Request body for updating a deployment's fixed resource tier."},"DeploymentsList":{"properties":{"resources":{"items":{"$ref":"#/components/schemas/Deployment"},"type":"array","title":"Resources"},"offset":{"type":"integer","title":"Offset","description":"Pagination offset. Pass this value to subsequent requests to fetch the next page."}},"type":"object","required":["resources","offset"],"title":"DeploymentsList"},"EngineInstallLink":{"properties":{"install_url":{"type":"string","title":"Install Url"}},"type":"object","required":["install_url"],"title":"EngineInstallLink","description":"Engine GitHub App connect-link response. Returned by\n`/forge/github/install`. `install_url` is now the *OAuth authorize* URL —\nthe user lands on GitHub OAuth first, the callback enumerates what they\ncan actually see, and either auto-routes to a fresh install or shows a\nserver-rendered picker. Field name kept for backwards compatibility with\nthe FE, but the contents changed."},"EnginePickerInstallOption":{"properties":{"installation_id":{"type":"integer","title":"Installation Id"},"account_login":{"type":"string","title":"Account Login"},"account_type":{"type":"string","title":"Account Type"},"already_in_org":{"type":"boolean","title":"Already In Org","default":false}},"type":"object","required":["installation_id","account_login","account_type"],"title":"EnginePickerInstallOption","description":"One row of the post-OAuth picker. Each one is an Engine install the\nuser has GitHub-side access to via the OAuth token captured at the\ncallback."},"EnginePickerSelectResponse":{"properties":{"redirect_url":{"type":"string","title":"Redirect Url"}},"type":"object","required":["redirect_url"],"title":"EnginePickerSelectResponse","description":"Response for POST /forge/github/picker-session/{id}/select. The FE\nnavigates the browser to `redirect_url` — that URL is either the FE\nresult page (for \"attach\") or a github.com install picker (for\n\"install_new\"). Returning JSON instead of 302 keeps the FE's POST-as-API\nflow predictable and lets it surface errors before navigating."},"EnginePickerSessionResponse":{"properties":{"installs":{"items":{"$ref":"#/components/schemas/EnginePickerInstallOption"},"type":"array","title":"Installs"},"return_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return To"}},"type":"object","required":["installs"],"title":"EnginePickerSessionResponse","description":"Payload for GET /forge/github/picker-session/{id}. The FE renders\n`installs` plus a hardcoded \"Install on a new GitHub org\" affordance.\n`return_to` round-trips back through the select endpoint so the final\nresult page lands the user back on their originating view."},"EnvVar":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the environment variable. Must be a C_IDENTIFIER."},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value","description":"Variable value. Defaults to empty string."},"valueFrom":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Valuefrom","description":"Source for the environment variable's value. Cannot be used if value is not empty."}},"type":"object","required":["name"],"title":"EnvVar","description":"Environment variable for a container."},"ForgeGithubInstallationsList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ForgeGithubIntegration"},"type":"array","title":"Items","description":"Forge GitHub App installations available to the workspace."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page, if one exists."}},"type":"object","required":["items"],"title":"ForgeGithubInstallationsList","description":"A page of Forge GitHub App installations."},"ForgeGithubIntegration":{"properties":{"id":{"type":"string","format":"uuid","title":"ID","description":"GitHub Integration ID.<br><br>For example, in the `POST /v2/deployments` request body, set `integration_id` to the value of this field."},"installation_id":{"type":"integer","title":"Installation ID","description":"GitHub installation ID."},"name":{"type":"string","title":"Name","description":"GitHub accout name."},"repository_selection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repository Selection","description":"Whether the GitHub App install grants access to 'all' repos or only 'selected' ones. When 'selected', newly created repos are not auto-included and must be added on GitHub."},"settings_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Settings URL","description":"Deep link to the install's GitHub settings page, where repo access can be edited. GitHub's installation `html_url`."}},"type":"object","required":["id","installation_id","name"],"title":"ForgeGithubIntegration","description":"Engine (\"forge\") install metadata. Extends the shared shape with two\nfields the Engine repo picker needs to recover from a \"selected\nrepositories\" install that doesn't grant the repo the user wants:\n`repository_selection` and `settings_url` (GitHub's per-install settings\npage, where repo access is edited). Kept off the base `GithubIntegration`\nso the public Deployments API contract is unchanged."},"ForgeGithubPickerSelectionRequest":{"properties":{"action":{"type":"string","enum":["ATTACH","INSTALL_NEW"],"title":"Action","description":"Whether to attach an installation or install the GitHub App."},"installation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installation Id","description":"GitHub installation ID required when action is ATTACH."}},"type":"object","required":["action"],"title":"ForgeGithubPickerSelectionRequest","description":"Selection from a Forge GitHub App installation picker."},"FreeDeploymentCountResponse":{"properties":{"count":{"type":"integer","title":"Count","description":"Number of free deployments currently used by the caller's organization."}},"type":"object","required":["count"],"title":"FreeDeploymentCountResponse","description":"Response body for the free-deployment count endpoint."},"GithubInstallLink":{"properties":{"install_url":{"type":"string","title":"Install Url"},"oauth_reuse_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Oauth Reuse Url"}},"type":"object","required":["install_url"],"title":"GithubInstallLink"},"GithubInstallLinkRequest":{"properties":{"return_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return To","description":"URL to return to after completing the GitHub App installation."}},"type":"object","title":"GithubInstallLinkRequest","description":"Request to create a GitHub App installation link."},"GithubInstallationsList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GithubIntegration"},"type":"array","title":"Items","description":"GitHub App installations available to the workspace."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page, if one exists."}},"type":"object","required":["items"],"title":"GithubInstallationsList","description":"A page of GitHub App installations."},"GithubIntegration":{"properties":{"id":{"type":"string","format":"uuid","title":"ID","description":"GitHub Integration ID.<br><br>For example, in the `POST /v2/deployments` request body, set `integration_id` to the value of this field."},"installation_id":{"type":"integer","title":"Installation ID","description":"GitHub installation ID."},"name":{"type":"string","title":"Name","description":"GitHub accout name."}},"type":"object","required":["id","installation_id","name"],"title":"GithubIntegration","description":"Metadata for a GitHub integration."},"GithubRepositoriesList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GithubRepository"},"type":"array","title":"Items","description":"GitHub repositories available through the installation."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor","description":"Opaque cursor for the next page, if one exists."}},"type":"object","required":["items"],"title":"GithubRepositoriesList","description":"A page of GitHub repositories."},"GithubRepository":{"properties":{"host_integration_id":{"type":"string","format":"uuid","title":"GitHub Integration ID","description":"GitHub Integration ID.<br><br>For example, in the `POST /v2/deployments` request body, set `integration_id` to the value of this field."},"id":{"type":"integer","title":"ID","description":"GitHub repository ID."},"name":{"type":"string","title":"Name","description":"GitHub repository name."},"owner":{"type":"string","title":"Owner","description":"GitHub repository owner."},"url":{"type":"string","title":"URL","description":"GitHub repository URL.<br><br>For example, in the `POST /v2/deployments` request body, set `source_config.repo_url` to the value of this field."},"default_branch":{"type":"string","title":"Default Branch","description":"GitHub repository default branch.<br><br>For example, in the `POST /v2/deployments` request body, set `source_revision_config.repo_ref` to the value of this field."}},"type":"object","required":["host_integration_id","id","name","owner","url","default_branch"],"title":"GithubRepository","description":"Metadata for a GitHub repository."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Listener":{"properties":{"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"The version of the listener."},"compute_type":{"type":"string","const":"k8s","title":"Compute Type","description":"The compute type of the listener.<br><br>This cannot be changed (`PUT`) once the listener is created."},"compute_id":{"type":"string","title":"Compute Id","description":"User assigned unique ID of the compute infrastructure for the listener.<br><br>For example, if `compute_type` is `k8s`, then the user may set this field to the Kubernetes cluster name. This cannot be changed (`PUT`) once the listener is created."},"compute_config":{"$ref":"#/components/schemas/ListenerComputeConfig"},"id":{"type":"string","format":"uuid","title":"ID","description":"System assigned ID of the listener.<br><br>This is a read-only field."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"The creation time of the listener.<br><br>This is a read-only field."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"The last update time of the listener.<br><br>This is a read-only field."}},"type":"object","required":["compute_type","compute_id","compute_config","id","created_at","updated_at"],"title":"Listener","description":"Listener resource."},"ListenerComputeConfig":{"properties":{"k8s_namespaces":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Kubernetes Namespaces","description":"A list of Kubernetes namespaces to which the listener is configured for.<br><br>Only applicable for `k8s` compute type."}},"type":"object","title":"ListenerComputeConfig","description":"Fields for a listener that are specific to `compute_type`.<br>\n<br>\nAll fields are nullable, but are validated based on `compute_type`."},"ListenerConfig":{"properties":{"k8s_namespace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"K8S Namespace","description":"Kubernetes namespace where the deployment will be deployed to.<br><br>This cannot be changed (`PATCH`) once the deployment is created. Only applicable for deployments of listeners with `k8s` compute type."}},"type":"object","title":"ListenerConfig","description":"Listener configuration for the deployment.<br>\n<br>\nAll fields are nullable, but are validated based on `compute_type` of the listener ID. Only applicable for `external_docker` source."},"ListenerCreateRequest":{"properties":{"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"The version of the listener."},"compute_type":{"type":"string","const":"k8s","title":"Compute Type","description":"The compute type of the listener.<br><br>This cannot be changed (`PUT`) once the listener is created."},"compute_id":{"type":"string","title":"Compute Id","description":"User assigned unique ID of the compute infrastructure for the listener.<br><br>For example, if `compute_type` is `k8s`, then the user may set this field to the Kubernetes cluster name. This cannot be changed (`PUT`) once the listener is created."},"compute_config":{"$ref":"#/components/schemas/ListenerComputeConfig"}},"type":"object","required":["compute_type","compute_id","compute_config"],"title":"ListenerCreateRequest","description":"Request body for creating a listener.<br>\n<br>\nA listener must have a unique combination of `workspace_id` and `compute_id`."},"ListenerPatchRequest":{"properties":{"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"The version of the listener."},"compute_config":{"anyOf":[{"$ref":"#/components/schemas/ListenerComputeConfig"},{"type":"null"}]}},"type":"object","title":"ListenerPatchRequest","description":"Requst body for patching a listener."},"ListenersList":{"properties":{"resources":{"items":{"$ref":"#/components/schemas/Listener"},"type":"array","title":"Resources"},"offset":{"type":"integer","title":"Offset","description":"Pagination offset. Pass this value to subsequent requests to fetch the next page."}},"type":"object","required":["resources","offset"],"title":"ListenersList"},"LocalObjectReference":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the referent (e.g., name of a Secret for imagePullSecrets)."}},"type":"object","required":["name"],"title":"LocalObjectReference","description":"Reference to an object in the same namespace."},"LogsResponse":{"properties":{"logs":{"items":{"$ref":"#/components/schemas/DeploymentLogEntry"},"type":"array","title":"Logs","default":[]},"next_offset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Offset"}},"type":"object","title":"LogsResponse","description":"Log lines plus a pagination cursor."},"MCPOAuthProviderCreateRequest":{"properties":{"provider_id":{"type":"string","title":"Provider Id"},"name":{"type":"string","title":"Name"},"mcp_server_url":{"type":"string","title":"Mcp Server Url"},"allowed_redirect_uris":{"items":{"type":"string"},"type":"array","title":"Allowed Redirect Uris"}},"type":"object","required":["provider_id","name","mcp_server_url"],"title":"MCPOAuthProviderCreateRequest","description":"Request model for creating OAuth provider via MCP auto-discovery."},"OAuthFinalizeRequest":{"properties":{"code":{"type":"string","title":"Code"},"state":{"type":"string","title":"State"}},"type":"object","required":["code","state"],"title":"OAuthFinalizeRequest","description":"Request model for OAuth callback finalization (frontend bridge and headless)."},"OAuthGrantType":{"type":"string","enum":["authorization_code","client_credentials"],"title":"OAuthGrantType","description":"OAuth 2 grant a provider uses to obtain access tokens."},"OAuthProviderResponse":{"properties":{"id":{"type":"string","title":"Id"},"organization_id":{"type":"string","title":"Organization Id"},"provider_id":{"type":"string","title":"Provider Id"},"name":{"type":"string","title":"Name"},"client_id":{"type":"string","title":"Client Id"},"auth_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Url"},"token_url":{"type":"string","title":"Token Url"},"grant_type":{"$ref":"#/components/schemas/OAuthGrantType","default":"authorization_code"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"token_params":{"$ref":"#/components/schemas/ClientCredentialsTokenParams-Output"},"uses_pkce":{"type":"boolean","title":"Uses Pkce"},"code_challenge_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge Method"},"provider_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Type"},"mcp_server_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp Server Url"},"token_endpoint_auth_method":{"type":"string","title":"Token Endpoint Auth Method","default":"client_secret_post"},"authorization_params":{"additionalProperties":{"type":"string"},"type":"object","title":"Authorization Params"},"is_dynamic_client":{"type":"boolean","title":"Is Dynamic Client","default":false},"allowed_redirect_uris":{"items":{"type":"string"},"type":"array","title":"Allowed Redirect Uris"},"default_redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Redirect Uri"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","provider_id","name","client_id","token_url","uses_pkce","code_challenge_method","created_at","updated_at"],"title":"OAuthProviderResponse","description":"Response model for OAuth provider."},"OAuthProviderUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"},"auth_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Url"},"token_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Url"},"uses_pkce":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Uses Pkce"},"code_challenge_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge Method"},"authorization_params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Authorization Params"},"scopes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scopes"},"token_params":{"anyOf":[{"$ref":"#/components/schemas/ClientCredentialsTokenParams-Input"},{"type":"null"}]},"allowed_redirect_uris":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Allowed Redirect Uris"},"default_redirect_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Redirect Uri"}},"type":"object","title":"OAuthProviderUpdateRequest","description":"Request model for updating OAuth provider."},"OAuthTokenImportRequest":{"properties":{"provider_id":{"type":"string","title":"Provider Id"},"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"},"expires_in_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Seconds"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":[]},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"},"is_default":{"type":"boolean","title":"Is Default","default":true}},"type":"object","required":["provider_id","access_token"],"title":"OAuthTokenImportRequest","description":"Import a directly-obtained OAuth token (no authorization-code exchange).\n\nUsed by the Slack managed-install flow, which receives a bot token inline\nfrom ``apps.managedInstall`` rather than via the browser OAuth redirect. The\ntoken is persisted for the caller's org/user against ``provider_id`` (which\nmust already exist in the caller's org)."},"OAuthTokenImportResponse":{"properties":{"token_id":{"type":"string","title":"Token Id"}},"type":"object","required":["token_id"],"title":"OAuthTokenImportResponse","description":"Response for a token import — the created token id only, no secrets."},"OAuthTokenStatusBatchRequest":{"properties":{"provider_ids":{"items":{"type":"string"},"type":"array","title":"Provider Ids"}},"type":"object","required":["provider_ids"],"title":"OAuthTokenStatusBatchRequest","description":"Provider IDs to check token presence for, for the current user."},"OAuthTokenStatusBatchResponse":{"properties":{"has_token":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Has Token"}},"type":"object","required":["has_token"],"title":"OAuthTokenStatusBatchResponse","description":"Per-provider token presence for the current user (provider_id -> has_token)."},"OAuthTokenStatusResponse":{"properties":{"has_token":{"type":"boolean","title":"Has Token"}},"type":"object","required":["has_token"],"title":"OAuthTokenStatusResponse","description":"Simple status indicating if a user has a token for a provider/agent."},"OAuthTokenSummary":{"properties":{"id":{"type":"string","title":"Id"},"provider_id":{"type":"string","title":"Provider Id"},"provider_account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Account Label"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":[]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"is_default":{"type":"boolean","title":"Is Default","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","provider_id","created_at","updated_at"],"title":"OAuthTokenSummary","description":"Public-facing token summary — no sensitive data."},"OAuthTokenUpdateRequest":{"properties":{"provider_account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Account Label"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Default"}},"type":"object","title":"OAuthTokenUpdateRequest","description":"Request model for updating a token's metadata."},"ResourceRequirements":{"properties":{"limits":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Limits","description":"Limits describes the maximum amount of compute resources allowed."},"requests":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Requests","description":"Requests describes the minimum amount of compute resources required."}},"type":"object","title":"ResourceRequirements","description":"Compute resource requirements."},"ResourceSpec-Input":{"properties":{"min_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Scale","description":"The minimum scale (number of replicas) of the deployment."},"max_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Scale","description":"The maximum scale (number of replicas) of the deployment."},"cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":8.0,"title":"CPU","description":"CPU request in cores for a single replica of the deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If cpu_limit is not set, limit defaults to 2x this value.","examples":[0.1,0.5,1,2,4]},"cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":16.0,"title":"CPU Limit","description":"CPU limit in cores for a single replica of the deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x cpu.","examples":[0.2,1,2,4,8,16]},"memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Memory (MB)","description":"Memory request (MB) of a single replica of the deployment. If memory_limit_mb is not set, limit defaults to 2x this value."},"memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Memory Limit (MB)","description":"Memory limit (MB) of a single replica of the deployment. If not set, defaults to 2x memory_mb."},"queue_min_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Min Scale","description":"The minimum scale (number of replicas) of the queue deployment. If not provided, defaults to the same value as `min_scale`."},"queue_max_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Max Scale","description":"The maximum scale (number of replicas) of the queue deployment. If not provided, defaults to the same value as `max_scale`."},"queue_cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":8.0,"title":"Queue CPU","description":"CPU request in cores for a single replica of the queue deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not provided, defaults to the same value as `cpu`. If queue_cpu_limit is not set, limit defaults to 2x this value.","examples":[0.1,0.5,1,2]},"queue_cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":16.0,"title":"Queue CPU Limit","description":"CPU limit in cores for a single replica of the queue deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x queue_cpu.","examples":[0.2,1,2,4,8]},"queue_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Memory (MB)","description":"Memory request (MB) of a single replica of the queue deployment. If not provided, defaults to the same value as `memory_mb`. If queue_memory_limit_mb is not set, limit defaults to 2x this value."},"queue_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Memory Limit (MB)","description":"Memory limit (MB) of a single replica of the queue deployment. If not set, defaults to 2x queue_memory_mb."},"redis_cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":8.0,"title":"Redis CPU","description":"CPU request in cores for the Redis deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If redis_cpu_limit is not set, limit defaults to 2x this value.","examples":[0.1,0.5,1,2]},"redis_cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":16.0,"title":"Redis CPU Limit","description":"CPU limit in cores for the Redis deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x redis_cpu.","examples":[0.2,1,2,4,8]},"redis_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redis Memory Mb","description":"Memory request (MB) of the Redis deployment. If redis_memory_limit_mb is not set, limit defaults to this value."},"redis_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redis Memory Limit (MB)","description":"Memory limit (MB) of the Redis deployment. If not set, defaults to redis_memory_mb."},"core_cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"title":"Core API CPU","description":"CPU request in cores for the core API process (only used when the deployment runs the core API as a sidecar). If core_cpu_limit is not set, limit defaults to 2x this value."},"core_cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"title":"Core API CPU Limit","description":"CPU limit in cores for the core API process. If not set, defaults to 2x core_cpu."},"core_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Core API Memory (MB)","description":"Memory request (MB) for the core API process. If core_memory_limit_mb is not set, limit defaults to 2x this value."},"core_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Core API Memory Limit (MB)","description":"Memory limit (MB) for the core API process. If not set, defaults to 2x core_memory_mb."},"labels":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Labels","description":"Additional labels to apply to resources created for the deployment."},"annotations":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Annotations","description":"Additional annotations to apply to resources created for the deployment."},"service_account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Account Name","description":"The name of the service account to use for the deployment.<br><br>This must already exist in the Kubernetes namespace where the deployment will be deployed to."},"image_pull_secrets":{"anyOf":[{"items":{"$ref":"#/components/schemas/LocalObjectReference"},"type":"array"},{"type":"null"}],"title":"Image Pull Secrets","description":"List of references to secrets in the same namespace to use for pulling container images. Each entry is a LocalObjectReference to a Secret of type kubernetes.io/dockerconfigjson."},"volumes":{"anyOf":[{"items":{"$ref":"#/components/schemas/Volume"},"type":"array"},{"type":"null"}],"title":"Volumes","description":"List of volumes that can be mounted by containers belonging to the pod. Reference the kubernetes documentation for more details on how to configure volumes."},"volume_mounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/VolumeMount"},"type":"array"},{"type":"null"}],"title":"Volume Mounts","description":"Pod volumes to mount into the container's filesystem. Reference the kubernetes documentation for more details on how to configure volume mounts."},"init_containers":{"anyOf":[{"items":{"$ref":"#/components/schemas/Container"},"type":"array"},{"type":"null"}],"title":"Init Containers","description":"List of initialization containers belonging to the pod. Init containers are set as initContainers in the pod spec and run to completion before the main application container starts."},"sidecars":{"anyOf":[{"items":{"$ref":"#/components/schemas/Container"},"type":"array"},{"type":"null"}],"title":"Sidecars","description":"List of sidecar containers that run alongside the main application container. These will be added to the pod spec as additional containers."},"db_cpu":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Database CPU","description":"CPU request of the Postgres database deployment. If db_cpu_limit is not set, limit defaults to 2x this value."},"db_cpu_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Database CPU Limit","description":"CPU limit of the Postgres database deployment. If not set, defaults to 2x db_cpu."},"db_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Memory (MB)","description":"Memory request (MB) of the Postgres database deployment. If db_memory_limit_mb is not set, limit defaults to 2x this value."},"db_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Memory Limit (MB)","description":"Memory limit (MB) of the Postgres database deployment. If not set, defaults to 2x db_memory_mb."},"db_storage_gi":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Storage (GiB)","description":"Storage (GiB) of the Postgres database deployment."},"db_max_connections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Max Connections","description":"Maximum number of connections allowed to the Postgres database."}},"type":"object","title":"ResourceSpec","description":"Resource specification for the deployment.<br>\n<br>\nWhen updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision and overwrite the existing resource_spec for the deployment. Only applicable for `external_docker` source."},"ResourceSpec-Output":{"properties":{"min_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Scale","description":"The minimum scale (number of replicas) of the deployment."},"max_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Scale","description":"The maximum scale (number of replicas) of the deployment."},"cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":8.0,"title":"CPU","description":"CPU request in cores for a single replica of the deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If cpu_limit is not set, limit defaults to 2x this value.","examples":[0.1,0.5,1,2,4]},"cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":16.0,"title":"CPU Limit","description":"CPU limit in cores for a single replica of the deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x cpu.","examples":[0.2,1,2,4,8,16]},"memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Memory (MB)","description":"Memory request (MB) of a single replica of the deployment. If memory_limit_mb is not set, limit defaults to 2x this value."},"memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Memory Limit (MB)","description":"Memory limit (MB) of a single replica of the deployment. If not set, defaults to 2x memory_mb."},"queue_min_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Min Scale","description":"The minimum scale (number of replicas) of the queue deployment. If not provided, defaults to the same value as `min_scale`."},"queue_max_scale":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Max Scale","description":"The maximum scale (number of replicas) of the queue deployment. If not provided, defaults to the same value as `max_scale`."},"queue_cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":8.0,"title":"Queue CPU","description":"CPU request in cores for a single replica of the queue deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not provided, defaults to the same value as `cpu`. If queue_cpu_limit is not set, limit defaults to 2x this value.","examples":[0.1,0.5,1,2]},"queue_cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":16.0,"title":"Queue CPU Limit","description":"CPU limit in cores for a single replica of the queue deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x queue_cpu.","examples":[0.2,1,2,4,8]},"queue_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Memory (MB)","description":"Memory request (MB) of a single replica of the queue deployment. If not provided, defaults to the same value as `memory_mb`. If queue_memory_limit_mb is not set, limit defaults to 2x this value."},"queue_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Queue Memory Limit (MB)","description":"Memory limit (MB) of a single replica of the queue deployment. If not set, defaults to 2x queue_memory_mb."},"redis_cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":8.0,"title":"Redis CPU","description":"CPU request in cores for the Redis deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If redis_cpu_limit is not set, limit defaults to 2x this value.","examples":[0.1,0.5,1,2]},"redis_cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"maximum":16.0,"title":"Redis CPU Limit","description":"CPU limit in cores for the Redis deployment. Supports fractional values (e.g. 0.5 for 500m). Values are rounded to 1 decimal place. If not set, defaults to 2x redis_cpu.","examples":[0.2,1,2,4,8]},"redis_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redis Memory Mb","description":"Memory request (MB) of the Redis deployment. If redis_memory_limit_mb is not set, limit defaults to this value."},"redis_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Redis Memory Limit (MB)","description":"Memory limit (MB) of the Redis deployment. If not set, defaults to redis_memory_mb."},"core_cpu":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"title":"Core API CPU","description":"CPU request in cores for the core API process (only used when the deployment runs the core API as a sidecar). If core_cpu_limit is not set, limit defaults to 2x this value."},"core_cpu_limit":{"anyOf":[{"type":"number","minimum":0.1},{"type":"null"}],"title":"Core API CPU Limit","description":"CPU limit in cores for the core API process. If not set, defaults to 2x core_cpu."},"core_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Core API Memory (MB)","description":"Memory request (MB) for the core API process. If core_memory_limit_mb is not set, limit defaults to 2x this value."},"core_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Core API Memory Limit (MB)","description":"Memory limit (MB) for the core API process. If not set, defaults to 2x core_memory_mb."},"labels":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Labels","description":"Additional labels to apply to resources created for the deployment."},"annotations":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Annotations","description":"Additional annotations to apply to resources created for the deployment."},"service_account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Service Account Name","description":"The name of the service account to use for the deployment.<br><br>This must already exist in the Kubernetes namespace where the deployment will be deployed to."},"image_pull_secrets":{"anyOf":[{"items":{"$ref":"#/components/schemas/LocalObjectReference"},"type":"array"},{"type":"null"}],"title":"Image Pull Secrets","description":"List of references to secrets in the same namespace to use for pulling container images. Each entry is a LocalObjectReference to a Secret of type kubernetes.io/dockerconfigjson."},"volumes":{"anyOf":[{"items":{"$ref":"#/components/schemas/Volume"},"type":"array"},{"type":"null"}],"title":"Volumes","description":"List of volumes that can be mounted by containers belonging to the pod. Reference the kubernetes documentation for more details on how to configure volumes."},"volume_mounts":{"anyOf":[{"items":{"$ref":"#/components/schemas/VolumeMount"},"type":"array"},{"type":"null"}],"title":"Volume Mounts","description":"Pod volumes to mount into the container's filesystem. Reference the kubernetes documentation for more details on how to configure volume mounts."},"init_containers":{"anyOf":[{"items":{"$ref":"#/components/schemas/Container"},"type":"array"},{"type":"null"}],"title":"Init Containers","description":"List of initialization containers belonging to the pod. Init containers are set as initContainers in the pod spec and run to completion before the main application container starts."},"sidecars":{"anyOf":[{"items":{"$ref":"#/components/schemas/Container"},"type":"array"},{"type":"null"}],"title":"Sidecars","description":"List of sidecar containers that run alongside the main application container. These will be added to the pod spec as additional containers."},"db_cpu":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Database CPU","description":"CPU request of the Postgres database deployment. If db_cpu_limit is not set, limit defaults to 2x this value."},"db_cpu_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Database CPU Limit","description":"CPU limit of the Postgres database deployment. If not set, defaults to 2x db_cpu."},"db_memory_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Memory (MB)","description":"Memory request (MB) of the Postgres database deployment. If db_memory_limit_mb is not set, limit defaults to 2x this value."},"db_memory_limit_mb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Memory Limit (MB)","description":"Memory limit (MB) of the Postgres database deployment. If not set, defaults to 2x db_memory_mb."},"db_storage_gi":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Storage (GiB)","description":"Storage (GiB) of the Postgres database deployment."},"db_max_connections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Database Max Connections","description":"Maximum number of connections allowed to the Postgres database."}},"type":"object","title":"ResourceSpec","description":"Resource specification for the deployment.<br>\n<br>\nWhen updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision and overwrite the existing resource_spec for the deployment. Only applicable for `external_docker` source."},"Revision":{"properties":{"id":{"type":"string","format":"uuid","title":"ID","description":"The ID of the revision.<br><br>This is a read-only field."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"The creation time of the revision.<br><br>This is a read-only field."},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"The last update time of the revision.<br><br>This is a read-only field."},"status":{"type":"string","enum":["CREATING","QUEUED","AWAITING_BUILD","BUILDING","AWAITING_DEPLOY","DEPLOYING","CREATE_FAILED","BUILD_FAILED","DEPLOY_FAILED","DEPLOYED","SKIPPED","INTERRUPTED","UNKNOWN"],"title":"Status","description":"The status of the revision.<br><br>This is a read-only field."},"status_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Message","description":"Human-readable detail about the current status, such as why a build or deploy failed.<br><br>This is a read-only field."},"source":{"type":"string","enum":["github","external_docker","internal_docker","internal_source","internal_template"],"title":"Source","description":"Deploy from a GitHub repository (`github`), an external Docker image (`external_docker`), a CLI-pushed image (`internal_docker`), uploaded source (`internal_source`), or a prebuilt LangChain template (`internal_template`).<br><br>Deploying from GitHub, internal Docker, internal source, or a template is only available for Cloud SaaS deployments. Deploying from an external Docker image is only available for self-hosted deployments. This cannot be changed once the deployment is created."},"source_revision_config":{"$ref":"#/components/schemas/SourceRevisionConfig"}},"type":"object","required":["id","created_at","updated_at","status","source","source_revision_config"],"title":"Revision","description":"Revision resource."},"RevisionCreateRequest":{"properties":{"revision_source":{"anyOf":[{"type":"string","enum":["github","internal_docker","internal_source"]},{"type":"null"}],"title":"Revision Source","description":"Override the source for this revision. If omitted, falls back to the deployment's default source."},"source_config":{"anyOf":[{"$ref":"#/components/schemas/SourceConfigRequest"},{"type":"null"}]},"source_revision_config":{"anyOf":[{"$ref":"#/components/schemas/SourceRevisionConfigRequest"},{"type":"null"}]},"secrets":{"anyOf":[{"items":{"$ref":"#/components/schemas/Secret"},"type":"array"},{"type":"null"}],"title":"Secrets"},"secret_references":{"anyOf":[{"items":{"$ref":"#/components/schemas/SecretReference"},"type":"array"},{"type":"null"}],"title":"Secret References"},"shareable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Shareable","description":"Whether the deployment can be shared with LangSmith users outside the organization after creating this revision. If omitted, the current sharing setting is preserved."},"route_through_gateway":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Route Through Gateway","description":"Enable or disable routing OpenAI and Anthropic model calls through the LangSmith LLM gateway."}},"type":"object","title":"RevisionCreateRequest","description":"Request body for creating a new revision of an existing deployment.\n\nThe revision-relevant subset of ``DeploymentPatchRequest``."},"RevisionsList":{"properties":{"resources":{"items":{"$ref":"#/components/schemas/Revision"},"type":"array","title":"Resources"},"offset":{"type":"integer","title":"Offset","description":"Pagination offset. Pass this value to subsequent requests to fetch the next page."}},"type":"object","required":["resources","offset"],"title":"RevisionsList"},"Secret":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the secret"},"value":{"type":"string","title":"Value","description":"Value of the secret"}},"type":"object","required":["name","value"],"title":"Secret","description":"Secret for a deployment.<br>\n<br>\nSecrets are accessible as environment variables in the deployment's container. In addition to user-defined secrets, Agent Server supports [pre-defined environment variables](https://langchain-ai.github.io/langgraph/cloud/reference/env_var/) that can be configured to augment the functionality of a deployment. When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision."},"SecretReference":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the environment variable to populate."},"secret_name":{"type":"string","title":"Secret Name","description":"Name of the Kubernetes Secret that already exists in the same namespace as the deployment."},"secret_key":{"type":"string","title":"Secret Key","description":"Key within the Kubernetes Secret whose value should be populated to the environment variable."}},"type":"object","required":["name","secret_name","secret_key"],"title":"SecretReference","description":"Reference to an existing Kubernetes Secret to populate an environment variable."},"SourceConfig":{"properties":{"integration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Integration ID","description":"The ID of the integration used for the deployment.<br><br>Retrieve this value from the `GET /v1/integrations/github/install` endpoint.<br><br>When updating a deployment (`PATCH`), this may be omitted while changing `repo_url`: the workspace integration with access to the new repository is used. Updating this field does not create a new revision. Only applicable for `github` source."},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repository URL","description":"The URL of the git repository used for the deployment.<br><br>When updating a deployment (`PATCH`), set this field to point the deployment at a renamed, transferred, or different repository. The repository must be accessible through one of the workspace's GitHub integrations and contain the deployment's LangGraph configuration file at the tracked git ref. Updating this field does not create a new revision; set `source_revision_config.repo_ref` in the same request to deploy from the new repository. Only applicable for `github` source."},"deployment_type":{"anyOf":[{"type":"string","enum":["dev_free","dev","prod","dev_zero","dev_free_zero"]},{"type":"null"}],"title":"Deployment Type","description":"The type of deployment to create.<br><br>See [Deployment Types](https://langchain-ai.github.io/langgraph/concepts/langgraph_control_plane/#deployment-types) for more details. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `github` source."},"build_on_push":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Build On Push","description":"Whether to build a new revision for the deployment on push to the `source_revision_config.repo_ref` (e.g. git branch).<br><br>Cannot be enabled when `source_revision_config.repo_ref` specifies a tag (starts with `refs/tags/`). Tags are immutable and cannot trigger automatic builds on push.<br><br>Only applicable for `github` source."},"custom_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom URL","description":"The custom URL of the deployment.<br><br>Updating this field creates a new revision to refresh the deployment URL in its environment.<br><br>This field can only be set for `external_docker` source deployments. However, it will be set automatically for `github` source deployments (read only)."},"resource_spec":{"anyOf":[{"$ref":"#/components/schemas/ResourceSpec-Output"},{"type":"null"}]},"listener_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Listener ID","description":"The ID of the listener used for the deployment.<br><br>Retrieve this value from the `GET /v2/listeners` endpoint. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `external_docker` source."},"listener_config":{"anyOf":[{"$ref":"#/components/schemas/ListenerConfig"},{"type":"null"}]},"install_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Command","description":"The custom install command to run for your deployment. This only applies to JS deployments using 'github' or 'internal_source'. Updating this field creates a new revision. This command will be run from the root of your repository - NOT where your langgraph.json file lives (unless these are the same place). If not provided, we will autodetect the command based on the presence of yarn/npm/etc. files."},"build_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Build Command","description":"The custom build command to run for your deployment. This only applies to JS deployments using 'github' or 'internal_source'. Updating this field creates a new revision. This command will be run from where your langgraph.json file lives. This is helpful for using shared workspaces in your deployments, without having to provide a postinstall command or something similar in your package.json."},"repo_branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo branch","description":"The git branch the deployment tracks for new revisions.<br><br>This is a read-only field. Only applicable for `github` source."}},"type":"object","title":"SourceConfig","description":"Source configuration."},"SourceConfigRequest":{"properties":{"integration_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Integration ID","description":"The ID of the integration used for the deployment.<br><br>Retrieve this value from the `GET /v1/integrations/github/install` endpoint.<br><br>When updating a deployment (`PATCH`), this may be omitted while changing `repo_url`: the workspace integration with access to the new repository is used. Updating this field does not create a new revision. Only applicable for `github` source."},"repo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repository URL","description":"The URL of the git repository used for the deployment.<br><br>When updating a deployment (`PATCH`), set this field to point the deployment at a renamed, transferred, or different repository. The repository must be accessible through one of the workspace's GitHub integrations and contain the deployment's LangGraph configuration file at the tracked git ref. Updating this field does not create a new revision; set `source_revision_config.repo_ref` in the same request to deploy from the new repository. Only applicable for `github` source."},"deployment_type":{"anyOf":[{"type":"string","enum":["dev_free","dev","prod","dev_zero","dev_free_zero"]},{"type":"null"}],"title":"Deployment Type","description":"The type of deployment to create.<br><br>See [Deployment Types](https://langchain-ai.github.io/langgraph/concepts/langgraph_control_plane/#deployment-types) for more details. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `github` source."},"build_on_push":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Build On Push","description":"Whether to build a new revision for the deployment on push to the `source_revision_config.repo_ref` (e.g. git branch).<br><br>Cannot be enabled when `source_revision_config.repo_ref` specifies a tag (starts with `refs/tags/`). Tags are immutable and cannot trigger automatic builds on push.<br><br>Only applicable for `github` source."},"custom_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom URL","description":"The custom URL of the deployment.<br><br>Updating this field creates a new revision to refresh the deployment URL in its environment.<br><br>This field can only be set for `external_docker` source deployments. However, it will be set automatically for `github` source deployments (read only)."},"resource_spec":{"anyOf":[{"$ref":"#/components/schemas/ResourceSpec-Input"},{"type":"null"}]},"listener_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Listener ID","description":"The ID of the listener used for the deployment.<br><br>Retrieve this value from the `GET /v2/listeners` endpoint. This cannot be changed (`PATCH`) once the deployment is created. Only applicable for `external_docker` source."},"listener_config":{"anyOf":[{"$ref":"#/components/schemas/ListenerConfig"},{"type":"null"}]},"install_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Command","description":"The custom install command to run for your deployment. This only applies to JS deployments using 'github' or 'internal_source'. Updating this field creates a new revision. This command will be run from the root of your repository - NOT where your langgraph.json file lives (unless these are the same place). If not provided, we will autodetect the command based on the presence of yarn/npm/etc. files."},"build_command":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Build Command","description":"The custom build command to run for your deployment. This only applies to JS deployments using 'github' or 'internal_source'. Updating this field creates a new revision. This command will be run from where your langgraph.json file lives. This is helpful for using shared workspaces in your deployments, without having to provide a postinstall command or something similar in your package.json."}},"type":"object","title":"SourceConfigRequest","description":"Deployment configuration fields specific to the `source`.<br>\n<br>\nAll fields are nullable, but are validated based on the `source`.\nUpdating `custom_url`, `resource_spec`, `install_command`, or `build_command` creates a new revision."},"SourceRevisionConfig":{"properties":{"repo_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo Ref","description":"The git ref of the repository used for the deployment.<br><br>Supports:<br>- **Branches**: Specify just the branch name (e.g., `main`, `develop`)<br>- **Tags**: Specify the full ref path (e.g., `refs/tags/v1.0.0`)<br><br>When using a tag, `source_config.build_on_push` must be set to `false` since tags are immutable.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Only applicable for `github` source."},"langgraph_config_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"LangGraph Configuration Path","description":"The path to the LangGraph configuration file (`langgraph.json`) used for the deployment.<br><br>Required on create for buildable sources (`github`, `internal_source`). Must be `null` for all other sources.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision."},"image_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image URI","description":"The URI of the Docker image used for the deployment.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Applicable for `external_docker` source."},"source_tarball_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Tarball Path","description":"The object path of the uploaded source tarball.<br><br>Must be an object path obtained from the `POST /deployments/{deployment_id}/upload-url` endpoint. Arbitrary paths are not accepted.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Only applicable for `internal_source` source."},"repo_commit_sha":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo commit SHA","description":"The commit SHA of the git repository used for the deployment.<br><br>This is a read-only field. Only applicable for `github` source."},"repo_commit_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo commit title","description":"The first line of the commit message at `repo_commit_sha`.<br><br>This is a read-only field. Only applicable for `github` source. `null` for revisions created before this field existed, or when GitHub could not return the commit."}},"type":"object","title":"SourceRevisionConfig","description":"Source revision configuration.<br>\n<br>\nFor a `Deployment` resource, the field values refer to the latest revision of the `Deployment`. For a `Revision` resource, the field values refer to the `Revision` itself."},"SourceRevisionConfigRequest":{"properties":{"repo_ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo Ref","description":"The git ref of the repository used for the deployment.<br><br>Supports:<br>- **Branches**: Specify just the branch name (e.g., `main`, `develop`)<br>- **Tags**: Specify the full ref path (e.g., `refs/tags/v1.0.0`)<br><br>When using a tag, `source_config.build_on_push` must be set to `false` since tags are immutable.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Only applicable for `github` source."},"langgraph_config_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"LangGraph Configuration Path","description":"The path to the LangGraph configuration file (`langgraph.json`) used for the deployment.<br><br>Required on create for buildable sources (`github`, `internal_source`). Must be `null` for all other sources.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision."},"image_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image URI","description":"The URI of the Docker image used for the deployment.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Applicable for `external_docker` source."},"source_tarball_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Tarball Path","description":"The object path of the uploaded source tarball.<br><br>Must be an object path obtained from the `POST /deployments/{deployment_id}/upload-url` endpoint. Arbitrary paths are not accepted.<br><br>When updating a deployment (`PATCH`), setting this field to a non-null value will trigger creation of a new revision. Only applicable for `internal_source` source."}},"type":"object","title":"SourceRevisionConfigRequest","description":"Fields for a deployment that are specific to the `source` and require a new revision when modified.<br>\n<br>\nAll fields are nullable, but are validated based on the `source`."},"TokenEventSummary":{"properties":{"id":{"type":"string","title":"Id"},"provider_id":{"type":"string","title":"Provider Id"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id"},"event_type":{"type":"string","title":"Event Type"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"provider_account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Account Label"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":[]},"detail":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Detail"},"acknowledged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Acknowledged At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","provider_id","event_type","created_at"],"title":"TokenEventSummary","description":"A single OAuth connection audit event, for the calling user.\n\nSurfaces why/when a connection was removed so the UI can prompt a reconnect.\nCarries no token or secret material."},"UpsertAgentProviderTokenRequest":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"},"expires_in_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In Seconds"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":[]},"provider_account_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Account Label"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["access_token"],"title":"UpsertAgentProviderTokenRequest","description":"Import an OAuth token and bind it to an agent for a provider.\n\nUsed by Managed Deep Agents Connect flows that obtain tokens out-of-band\n(e.g. Google OAuth for Gmail) and need them stored under a synthetic\nagent_id for toolserver resolution."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Volume":{"properties":{"name":{"type":"string","title":"Name","description":"Volume's name. Must be a DNS_LABEL and unique within the pod."},"configMap":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Configmap","description":"ConfigMap represents a configMap that should populate this volume."},"secret":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Secret","description":"Secret represents a secret that should populate this volume."},"emptyDir":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Emptydir","description":"EmptyDir represents a temporary directory that shares a pod's lifetime."},"persistentVolumeClaim":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Persistentvolumeclaim","description":"PersistentVolumeClaim represents a reference to a PersistentVolumeClaim."},"nfs":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Nfs","description":"NFS represents an NFS mount on the host that shares a pod's lifetime."},"projected":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Projected","description":"Projected represents a volume that projects several volume sources into the same directory."},"downwardAPI":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Downwardapi","description":"DownwardAPI represents downward API about the pod that should populate this volume."},"csi":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Csi","description":"CSI represents a volume that should be handled by an external CSI driver."}},"type":"object","title":"Volume","description":"Kubernetes Volume specification."},"VolumeMount":{"properties":{"name":{"type":"string","title":"Name","description":"This must match the Name of a Volume."},"mountPath":{"type":"string","title":"Mountpath","description":"Path within the container at which the volume should be mounted."},"subPath":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subpath","description":"Path within the volume from which the container's volume should be mounted."},"mountPropagation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mountpropagation","description":"Determines how mounts are propagated from the host to container and the other way around."},"readOnly":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Readonly","description":"Mounted read-only if true, read-write otherwise."},"subPathExpr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subpathexpr","description":"Expanded path within the volume from which the container's volume should be mounted."}},"type":"object","title":"VolumeMount","description":"Kubernetes VolumeMount specification."}},"securitySchemes":{"LangSmith API Key":{"type":"apiKey","in":"header","name":"X-Api-Key"}}}}