API & compatibility
OpenAPI 3.1 Specification
Machine-readable OpenAPI definition for supported customer REST endpoints.
{
"openapi": "3.1.0",
"info": {
"title": "Topline External API",
"version": "1.0.0",
"description": "Supported OAuth, Harness MCP, artifact-app, and Developer Access endpoints. Compatibility policy: https://topline.build/docs/api-lifecycle"
},
"servers": [
{
"url": "https://topline.build"
}
],
"paths": {
"/api/docs": {
"get": {
"operationId": "get_api_docs",
"tags": [
"Documentation"
],
"summary": "List or search the public documentation catalog with docs contract and build metadata.",
"security": [],
"parameters": [
{
"name": "q",
"in": "query",
"required": false,
"schema": {
"type": "string",
"maxLength": 200
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/docs/index.json": {
"get": {
"operationId": "get_api_docs_index_json",
"tags": [
"Documentation"
],
"summary": "Read the public-only documentation content bundle used by static renderers and agents.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/docs/{id}": {
"get": {
"operationId": "get_api_docs_id",
"tags": [
"Documentation"
],
"summary": "Read one public documentation entry as structured JSON.",
"security": [],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/docs/{id}.md": {
"get": {
"operationId": "get_api_docs_id_md",
"tags": [
"Documentation"
],
"summary": "Read one public documentation entry as Markdown.",
"security": [],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"text/markdown": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/docs/feedback": {
"post": {
"operationId": "post_api_docs_feedback",
"tags": [
"Documentation"
],
"summary": "Record a text-free helpful, not-helpful, or outdated signal for a current public document and optional heading.",
"security": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"kind": {
"type": "string",
"enum": [
"helpful",
"not_helpful",
"outdated"
]
},
"docId": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*quot;,
"maxLength": 80
},
"sectionId": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*quot;,
"maxLength": 80
}
},
"required": [
"kind",
"docId"
]
},
"example": {
"kind": "helpful",
"docId": "product-guide",
"sectionId": "start-with-a-project"
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"413": {
"description": "Feedback body exceeds 4 KiB.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"415": {
"description": "Content-Type must be application/json.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Process-local documentation feedback limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"description": "Seconds until this process-local window resets.",
"schema": {
"type": "integer",
"minimum": 1
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Documentation telemetry persistence is unavailable; retry later.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/docs/selection": {
"post": {
"operationId": "post_api_docs_selection",
"tags": [
"Documentation"
],
"summary": "Record a privacy-bounded public document selected from search using only the document id and allowlisted product terms.",
"security": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": false,
"properties": {
"docId": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*quot;,
"maxLength": 80
},
"knownTerms": {
"type": "array",
"maxItems": 12,
"uniqueItems": true,
"items": {
"type": "string"
}
}
},
"required": [
"docId",
"knownTerms"
]
},
"example": {
"docId": "build-mcp-guide",
"knownTerms": [
"build",
"mcp"
]
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"413": {
"description": "Selection body exceeds 4 KiB.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"415": {
"description": "Content-Type must be application/json.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Process-local documentation selection limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"description": "Seconds until this process-local window resets.",
"schema": {
"type": "integer",
"minimum": 1
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"503": {
"description": "Documentation telemetry persistence is unavailable; retry later.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/docs/openapi.json": {
"get": {
"operationId": "get_docs_openapi_json",
"tags": [
"Documentation"
],
"summary": "Read the generated OpenAPI 3.1 description of supported public endpoints.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/.well-known/oauth-protected-resource/mcp/build": {
"get": {
"operationId": "get_well_known_oauth_protected_resource_mcp_build",
"tags": [
"OAuth"
],
"summary": "OAuth protected-resource metadata for Topline Build MCP clients.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/.well-known/oauth-protected-resource/mcp/workspace": {
"get": {
"operationId": "get_well_known_oauth_protected_resource_mcp_workspace",
"tags": [
"OAuth"
],
"summary": "OAuth protected-resource metadata for Topline Workspace MCP clients.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/.well-known/oauth-protected-resource/mcp/harness": {
"get": {
"operationId": "get_well_known_oauth_protected_resource_mcp_harness",
"tags": [
"OAuth"
],
"summary": "OAuth protected-resource metadata for Harness MCP clients.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/.well-known/oauth-protected-resource": {
"get": {
"operationId": "get_well_known_oauth_protected_resource",
"tags": [
"OAuth"
],
"summary": "Compatibility alias for Harness OAuth protected-resource metadata.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/.well-known/oauth-authorization-server": {
"get": {
"operationId": "get_well_known_oauth_authorization_server",
"tags": [
"OAuth"
],
"summary": "OAuth authorization-server metadata and supported scopes.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/.well-known/openid-configuration": {
"get": {
"operationId": "get_well_known_openid_configuration",
"tags": [
"OAuth"
],
"summary": "Compatibility alias for Harness OAuth authorization-server metadata.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/oauth/register": {
"post": {
"operationId": "post_oauth_register",
"tags": [
"OAuth"
],
"summary": "Register a public OAuth client and approved redirect URIs.",
"security": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"client_name": {
"type": "string"
},
"redirect_uris": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
},
"grant_types": {
"type": "array",
"items": {
"type": "string"
}
},
"response_types": {
"type": "array",
"items": {
"type": "string"
}
},
"token_endpoint_auth_method": {
"type": "string",
"const": "none"
}
},
"required": [
"redirect_uris"
]
}
}
}
},
"responses": {
"201": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/oauth/authorize": {
"get": {
"operationId": "get_oauth_authorize",
"tags": [
"OAuth"
],
"summary": "Authorize an MCP client with PKCE and explicit scopes.",
"security": [
{
"browserSession": []
}
],
"parameters": [
{
"name": "response_type",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "client_id",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "redirect_uri",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "resource",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "scope",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "code_challenge",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "code_challenge_method",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "state",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/oauth/token": {
"post": {
"operationId": "post_oauth_token",
"tags": [
"OAuth"
],
"summary": "Exchange an authorization code or refresh token for an access token.",
"security": [],
"requestBody": {
"required": true,
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/oauth/revoke": {
"post": {
"operationId": "post_oauth_revoke",
"tags": [
"OAuth"
],
"summary": "Revoke the OAuth access or refresh token supplied in the request body.",
"security": [],
"requestBody": {
"required": true,
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/mcp/build": {
"get": {
"operationId": "get_mcp_build",
"tags": [
"MCP"
],
"summary": "Return the Topline Build MCP identity and artifact tool inventory.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"post": {
"operationId": "post_mcp_build",
"tags": [
"MCP"
],
"summary": "Invoke the Topline Build MCP streamable HTTP endpoint.",
"security": [
{
"oauth2": []
},
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JsonRpcRequest"
},
"example": {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JsonRpcResponse"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/mcp/workspace": {
"get": {
"operationId": "get_mcp_workspace",
"tags": [
"MCP"
],
"summary": "Return the Topline Workspace MCP identity and workspace tool inventory.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"post": {
"operationId": "post_mcp_workspace",
"tags": [
"MCP"
],
"summary": "Invoke the Topline Workspace MCP streamable HTTP endpoint.",
"security": [
{
"oauth2": []
},
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JsonRpcRequest"
},
"example": {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JsonRpcResponse"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/mcp/harness": {
"get": {
"operationId": "get_mcp_harness",
"tags": [
"MCP"
],
"summary": "Return Harness MCP server identity and the unfiltered tool-name inventory.",
"security": [],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
},
"post": {
"operationId": "post_mcp_harness",
"tags": [
"MCP"
],
"summary": "Invoke the streamable HTTP Harness MCP JSON-RPC endpoint.",
"security": [
{
"oauth2": []
},
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JsonRpcRequest"
},
"example": {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JsonRpcResponse"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness/artifact-apps": {
"post": {
"operationId": "post_api_harness_artifact_apps",
"tags": [
"Artifact Apps"
],
"summary": "Create or update a private artifact-app draft.",
"security": [
{
"oauth2": [
"harness:artifact:write"
]
},
{
"bearerAuth": []
}
],
"x-required-scope": "harness:artifact:write",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ArtifactAppManifestV2"
},
{
"type": "object",
"properties": {
"artifactId": {
"type": "string"
},
"manifest": {
"$ref": "#/components/schemas/ArtifactAppManifestV2"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"projectId": {
"type": "string"
}
},
"required": [
"manifest"
]
}
]
}
}
}
},
"responses": {
"201": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness/artifact-apps/{artifactId}/deploy-bundle": {
"post": {
"operationId": "post_api_harness_artifact_apps_artifactId_deploy_bundle",
"tags": [
"Artifact Apps"
],
"summary": "Upload and deploy a validated artifact-app tar.gz bundle.",
"security": [
{
"oauth2": [
"harness:artifact:deploy"
]
},
{
"bearerAuth": []
}
],
"x-required-scope": "harness:artifact:deploy",
"parameters": [
{
"name": "artifactId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "X-Platform-Artifact-Version-Id",
"in": "header",
"schema": {
"type": "string"
}
},
{
"name": "X-Platform-App-Dir",
"in": "header",
"schema": {
"type": "string",
"default": "."
}
}
],
"requestBody": {
"required": true,
"content": {
"application/gzip": {
"schema": {
"type": "string",
"contentEncoding": "base64"
}
}
}
},
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness/artifact-apps/{artifactId}/deployments": {
"get": {
"operationId": "get_api_harness_artifact_apps_artifactId_deployments",
"tags": [
"Artifact Apps"
],
"summary": "List recent draft deployment state and readiness.",
"security": [
{
"oauth2": [
"harness:artifact:read"
]
},
{
"bearerAuth": []
}
],
"x-required-scope": "harness:artifact:read",
"parameters": [
{
"name": "artifactId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness/artifact-apps/{artifactId}/logs": {
"get": {
"operationId": "get_api_harness_artifact_apps_artifactId_logs",
"tags": [
"Artifact Apps"
],
"summary": "Read bounded and redacted artifact deployment logs.",
"security": [
{
"oauth2": [
"harness:artifact:read"
]
},
{
"bearerAuth": []
}
],
"x-required-scope": "harness:artifact:read",
"parameters": [
{
"name": "artifactId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "deploymentRecordId",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "environment",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"default": 50
}
},
{
"name": "severity",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "contains",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "since",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "windowMinutes",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "trace",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "requestId",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "route",
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors": {
"get": {
"operationId": "get_api_harness_connectors",
"tags": [
"Developer Access"
],
"summary": "Read Developer Access configuration and the current operator's connector tokens.",
"security": [
{
"browserSession": []
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors/products/{product}/verifications": {
"post": {
"operationId": "post_api_harness_connectors_products_product_verifications",
"tags": [
"Developer Access"
],
"summary": "Create a short-lived, product-bound MCP connection verification challenge.",
"security": [
{
"browserSession": []
}
],
"parameters": [
{
"name": "product",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors/products/{product}/verifications/{verificationId}": {
"get": {
"operationId": "get_api_harness_connectors_products_product_verifications_verificationId",
"tags": [
"Developer Access"
],
"summary": "Read the owner-scoped result of an MCP connection verification challenge.",
"security": [
{
"browserSession": []
}
],
"parameters": [
{
"name": "product",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "verificationId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors/oauth-authorizations/{authorizationId}/revoke": {
"post": {
"operationId": "post_api_harness_connectors_oauth_authorizations_authorizationId_revoke",
"tags": [
"Developer Access"
],
"summary": "Revoke one active OAuth authorization owned by the current operator.",
"security": [
{
"browserSession": []
}
],
"parameters": [
{
"name": "authorizationId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors/bedrock-token": {
"post": {
"operationId": "post_api_harness_connectors_bedrock_token",
"tags": [
"Developer Access"
],
"summary": "Generate a one-hour Bedrock key from the customer-account runtime role.",
"security": [
{
"browserSession": []
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors/tokens": {
"post": {
"operationId": "post_api_harness_connectors_tokens",
"tags": [
"Developer Access"
],
"summary": "Create a manual fallback connector token.",
"security": [
{
"browserSession": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 80
},
"clientKind": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"expiresInDays": {
"type": "integer",
"minimum": 1,
"maximum": 180
}
},
"required": [
"name"
]
}
}
}
},
"responses": {
"201": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/harness-connectors/tokens/{tokenId}/revoke": {
"post": {
"operationId": "post_api_harness_connectors_tokens_tokenId_revoke",
"tags": [
"Developer Access"
],
"summary": "Revoke one connector token owned by the current operator.",
"security": [
{
"browserSession": []
}
],
"parameters": [
{
"name": "tokenId",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Successful response.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Invalid request.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"401": {
"description": "Authentication required or invalid.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"403": {
"description": "Required scope, capability, tenant, or resource access is missing.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"404": {
"description": "Resource not found within the caller's boundary.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"429": {
"description": "Rate limit reached.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"500": {
"description": "Unexpected platform failure.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer"
},
"browserSession": {
"type": "apiKey",
"in": "cookie",
"name": "platform_session"
},
"oauth2": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://topline.build/oauth/authorize",
"tokenUrl": "https://topline.build/oauth/token",
"refreshUrl": "https://topline.build/oauth/token",
"scopes": {
"docs:read": "Search and read documentation.",
"chat:read": "List and read conversations visible to the current user.",
"harness:artifact:read": "Read artifact status and logs.",
"harness:artifact:write": "Create or update artifact drafts.",
"harness:artifact:deploy": "Deploy artifact drafts.",
"harness:artifact:delete": "Plan and delete eligible private artifact drafts.",
"memory:read": "Read approved preferences.",
"glossary:read": "Read approved glossary terms."
}
}
}
}
},
"schemas": {
"ArtifactAppManifestV2": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Platform Artifact App Manifest v2",
"type": "object",
"required": [
"manifestVersion",
"id",
"title",
"kind",
"runtime",
"build",
"validation",
"routes",
"sourceBindings",
"env",
"viewerPolicy"
],
"additionalProperties": false,
"properties": {
"manifestVersion": {
"const": 2
},
"id": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string",
"minLength": 1
},
"kind": {
"type": "string",
"enum": [
"dashboard",
"mini_page",
"briefing",
"table",
"tool"
]
},
"runtime": {
"type": "object",
"required": [
"target",
"region",
"entryPoint"
],
"additionalProperties": false,
"properties": {
"target": {
"type": "string",
"enum": [
"aws_lambda_function_url"
]
},
"region": {
"type": "string",
"minLength": 1
},
"entryPoint": {
"type": "string",
"minLength": 1
},
"language": {
"type": "string",
"enum": [
"node",
"python"
]
},
"functionName": {
"type": "string",
"minLength": 1
}
}
},
"build": {
"type": "object",
"required": [
"command"
],
"additionalProperties": false,
"properties": {
"command": {
"type": "string",
"minLength": 1
},
"outputDir": {
"type": "string",
"minLength": 1
}
}
},
"validation": {
"type": "object",
"additionalProperties": false,
"properties": {
"localCommand": {
"type": "string",
"minLength": 1
},
"testCommand": {
"type": "string",
"minLength": 1
}
}
},
"routes": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"kind"
],
"additionalProperties": false,
"properties": {
"path": {
"type": "string",
"pattern": "^/"
},
"kind": {
"type": "string",
"enum": [
"page",
"api",
"asset"
]
},
"handler": {
"type": "string",
"minLength": 1
}
}
}
},
"sourceBindings": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"sourceId",
"resource",
"mode",
"access"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+quot;
},
"sourceId": {
"type": "string",
"minLength": 1
},
"resource": {
"type": "string",
"minLength": 1
},
"mode": {
"type": "string",
"enum": [
"live"
]
},
"access": {
"type": "string",
"enum": [
"viewer",
"service_aggregate"
]
},
"tokenAudience": {
"type": "string",
"minLength": 1
},
"projection": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"maxRows": {
"type": "integer",
"minimum": 1,
"maximum": 5000
},
"maxBytes": {
"type": "integer",
"minimum": 10000,
"maximum": 5000000
},
"timeoutMs": {
"type": "integer",
"minimum": 1000,
"maximum": 60000
},
"rateLimitPerMinute": {
"type": "number",
"minimum": 1
},
"viewerRateLimitPerMinute": {
"type": "number",
"minimum": 1
},
"cacheTtlSeconds": {
"type": "number",
"minimum": 0
},
"viewerPolicy": {
"type": "object",
"additionalProperties": false,
"properties": {
"requiresSession": {
"type": "boolean"
},
"emailField": {
"type": "string",
"minLength": 1
}
}
},
"aggregate": {
"type": "object",
"additionalProperties": false,
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"count"
]
},
"groupBy": {
"type": "string",
"minLength": 1
},
"countField": {
"type": "string",
"minLength": 1
}
}
}
}
}
},
"secretBindings": {
"type": "array",
"maxItems": 20,
"items": {
"type": "object",
"required": [
"name",
"env",
"secretArn"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+quot;
},
"env": {
"type": "string",
"pattern": "^[A-Z_][A-Z0-9_]*_SECRET_ARNquot;
},
"secretArn": {
"type": "string",
"pattern": "^arn:aws(?:-[a-z]+)?:secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:[^\\s*?{}]+quot;
}
}
}
},
"datasets": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"route",
"mode"
],
"additionalProperties": false,
"allOf": [
{
"not": {
"required": [
"queryRef",
"sql"
]
}
},
{
"if": {
"properties": {
"mode": {
"enum": [
"live",
"precomputed"
]
}
},
"required": [
"mode"
]
},
"then": {
"required": [
"sql"
]
}
}
],
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+quot;
},
"route": {
"type": "string",
"pattern": "^/_artifact/data/[A-Za-z0-9_-]+quot;
},
"mode": {
"type": "string",
"enum": [
"live",
"precomputed"
]
},
"paramsSchema": {
"type": "object",
"additionalProperties": true
},
"warmParams": {
"type": "array",
"minItems": 1,
"maxItems": 50,
"items": {
"type": "object",
"additionalProperties": true
}
},
"queryRef": {
"type": "string",
"minLength": 1
},
"sql": {
"type": "string",
"minLength": 1
},
"maxRows": {
"type": "number",
"minimum": 1
},
"maxBytes": {
"type": "number",
"minimum": 1024
},
"timeoutMs": {
"type": "number",
"minimum": 1
},
"cacheTtlSeconds": {
"type": "number",
"minimum": 0
}
}
}
},
"refreshSchedules": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"mode",
"cron",
"timezone",
"promptText"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+quot;
},
"mode": {
"type": "string",
"enum": [
"precompute_static",
"refresh_live_cache",
"maintenance"
]
},
"cron": {
"type": "string",
"minLength": 1
},
"timezone": {
"type": "string",
"minLength": 1
},
"promptText": {
"type": "string",
"minLength": 1
},
"outputStrategy": {
"type": "string",
"enum": [
"new_per_fire",
"existing_thread",
"silent"
]
},
"enabled": {
"type": "boolean"
},
"scheduleId": {
"type": "string",
"minLength": 1
}
}
}
},
"env": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"viewerPolicy": {
"type": "string",
"enum": [
"private",
"tenant"
]
}
}
},
"Error": {
"type": "object",
"properties": {
"ok": {
"type": "boolean",
"const": false
},
"error": {
"type": "string"
},
"detail": {
"type": "string"
}
},
"required": [
"error"
]
},
"JsonRpcRequest": {
"type": "object",
"properties": {
"jsonrpc": {
"const": "2.0"
},
"id": {
"type": [
"string",
"number",
"null"
]
},
"method": {
"type": "string"
},
"params": {
"type": "object"
}
},
"required": [
"jsonrpc",
"method"
]
},
"JsonRpcResponse": {
"type": "object",
"properties": {
"jsonrpc": {
"const": "2.0"
},
"id": {
"type": [
"string",
"number",
"null"
]
},
"result": {},
"error": {
"type": "object"
}
},
"required": [
"jsonrpc"
]
}
}
}
}