LangSmith Deployment Control Plane API

The LangSmith Deployment Control Plane API is used to programmatically create and manage Agent Server deployments for LangGraph Platform. The API can be orchestrated to create custom CI/CD workflows for deployments, revisions, integrations (GitHub, Forge), authentication providers, and agent connections. Authentication uses the X-Api-Key header.

OpenAPI Specification

langgraph-openapi.json Raw ↑
{"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/GithubIntegration"},"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":"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"],"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."}],"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."}}}},"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/{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 tracing project for the deployment.","default":false,"title":"Delete Tracing Project"},"description":"Optionally delete tracing project for the deployment."}],"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}/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"}}}}}}},"/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/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/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":{"$ref":"#/components/schemas/OAuthProviderCreateRequest"}}},"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/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\nProcesses the OAuth token exchange, then redirects to the frontend callback\npage for a consistent UI experience.","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","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)"],"sum

# --- truncated at 32 KB (96 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/langgraph/refs/heads/main/openapi/langgraph-openapi.json