{
    "swagger": "2.0",
    "info": {
        "description": "API for interacting with Marmot",
        "title": "Marmot API",
        "contact": {},
        "license": {
            "name": "MIT",
            "url": "https://opensource.org/license/MIT"
        },
        "version": "0.1"
    },
    "basePath": "/api/v1",
    "paths": {
        "/admin/search/reindex": {
            "get": {
                "description": "Check whether a search reindex is currently running and whether Elasticsearch is configured.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Get reindex status",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ReindexStatusResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Trigger a full reindex from PostgreSQL to Elasticsearch. The reindex runs asynchronously in the background. Only one reindex can run at a time.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "admin"
                ],
                "summary": "Start search reindex",
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "schema": {
                            "$ref": "#/definitions/ReindexAcceptedResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "503": {
                        "description": "Service Unavailable",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/agents/runs": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agents"
                ],
                "summary": "Record agent run",
                "parameters": [
                    {
                        "description": "Agent run record",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/RecordRunRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/AgentRun"
                        }
                    }
                }
            }
        },
        "/agents/{asset_id}/activity": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agents"
                ],
                "summary": "Agent activity",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agent asset id",
                        "name": "asset_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Lookback window (e.g. 24h, 7d). Default 24h.",
                        "name": "period",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ActivityResponse"
                        }
                    }
                }
            }
        },
        "/agents/{asset_id}/runs": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agents"
                ],
                "summary": "List agent runs",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agent asset id",
                        "name": "asset_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Lookback window (e.g. 24h, 7d). Default 24h.",
                        "name": "period",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Max number of runs to return",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/RunsResponse"
                        }
                    }
                }
            }
        },
        "/agents/{asset_id}/stats": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "agents"
                ],
                "summary": "Agent stats",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Agent asset id",
                        "name": "asset_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Lookback window (e.g. 24h, 7d). Default 24h.",
                        "name": "period",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Stats"
                        }
                    }
                }
            }
        },
        "/api/v1/assets/preview/{id}": {
            "get": {
                "description": "Fetches sample data from the asset's data source. Requires assets:preview permission.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get preview data for an asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/PreviewResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Missing assets:preview permission",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "501": {
                        "description": "Data preview not supported for this asset",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/runs": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "List ingestion job runs",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Filter by schedule ID",
                        "name": "schedule_id",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ListJobRunsResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/runs/{id}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "Get a job run by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Job run ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/JobRun"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/runs/{id}/cancel": {
            "post": {
                "tags": [
                    "ingestion"
                ],
                "summary": "Cancel a running job",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Job run ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/runs/{id}/entities": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "Get entities for a job run",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Job run ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/schedules": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "List ingestion schedules",
                "parameters": [
                    {
                        "type": "boolean",
                        "description": "Filter by enabled status",
                        "name": "enabled",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ListSchedulesResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "Create a new ingestion schedule",
                "parameters": [
                    {
                        "description": "Schedule configuration",
                        "name": "schedule",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateScheduleRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/Schedule"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/schedules/{id}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "Get an ingestion schedule by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Schedule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Schedule"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "Update an ingestion schedule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Schedule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Updated schedule configuration",
                        "name": "schedule",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateScheduleRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Schedule"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "ingestion"
                ],
                "summary": "Delete an ingestion schedule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Schedule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/schedules/{id}/trigger": {
            "post": {
                "tags": [
                    "ingestion"
                ],
                "summary": "Manually trigger an ingestion schedule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Schedule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/JobRun"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/ingestion/validate": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ingestion"
                ],
                "summary": "Validate plugin configuration",
                "parameters": [
                    {
                        "description": "Config to validate",
                        "name": "config",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/ValidateConfigRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ValidateConfigResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/lineage": {
            "post": {
                "description": "Process OpenLineage run events and update assets/lineage accordingly",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "lineage"
                ],
                "summary": "Ingest OpenLineage event",
                "parameters": [
                    {
                        "description": "OpenLineage run event",
                        "name": "event",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/RunEvent"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Event processed successfully"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/plugins/aws/credentials/status": {
            "get": {
                "description": "Detects if AWS credentials are available from environment or config files",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "plugins"
                ],
                "summary": "Get AWS credential detection status",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AWSCredentialStatus"
                        }
                    }
                }
            }
        },
        "/asset-rules": {
            "post": {
                "description": "Create a new asset rule that applies enrichments to matching assets",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "Create an asset rule",
                "parameters": [
                    {
                        "description": "Asset rule creation request",
                        "name": "rule",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateAssetRuleRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/AssetRule"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/asset-rules/assets/{id}": {
            "get": {
                "description": "Get the list of asset IDs matched by an asset rule",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "Get assets matched by a rule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset rule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/asset-rules/list": {
            "get": {
                "description": "List all asset rules with pagination",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "List asset rules",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetRuleListResult"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/asset-rules/preview": {
            "post": {
                "description": "Preview which assets would match a rule configuration",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "Preview an asset rule",
                "parameters": [
                    {
                        "description": "Rule preview request",
                        "name": "rule",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/PreviewRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/RulePreview"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/asset-rules/search": {
            "get": {
                "description": "Search asset rules by name",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "Search asset rules",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "query",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetRuleListResult"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/asset-rules/{id}": {
            "get": {
                "description": "Get an asset rule by ID",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "Get an asset rule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset rule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetRule"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "description": "Update an existing asset rule",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "asset-rules"
                ],
                "summary": "Update an asset rule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset rule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Asset rule update request",
                        "name": "rule",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateAssetRuleRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetRule"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete an asset rule by ID",
                "tags": [
                    "asset-rules"
                ],
                "summary": "Delete an asset rule",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset rule ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets": {
            "post": {
                "description": "Create a new asset in the system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Create a new asset",
                "parameters": [
                    {
                        "description": "Asset creation request",
                        "name": "asset",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateAssetRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/by-glossary-term/{term_id}": {
            "get": {
                "description": "Retrieve all assets associated with a specific glossary term",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get assets by glossary term",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Glossary Term ID",
                        "name": "term_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Maximum number of assets",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Pagination offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/documentation": {
            "post": {
                "description": "Create or update documentation for an asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Create asset documentation",
                "parameters": [
                    {
                        "description": "Documentation creation request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/DocumentationCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Documentation"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/documentation/batch": {
            "post": {
                "description": "Create or update documentation for multiple assets",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Batch create documentation",
                "parameters": [
                    {
                        "description": "Batch documentation request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/BatchDocumentationRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/BatchDocumentationResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/documentation/{mrn}": {
            "get": {
                "description": "Get documentation for a specific asset",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get asset documentation",
                "parameters": [
                    {
                        "type": "string",
                        "format": "url",
                        "description": "Asset MRN",
                        "name": "mrn",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Documentation"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/lookup/{type}/{service}/{name}": {
            "get": {
                "description": "Get an asset by its type, service (provider), and name",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Lookup asset by type, service, and name",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset type",
                        "name": "type",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Service/Provider name",
                        "name": "service",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Asset name",
                        "name": "name",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/match-pattern": {
            "get": {
                "description": "Find assets matching a pattern",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Match asset pattern",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset pattern to match",
                        "name": "pattern",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Asset type",
                        "name": "type",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/Asset"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/my-assets": {
            "get": {
                "description": "Get assets owned by the current user or their teams",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get user's assets",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetSearchResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/qualified-name/{qualifiedName}": {
            "get": {
                "description": "Get detailed information about a specific asset using its qualified name",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get an asset by qualified name",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset qualified name",
                        "name": "qualifiedName",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/search": {
            "get": {
                "description": "Search for assets using query string and filters",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Search assets",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "collectionFormat": "csv",
                        "description": "Filter by asset types",
                        "name": "types",
                        "in": "query"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "collectionFormat": "csv",
                        "description": "Filter by services",
                        "name": "services",
                        "in": "query"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "collectionFormat": "csv",
                        "description": "Filter by tags",
                        "name": "tags",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "default": false,
                        "description": "Calculate filter counts",
                        "name": "calculateCounts",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetSearchResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/suggestions/metadata/fields": {
            "get": {
                "description": "Get suggestions for metadata fields and their types",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get metadata field suggestions",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/MetadataFieldSuggestion"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/suggestions/metadata/values": {
            "get": {
                "description": "Get suggestions for values of a specific metadata field",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get metadata value suggestions",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Metadata field name",
                        "name": "field",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Value prefix to filter by",
                        "name": "prefix",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Maximum number of suggestions",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/MetadataValueSuggestion"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/suggestions/tags": {
            "get": {
                "description": "Get suggestions for asset tags",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get tag suggestions",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Tag prefix to filter by",
                        "name": "prefix",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Maximum number of suggestions",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/summary": {
            "get": {
                "description": "Get the total count of assets by type",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get asset summary",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetSummaryResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/tags/{id}": {
            "post": {
                "description": "Add a new tag to an existing asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Add tag to asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Tag to add",
                        "name": "tag",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/TagRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Remove a tag from an existing asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Remove tag from asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Tag to remove",
                        "name": "tag",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/TagRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/terms/{id}": {
            "get": {
                "description": "Retrieve all glossary terms associated with an asset",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get asset's glossary terms",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/AssetTerm"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Associate one or more glossary terms with an asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Add glossary terms to asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Term IDs to add",
                        "name": "terms",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/AddTermsRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/AssetTerm"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Remove a glossary term association from an asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Remove glossary term from asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Term ID to remove",
                        "name": "term",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/RemoveTermRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/AssetTerm"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/{id}": {
            "get": {
                "description": "Get detailed information about a specific asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get an asset by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "description": "Update an existing asset's information",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Update an asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Asset update request",
                        "name": "asset",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateAssetRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Asset"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete an asset from the system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Delete an asset",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/{id}/run-history": {
            "get": {
                "description": "Get paginated run history for a specific asset",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get asset run history",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Number of items per page",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/RunHistoryResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/assets/{id}/run-history/histogram": {
            "get": {
                "description": "Get histogram data for asset run history over specified period",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "assets"
                ],
                "summary": "Get asset run history histogram",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "default": "30d",
                        "description": "Time period (7d, 30d, 90d)",
                        "name": "period",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/HistogramResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth-providers": {
            "get": {
                "description": "Returns the enabled auth providers without sensitive data",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Get auth configuration",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AuthConfig"
                        }
                    }
                }
            }
        },
        "/auth/{provider}/callback": {
            "get": {
                "description": "Processes the OAuth callback from any provider",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Handle OAuth callback",
                "parameters": [
                    {
                        "type": "string",
                        "description": "OAuth provider (okta, google, github, etc.)",
                        "name": "provider",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Authorization code",
                        "name": "code",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "State parameter for CSRF protection",
                        "name": "state",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "307": {
                        "description": "Temporary Redirect",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/auth/{provider}/login": {
            "get": {
                "description": "Redirects the user to the OAuth provider for authentication",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Initiate OAuth login",
                "parameters": [
                    {
                        "type": "string",
                        "description": "OAuth provider (okta, google, github, etc.)",
                        "name": "provider",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "307": {
                        "description": "Temporary Redirect",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/glossary/": {
            "post": {
                "description": "Create a new glossary term with name, definition, and optional metadata",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Create glossary term",
                "parameters": [
                    {
                        "description": "Glossary term to create",
                        "name": "term",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateTermRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/GlossaryTerm"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/glossary/ancestors/{id}": {
            "get": {
                "description": "Retrieve all ancestor terms of a glossary term (parent chain)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Get ancestor terms",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Term ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/glossary/children/{id}": {
            "get": {
                "description": "Retrieve all child terms of a glossary term",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Get child terms",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Parent Term ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/glossary/list": {
            "get": {
                "description": "Retrieve a paginated list of all glossary terms",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "List glossary terms",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Maximum number of terms to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of terms to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/GlossaryListResult"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/glossary/search": {
            "get": {
                "description": "Search for glossary terms by query string and filters",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Search glossary terms",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by parent term ID",
                        "name": "parent_term_id",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Maximum number of terms to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of terms to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/GlossaryListResult"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/glossary/{id}": {
            "get": {
                "description": "Retrieve a glossary term by its ID",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Get glossary term",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Glossary Term ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/GlossaryTerm"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "description": "Update an existing glossary term by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Update glossary term",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Glossary Term ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Glossary term update data",
                        "name": "term",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateTermRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/GlossaryTerm"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete a glossary term by its ID",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "glossary"
                ],
                "summary": "Delete glossary term",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Glossary Term ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/lineage/assets/{id}": {
            "get": {
                "description": "Get upstream and downstream lineage for a specific asset",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "lineage"
                ],
                "summary": "Get asset lineage",
                "parameters": [
                    {
                        "type": "string",
                        "format": "uuid",
                        "description": "Asset ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Maximum depth of lineage graph",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "upstream",
                            "downstream",
                            "both"
                        ],
                        "type": "string",
                        "default": "both",
                        "description": "Direction of lineage (upstream, downstream, or both)",
                        "name": "direction",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/LineageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/lineage/batch": {
            "post": {
                "description": "Create lineage edges in batch",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "lineage"
                ],
                "summary": "Batch create lineage edges",
                "parameters": [
                    {
                        "description": "Array of lineage edges to create",
                        "name": "edges",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/LineageEdge"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/BatchLineageResult"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/lineage/direct": {
            "post": {
                "description": "Create a direct lineage connection between two assets and returns the created edge",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "lineage"
                ],
                "summary": "Create direct lineage",
                "parameters": [
                    {
                        "description": "Lineage edge to create",
                        "name": "edge",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/LineageEdge"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/LineageEdge"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/lineage/direct/{id}": {
            "get": {
                "description": "Get a specific direct lineage connection by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "lineage"
                ],
                "summary": "Get direct lineage by ID",
                "parameters": [
                    {
                        "type": "string",
                        "format": "uuid",
                        "description": "Edge ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/LineageEdge"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete a direct lineage connection by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "lineage"
                ],
                "summary": "Delete direct lineage",
                "parameters": [
                    {
                        "type": "string",
                        "format": "uuid",
                        "description": "Edge ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/metrics": {
            "get": {
                "description": "Get aggregated metrics for dashboard display",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get metrics for UI",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Start time (ISO 8601)",
                        "name": "start",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "End time (ISO 8601)",
                        "name": "end",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "collectionFormat": "csv",
                        "description": "Filter by metric names",
                        "name": "metric_names",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "avg",
                            "sum",
                            "max",
                            "min"
                        ],
                        "type": "string",
                        "default": "avg",
                        "description": "Aggregation type",
                        "name": "aggregation",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "1m",
                            "5m",
                            "1h",
                            "1d"
                        ],
                        "type": "string",
                        "description": "Time bucket size",
                        "name": "bucket_size",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/GetMetricsResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/metrics/assets/by-owner": {
            "get": {
                "description": "Get asset counts grouped by owner",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get assets by owner",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetsByOwnerResponse"
                        }
                    }
                }
            }
        },
        "/metrics/assets/by-provider": {
            "get": {
                "description": "Get asset counts grouped by provider",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get assets by provider",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetsByProviderResponse"
                        }
                    }
                }
            }
        },
        "/metrics/assets/by-type": {
            "get": {
                "description": "Get asset counts grouped by type",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get assets by type",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetsByTypeResponse"
                        }
                    }
                }
            }
        },
        "/metrics/assets/total": {
            "get": {
                "description": "Get the total number of assets",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get total assets count",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/TotalAssetsResponse"
                        }
                    }
                }
            }
        },
        "/metrics/assets/with-schemas": {
            "get": {
                "description": "Get the count of assets that have schemas defined",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get assets with schemas count",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/AssetsWithSchemasResponse"
                        }
                    }
                }
            }
        },
        "/metrics/top-assets": {
            "get": {
                "description": "Get the most viewed assets",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get top viewed assets",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Start time (ISO 8601)",
                        "name": "start",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "End time (ISO 8601)",
                        "name": "end",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Number of results",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/AssetCount"
                            }
                        }
                    }
                }
            }
        },
        "/metrics/top-queries": {
            "get": {
                "description": "Get the most popular search queries",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "metrics"
                ],
                "summary": "Get top search queries",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Start time (ISO 8601)",
                        "name": "start",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "End time (ISO 8601)",
                        "name": "end",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Number of results",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/QueryCount"
                            }
                        }
                    }
                }
            }
        },
        "/oauth/token": {
            "post": {
                "description": "Handles authorization_code grants (with PKCE) and token exchange (RFC 8693).\nFor token-exchange, supported subject_token_type values are\nurn:ietf:params:oauth:token-type:id_token and urn:ietf:params:oauth:token-type:access_token.",
                "consumes": [
                    "application/x-www-form-urlencoded"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "OAuth token endpoint",
                "parameters": [
                    {
                        "type": "string",
                        "description": "authorization_code or urn:ietf:params:oauth:grant-type:token-exchange",
                        "name": "grant_type",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Token to exchange (token-exchange grant only)",
                        "name": "subject_token",
                        "in": "formData"
                    },
                    {
                        "type": "string",
                        "description": "id_token or access_token URI (token-exchange grant only)",
                        "name": "subject_token_type",
                        "in": "formData"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/TokenExchangeResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/OAuthErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/OAuthErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/OAuthErrorResponse"
                        }
                    }
                }
            }
        },
        "/owners/search": {
            "get": {
                "description": "Search for asset owners (users and teams)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "owners"
                ],
                "summary": "Search owners",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Maximum number of results",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/SearchOwnersResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/pipelines/{pipelineName}": {
            "delete": {
                "description": "Delete all resources ever created by a pipeline (across all sources)",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "pipelines"
                ],
                "summary": "Destroy pipeline",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Pipeline Name",
                        "name": "pipelineName",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/DestroyRunResponse"
                        }
                    }
                }
            }
        },
        "/products/images/{id}": {
            "get": {
                "description": "List all images for a data product",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "products"
                ],
                "summary": "List product images",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Data Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/products/images/{id}/{purpose}": {
            "get": {
                "description": "Get an icon or header image for a data product",
                "produces": [
                    "image/jpeg",
                    "image/png",
                    "image/gif",
                    "image/webp"
                ],
                "tags": [
                    "products"
                ],
                "summary": "Get product image",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Data Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Image purpose (icon or header)",
                        "name": "purpose",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "file"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Upload an icon or header image for a data product",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "products"
                ],
                "summary": "Upload product image",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Data Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Image purpose (icon or header)",
                        "name": "purpose",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "file",
                        "description": "Image file",
                        "name": "file",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ProductImageMeta"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete an icon or header image for a data product",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "products"
                ],
                "summary": "Delete product image",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Data Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Image purpose (icon or header)",
                        "name": "purpose",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/runs": {
            "get": {
                "description": "Get paginated list of runs with filtering",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "runs"
                ],
                "summary": "List runs",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Comma-separated list of pipeline names",
                        "name": "pipelines",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Comma-separated list of statuses",
                        "name": "statuses",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of results per page",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of results to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "properties": {
                                "limit": {
                                    "type": "integer"
                                },
                                "offset": {
                                    "type": "integer"
                                },
                                "pipelines": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                },
                                "runs": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/definitions/PluginRun"
                                    }
                                },
                                "total": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/runs/assets/batch": {
            "post": {
                "description": "Create/update assets within a run",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "runs"
                ],
                "summary": "Batch create assets",
                "parameters": [
                    {
                        "description": "Batch create request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/BatchCreateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/BatchCreateResponse"
                        }
                    }
                }
            }
        },
        "/runs/cleanup": {
            "post": {
                "description": "Mark runs as failed if they've been running too long without updates",
                "tags": [
                    "runs"
                ],
                "summary": "Cleanup stale runs",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "integer"
                            }
                        }
                    }
                }
            }
        },
        "/runs/complete": {
            "post": {
                "description": "Complete a run with results",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "runs"
                ],
                "summary": "Complete run",
                "parameters": [
                    {
                        "description": "Complete run request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CompleteRunRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/runs/start": {
            "post": {
                "description": "Start a new run for tracking",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "runs"
                ],
                "summary": "Start run",
                "parameters": [
                    {
                        "description": "Start run request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/StartRunRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/PluginRun"
                        }
                    }
                }
            }
        },
        "/runs/{id}": {
            "get": {
                "description": "Get a specific run by ID",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "runs"
                ],
                "summary": "Get run",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Run ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/PluginRun"
                        }
                    }
                }
            }
        },
        "/runs/{id}/entities": {
            "get": {
                "description": "Get paginated list of entities for a specific run",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "runs"
                ],
                "summary": "Get run entities",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Run ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Filter by entity type (asset, lineage, documentation)",
                        "name": "entity_type",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by status (created, updated, deleted, failed)",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 100,
                        "description": "Number of results per page",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of results to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/RunEntitiesResponse"
                        }
                    }
                }
            }
        },
        "/search": {
            "get": {
                "description": "Search across assets, glossary terms, teams, and users",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "search"
                ],
                "summary": "Unified search",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "collectionFormat": "csv",
                        "description": "Filter by result types (asset, glossary, team, user)",
                        "name": "types",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 20,
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/SearchResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/sso/team-mappings": {
            "get": {
                "description": "Get a list of SSO group to team mappings",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sso"
                ],
                "summary": "List SSO team mappings",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Filter by SSO provider",
                        "name": "provider",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ListSSOMappingsResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Create a new SSO group to team mapping",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sso"
                ],
                "summary": "Create an SSO team mapping",
                "parameters": [
                    {
                        "description": "SSO mapping creation request",
                        "name": "mapping",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateSSOMappingRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/SSOTeamMapping"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/sso/team-mappings/{id}": {
            "get": {
                "description": "Get an SSO team mapping by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sso"
                ],
                "summary": "Get an SSO team mapping",
                "parameters": [
                    {
                        "type": "string",
                        "description": "SSO mapping ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/SSOTeamMapping"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "description": "Update an SSO team mapping by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sso"
                ],
                "summary": "Update an SSO team mapping",
                "parameters": [
                    {
                        "type": "string",
                        "description": "SSO mapping ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "SSO mapping update request",
                        "name": "mapping",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateSSOMappingRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete an SSO team mapping by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sso"
                ],
                "summary": "Delete an SSO team mapping",
                "parameters": [
                    {
                        "type": "string",
                        "description": "SSO mapping ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/teams": {
            "get": {
                "description": "Get a paginated list of teams",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "List teams",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ListTeamsResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Create a new team",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Create a team",
                "parameters": [
                    {
                        "description": "Team creation request",
                        "name": "team",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateTeamRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/Team"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/teams/{id}": {
            "get": {
                "description": "Get a team by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Get a team",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/Team"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "description": "Update a team's fields by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Update a team",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Team update request",
                        "name": "team",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateTeamRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete a team by its ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Delete a team",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/teams/{id}/members": {
            "get": {
                "description": "Get the members of a team",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "List team members",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ListMembersResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Add a user as a member of a team",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Add a team member",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Member addition request",
                        "name": "member",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/AddMemberRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/teams/{id}/members/{userId}": {
            "delete": {
                "description": "Remove a user from a team",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Remove a team member",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "userId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/teams/{id}/members/{userId}/convert-to-manual": {
            "post": {
                "description": "Convert an SSO-managed team member to a manually managed member",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Convert member to manual",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "userId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/teams/{id}/members/{userId}/role": {
            "put": {
                "description": "Update the role of a team member",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "teams"
                ],
                "summary": "Update member role",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "userId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Role update request",
                        "name": "role",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateMemberRoleRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/MessageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/ui/config": {
            "get": {
                "description": "Get UI configuration including banner settings",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "ui"
                ],
                "summary": "Get UI configuration",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/UIConfigResponse"
                        }
                    }
                }
            }
        },
        "/users": {
            "get": {
                "description": "Get a list of users with optional filtering",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "List users",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 50,
                        "description": "Number of items to return",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Number of items to skip",
                        "name": "offset",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search query for username or email",
                        "name": "query",
                        "in": "query"
                    },
                    {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "collectionFormat": "csv",
                        "description": "Filter by role IDs",
                        "name": "role_ids",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Filter by active status",
                        "name": "active",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/ListUsersResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Create a new user in the system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Create a new user",
                "parameters": [
                    {
                        "description": "User creation request",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateUserInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/User"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/apikeys": {
            "get": {
                "description": "Get all API keys for a user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "List API keys",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/APIKey"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "post": {
                "description": "Create a new API key for a user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Create API key",
                "parameters": [
                    {
                        "description": "API key creation request",
                        "name": "key",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/CreateAPIKeyRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/APIKey"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/apikeys/{id}": {
            "delete": {
                "description": "Delete an API key",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Delete API key",
                "parameters": [
                    {
                        "type": "string",
                        "description": "API key ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/login": {
            "post": {
                "description": "Authenticate a user with username/email and password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Login user",
                "parameters": [
                    {
                        "description": "Login credentials",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/LoginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Get detailed information about the currently authenticated user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Get current user profile",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/User"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/oauth/link": {
            "post": {
                "description": "Link an OAuth account to an existing user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Link OAuth account",
                "parameters": [
                    {
                        "description": "OAuth account link request",
                        "name": "link",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/OAuthLinkRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/oauth/unlink/{id}/{provider}": {
            "delete": {
                "description": "Unlink an OAuth account from a user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Unlink OAuth account",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "OAuth provider",
                        "name": "provider",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/preferences": {
            "put": {
                "description": "Update preferences for the current user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Update user preferences",
                "parameters": [
                    {
                        "description": "User preferences",
                        "name": "preferences",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/update-password": {
            "post": {
                "description": "Update current user's password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Update user password",
                "parameters": [
                    {
                        "description": "Password update request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdatePasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        },
        "/users/{id}": {
            "get": {
                "description": "Get detailed information about a specific user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Get a user by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/User"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "put": {
                "description": "Update user information",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Update a user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "User update request",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/UpdateUserInput"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/User"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            },
            "delete": {
                "description": "Delete a user from the system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "users"
                ],
                "summary": "Delete a user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/ErrorResponse"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "APIKey": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "key": {
                    "type": "string"
                },
                "last_used_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "user_id": {
                    "type": "string"
                }
            }
        },
        "AWSCredentialStatus": {
            "type": "object",
            "properties": {
                "available": {
                    "type": "boolean"
                },
                "error": {
                    "type": "string"
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "ActivityResponse": {
            "type": "object",
            "properties": {
                "buckets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Bucket"
                    }
                }
            }
        },
        "AddMemberRequest": {
            "type": "object",
            "properties": {
                "role": {
                    "type": "string"
                },
                "user_id": {
                    "type": "string"
                }
            }
        },
        "AddTermsRequest": {
            "type": "object",
            "required": [
                "term_ids"
            ],
            "properties": {
                "term_ids": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "AgentRun": {
            "type": "object",
            "properties": {
                "agent_id": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "duration_ms": {
                    "type": "integer"
                },
                "ended_at": {
                    "type": "string"
                },
                "error": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "model": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "started_at": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "tokens_in": {
                    "type": "integer"
                },
                "tokens_out": {
                    "type": "integer"
                },
                "tool_calls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ToolCall"
                    }
                }
            }
        },
        "AggregatedMetric": {
            "type": "object",
            "properties": {
                "aggregation_type": {
                    "type": "string"
                },
                "bucket_end": {
                    "type": "string"
                },
                "bucket_size": {
                    "type": "integer"
                },
                "bucket_start": {
                    "type": "string"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "name": {
                    "type": "string"
                },
                "value": {
                    "type": "number"
                }
            }
        },
        "Asset": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "created_by": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "environments": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/Environment"
                    }
                },
                "external_links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetExternalLink"
                    }
                },
                "has_run_history": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "is_stub": {
                    "type": "boolean"
                },
                "last_sync_at": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "mrn": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "parent_mrn": {
                    "type": "string"
                },
                "providers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "query": {
                    "type": "string"
                },
                "query_language": {
                    "type": "string"
                },
                "schema": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetSource"
                    }
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "type": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_description": {
                    "type": "string"
                }
            }
        },
        "AssetCount": {
            "type": "object",
            "properties": {
                "asset_id": {
                    "type": "string"
                },
                "asset_name": {
                    "type": "string"
                },
                "asset_provider": {
                    "type": "string"
                },
                "asset_type": {
                    "type": "string"
                },
                "count": {
                    "type": "integer"
                }
            }
        },
        "AssetExternalLink": {
            "type": "object",
            "properties": {
                "icon": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "url": {
                    "type": "string"
                }
            }
        },
        "AssetRule": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "created_by": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "is_enabled": {
                    "type": "boolean"
                },
                "last_reconciled_at": {
                    "type": "string"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetRuleExternalLink"
                    }
                },
                "membership_count": {
                    "type": "integer"
                },
                "metadata_field": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "pattern_type": {
                    "type": "string"
                },
                "pattern_value": {
                    "type": "string"
                },
                "priority": {
                    "type": "integer"
                },
                "query_expression": {
                    "type": "string"
                },
                "reconciliation_hash": {
                    "type": "string"
                },
                "rule_type": {
                    "$ref": "#/definitions/RuleType"
                },
                "term_ids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "AssetRuleExternalLink": {
            "type": "object",
            "properties": {
                "icon": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "url": {
                    "type": "string"
                }
            }
        },
        "AssetRuleListResult": {
            "type": "object",
            "properties": {
                "asset_rules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetRule"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "AssetSearchResponse": {
            "type": "object",
            "properties": {
                "assets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Asset"
                    }
                },
                "filters": {
                    "$ref": "#/definitions/AvailableFilters"
                },
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "AssetSource": {
            "type": "object",
            "properties": {
                "last_sync_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "priority": {
                    "type": "integer"
                },
                "properties": {
                    "type": "object",
                    "additionalProperties": true
                }
            }
        },
        "AssetSummaryResponse": {
            "type": "object",
            "properties": {
                "providers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "types": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/AssetTypeSummary"
                    }
                }
            }
        },
        "AssetTerm": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "created_by": {
                    "type": "string"
                },
                "created_by_username": {
                    "type": "string"
                },
                "definition": {
                    "type": "string"
                },
                "source": {
                    "description": "\"user\" or \"plugin:name\"",
                    "type": "string"
                },
                "term_id": {
                    "type": "string"
                },
                "term_name": {
                    "type": "string"
                }
            }
        },
        "AssetTypeSummary": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "service": {
                    "type": "string"
                }
            }
        },
        "AssetsByOwnerResponse": {
            "type": "object",
            "properties": {
                "assets": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer",
                        "format": "int64"
                    }
                }
            }
        },
        "AssetsByProviderResponse": {
            "type": "object",
            "properties": {
                "assets": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer",
                        "format": "int64"
                    }
                }
            }
        },
        "AssetsByTypeResponse": {
            "type": "object",
            "properties": {
                "assets": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer",
                        "format": "int64"
                    }
                }
            }
        },
        "AssetsWithSchemasResponse": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "percentage": {
                    "type": "number"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "AuthConfig": {
            "type": "object",
            "properties": {
                "enabled_providers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "AvailableFilters": {
            "type": "object",
            "properties": {
                "providers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "tags": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "types": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                }
            }
        },
        "BannerResponse": {
            "type": "object",
            "properties": {
                "dismissible": {
                    "type": "boolean"
                },
                "enabled": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "variant": {
                    "type": "string"
                }
            }
        },
        "BatchAssetResult": {
            "type": "object",
            "properties": {
                "asset": {},
                "error": {
                    "type": "string"
                },
                "mrn": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "provider": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "BatchCreateRequest": {
            "type": "object",
            "required": [
                "assets",
                "pipeline_name",
                "run_id",
                "source_name"
            ],
            "properties": {
                "assets": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/RunCreateAssetRequest"
                    }
                },
                "config": {
                    "$ref": "#/definitions/RawPluginConfig"
                },
                "documentation": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CreateDocRequest"
                    }
                },
                "lineage": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CreateLineageRequest"
                    }
                },
                "pipeline_name": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "source_name": {
                    "type": "string"
                },
                "statistics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/CreateStatRequest"
                    }
                }
            }
        },
        "BatchCreateResponse": {
            "type": "object",
            "properties": {
                "assets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/BatchAssetResult"
                    }
                },
                "documentation": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/DocumentationResult"
                    }
                },
                "lineage": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineageResult"
                    }
                },
                "stale_entities_removed": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "BatchDocumentationRequest": {
            "type": "object",
            "required": [
                "documentation"
            ],
            "properties": {
                "documentation": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/Documentation"
                    }
                }
            }
        },
        "BatchDocumentationResponse": {
            "type": "object",
            "properties": {
                "results": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/BatchDocumentationResult"
                    }
                }
            }
        },
        "BatchDocumentationResult": {
            "type": "object",
            "properties": {
                "documentation": {
                    "$ref": "#/definitions/Documentation"
                },
                "error": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "BatchLineageResult": {
            "type": "object",
            "properties": {
                "edge": {
                    "$ref": "#/definitions/LineageEdge"
                },
                "status": {
                    "description": "\"created\", \"duplicate\", or \"existing\"",
                    "type": "string"
                }
            }
        },
        "Bucket": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "integer"
                },
                "hour": {
                    "type": "string"
                },
                "success": {
                    "type": "integer"
                }
            }
        },
        "CompleteRunRequest": {
            "type": "object",
            "required": [
                "run_id",
                "status"
            ],
            "properties": {
                "error": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/RunStatus"
                },
                "summary": {
                    "$ref": "#/definitions/RunSummary"
                }
            }
        },
        "CreateAPIKeyRequest": {
            "type": "object",
            "required": [
                "name"
            ],
            "properties": {
                "expires_in_days": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "CreateAssetRequest": {
            "type": "object",
            "required": [
                "name",
                "providers",
                "type"
            ],
            "properties": {
                "description": {
                    "type": "string"
                },
                "environments": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/Environment"
                    }
                },
                "external_links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetExternalLink"
                    }
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "providers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "schema": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetSource"
                    }
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "CreateAssetRuleRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "is_enabled": {
                    "type": "boolean"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetRuleExternalLink"
                    }
                },
                "metadata_field": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "pattern_type": {
                    "type": "string"
                },
                "pattern_value": {
                    "type": "string"
                },
                "priority": {
                    "type": "integer"
                },
                "query_expression": {
                    "type": "string"
                },
                "rule_type": {
                    "type": "string"
                },
                "term_ids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "CreateDocRequest": {
            "type": "object",
            "properties": {
                "asset_mrn": {
                    "type": "string"
                },
                "content": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "CreateLineageRequest": {
            "type": "object",
            "properties": {
                "source": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "CreateSSOMappingRequest": {
            "type": "object",
            "properties": {
                "member_role": {
                    "type": "string"
                },
                "provider": {
                    "type": "string"
                },
                "sso_group_name": {
                    "type": "string"
                },
                "team_id": {
                    "type": "string"
                }
            }
        },
        "CreateScheduleRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "type": "object",
                    "additionalProperties": true
                },
                "cron_expression": {
                    "type": "string"
                },
                "enabled": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "plugin_id": {
                    "type": "string"
                }
            }
        },
        "CreateStatRequest": {
            "type": "object",
            "required": [
                "asset_mrn",
                "metric_name",
                "value"
            ],
            "properties": {
                "asset_mrn": {
                    "type": "string"
                },
                "metric_name": {
                    "type": "string"
                },
                "value": {
                    "type": "number"
                }
            }
        },
        "CreateTeamRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "CreateTermRequest": {
            "type": "object",
            "required": [
                "definition",
                "name"
            ],
            "properties": {
                "definition": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "owners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/OwnerRequest"
                    }
                },
                "parent_term_id": {
                    "type": "string"
                }
            }
        },
        "CreateUserInput": {
            "type": "object",
            "required": [
                "name",
                "role_names",
                "username"
            ],
            "properties": {
                "name": {
                    "type": "string"
                },
                "oauth_provider": {
                    "type": "string"
                },
                "oauth_provider_data": {
                    "type": "object",
                    "additionalProperties": true
                },
                "oauth_provider_id": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 8
                },
                "profile_picture": {
                    "type": "string"
                },
                "role_names": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "string"
                    }
                },
                "username": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 3
                }
            }
        },
        "Dataset": {
            "type": "object",
            "properties": {
                "facets": {
                    "type": "object",
                    "additionalProperties": true
                },
                "inputFacets": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string"
                },
                "outputFacets": {
                    "type": "object",
                    "additionalProperties": true
                }
            }
        },
        "DestroyRunResponse": {
            "type": "object",
            "properties": {
                "assets_deleted": {
                    "type": "integer"
                },
                "deleted_entity_mrns": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "documentation_deleted": {
                    "type": "integer"
                },
                "lineage_deleted": {
                    "type": "integer"
                }
            }
        },
        "Documentation": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "global_docs": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "id": {
                    "type": "string"
                },
                "mrn": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "DocumentationCreateRequest": {
            "type": "object",
            "required": [
                "content",
                "mrn",
                "source"
            ],
            "properties": {
                "content": {
                    "type": "string"
                },
                "mrn": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                }
            }
        },
        "DocumentationResult": {
            "type": "object",
            "properties": {
                "asset_mrn": {
                    "type": "string"
                },
                "error": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "Environment": {
            "type": "object",
            "properties": {
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                }
            }
        },
        "ErrorResponse": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                }
            }
        },
        "FacetValue": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "Facets": {
            "type": "object",
            "properties": {
                "asset_types": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FacetValue"
                    }
                },
                "providers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FacetValue"
                    }
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/FacetValue"
                    }
                },
                "types": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                }
            }
        },
        "GetMetricsRequest": {
            "type": "object",
            "properties": {
                "aggregation": {
                    "type": "string"
                },
                "bucket_size": {
                    "type": "string"
                },
                "end": {
                    "type": "string"
                },
                "labels": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "metric_names": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "start": {
                    "type": "string"
                }
            }
        },
        "GetMetricsResponse": {
            "type": "object",
            "properties": {
                "metrics": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AggregatedMetric"
                    }
                },
                "query": {
                    "$ref": "#/definitions/GetMetricsRequest"
                }
            }
        },
        "GlossaryListResult": {
            "type": "object",
            "properties": {
                "terms": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/GlossaryTerm"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "GlossaryOwner": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "profile_picture": {
                    "type": "string"
                },
                "type": {
                    "description": "\"user\" or \"team\"",
                    "type": "string"
                },
                "username": {
                    "description": "Only for user owners",
                    "type": "string"
                }
            }
        },
        "GlossaryTerm": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "definition": {
                    "type": "string"
                },
                "deleted_at": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "owners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/GlossaryOwner"
                    }
                },
                "parent_term_id": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "HistogramBucket": {
            "type": "object",
            "properties": {
                "abort": {
                    "type": "integer"
                },
                "complete": {
                    "type": "integer"
                },
                "date": {
                    "type": "string"
                },
                "fail": {
                    "type": "integer"
                },
                "other": {
                    "type": "integer"
                },
                "running": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "HistogramResponse": {
            "type": "object",
            "properties": {
                "buckets": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/HistogramBucket"
                    }
                },
                "period": {
                    "type": "string"
                }
            }
        },
        "ImagePurpose": {
            "type": "string",
            "enum": [
                "icon",
                "header"
            ],
            "x-enum-varnames": [
                "ImagePurposeIcon",
                "ImagePurposeHeader"
            ]
        },
        "Job": {
            "type": "object",
            "properties": {
                "facets": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string"
                }
            }
        },
        "JobRun": {
            "type": "object",
            "properties": {
                "assets_created": {
                    "type": "integer"
                },
                "assets_deleted": {
                    "type": "integer"
                },
                "assets_updated": {
                    "type": "integer"
                },
                "claimed_at": {
                    "type": "string"
                },
                "claimed_by": {
                    "type": "string"
                },
                "config": {
                    "type": "object",
                    "additionalProperties": true
                },
                "created_at": {
                    "type": "string"
                },
                "created_by": {
                    "type": "string"
                },
                "documentation_added": {
                    "type": "integer"
                },
                "error_message": {
                    "type": "string"
                },
                "finished_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "lineage_created": {
                    "type": "integer"
                },
                "log": {
                    "type": "string"
                },
                "pipeline_name": {
                    "type": "string"
                },
                "plugin_run_id": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "schedule_id": {
                    "type": "string"
                },
                "source_name": {
                    "type": "string"
                },
                "started_at": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "LineageEdge": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "job_mrn": {
                    "type": "string"
                },
                "last_seen_at": {
                    "type": "string"
                },
                "observation_count": {
                    "type": "integer"
                },
                "origin": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "LineageNode": {
            "type": "object",
            "properties": {
                "asset": {
                    "$ref": "#/definitions/Asset"
                },
                "depth": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "LineageResponse": {
            "type": "object",
            "properties": {
                "edges": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineageEdge"
                    }
                },
                "nodes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LineageNode"
                    }
                }
            }
        },
        "LineageResult": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "target": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "LineageRun": {
            "type": "object",
            "properties": {
                "facets": {
                    "type": "object",
                    "additionalProperties": true
                },
                "runId": {
                    "type": "string"
                }
            }
        },
        "ListJobRunsResponse": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "runs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/JobRun"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "ListMembersResponse": {
            "type": "object",
            "properties": {
                "members": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/TeamMemberWithUser"
                    }
                }
            }
        },
        "ListSSOMappingsResponse": {
            "type": "object",
            "properties": {
                "mappings": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/SSOTeamMapping"
                    }
                }
            }
        },
        "ListSchedulesResponse": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "schedules": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Schedule"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "ListTeamsResponse": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "teams": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Team"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "ListUsersResponse": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/User"
                    }
                }
            }
        },
        "LoginRequest": {
            "type": "object",
            "required": [
                "password",
                "username"
            ],
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "MessageResponse": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                }
            }
        },
        "MetadataFieldSuggestion": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "example": {},
                "field": {
                    "type": "string"
                },
                "path_parts": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "type": {
                    "type": "string"
                },
                "types": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "MetadataValueSuggestion": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "example": {
                    "$ref": "#/definitions/Asset"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "OAuthErrorResponse": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                },
                "error_description": {
                    "type": "string"
                }
            }
        },
        "OAuthLinkRequest": {
            "type": "object",
            "required": [
                "provider",
                "provider_user_id",
                "user_id",
                "user_info"
            ],
            "properties": {
                "provider": {
                    "type": "string"
                },
                "provider_user_id": {
                    "type": "string"
                },
                "user_id": {
                    "type": "string"
                },
                "user_info": {
                    "type": "object",
                    "additionalProperties": true
                }
            }
        },
        "OwnerRequest": {
            "type": "object",
            "required": [
                "id",
                "type"
            ],
            "properties": {
                "id": {
                    "type": "string"
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "user",
                        "team"
                    ]
                }
            }
        },
        "Permission": {
            "type": "object",
            "properties": {
                "action": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "resource_type": {
                    "type": "string"
                }
            }
        },
        "PluginRun": {
            "type": "object",
            "properties": {
                "completed_at": {
                    "type": "string"
                },
                "config": {
                    "$ref": "#/definitions/RawPluginConfig"
                },
                "created_by": {
                    "type": "string"
                },
                "error_message": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "pipeline_name": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "source_name": {
                    "type": "string"
                },
                "started_at": {
                    "type": "string"
                },
                "status": {
                    "$ref": "#/definitions/RunStatus"
                },
                "summary": {
                    "$ref": "#/definitions/RunSummary"
                }
            }
        },
        "PreviewRequest": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "metadata_field": {
                    "type": "string"
                },
                "pattern_type": {
                    "type": "string"
                },
                "pattern_value": {
                    "type": "string"
                },
                "query_expression": {
                    "type": "string"
                },
                "rule_type": {
                    "type": "string"
                }
            }
        },
        "PreviewResponse": {
            "type": "object",
            "properties": {
                "column_names": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "rows": {
                    "type": "array",
                    "items": {
                        "type": "array",
                        "items": {}
                    }
                },
                "total_rows": {
                    "type": "integer"
                }
            }
        },
        "ProductImageMeta": {
            "type": "object",
            "properties": {
                "content_type": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "data_product_id": {
                    "type": "string"
                },
                "filename": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "purpose": {
                    "$ref": "#/definitions/ImagePurpose"
                },
                "size_bytes": {
                    "type": "integer"
                },
                "url": {
                    "type": "string"
                }
            }
        },
        "QueryCount": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "query": {
                    "type": "string"
                },
                "query_type": {
                    "type": "string"
                }
            }
        },
        "RawPluginConfig": {
            "type": "object",
            "additionalProperties": true
        },
        "RecordRunRequest": {
            "type": "object",
            "properties": {
                "agent_mrn": {
                    "type": "string"
                },
                "ended_at": {
                    "type": "string"
                },
                "error": {
                    "type": "string"
                },
                "model": {
                    "type": "string"
                },
                "observed_assets": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "run_id": {
                    "type": "string"
                },
                "started_at": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "tokens_in": {
                    "type": "integer"
                },
                "tokens_out": {
                    "type": "integer"
                },
                "tool_calls": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ToolCallPayload"
                    }
                }
            }
        },
        "ReindexAcceptedResponse": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string",
                    "example": "Reindex started"
                },
                "status": {
                    "type": "string",
                    "example": "accepted"
                }
            }
        },
        "ReindexStatusResponse": {
            "type": "object",
            "properties": {
                "es_configured": {
                    "type": "boolean"
                },
                "running": {
                    "type": "boolean"
                }
            }
        },
        "RemoveTermRequest": {
            "type": "object",
            "required": [
                "term_id"
            ],
            "properties": {
                "term_id": {
                    "type": "string"
                }
            }
        },
        "Result": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "rank": {
                    "type": "number"
                },
                "type": {
                    "$ref": "#/definitions/ResultType"
                },
                "updated_at": {
                    "type": "string"
                },
                "url": {
                    "type": "string"
                }
            }
        },
        "ResultType": {
            "type": "string",
            "enum": [
                "asset",
                "glossary",
                "team",
                "data_product"
            ],
            "x-enum-varnames": [
                "ResultTypeAsset",
                "ResultTypeGlossary",
                "ResultTypeTeam",
                "ResultTypeDataProduct"
            ]
        },
        "Role": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "permissions": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Permission"
                    }
                }
            }
        },
        "RulePreview": {
            "type": "object",
            "properties": {
                "asset_count": {
                    "type": "integer"
                },
                "asset_ids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "errors": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "RuleType": {
            "type": "string",
            "enum": [
                "query",
                "metadata_match"
            ],
            "x-enum-varnames": [
                "RuleTypeQuery",
                "RuleTypeMetadataMatch"
            ]
        },
        "RunCreateAssetRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "external_links": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        }
                    }
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "providers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "schema": {
                    "type": "object",
                    "additionalProperties": true
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "RunEntitiesResponse": {
            "type": "object",
            "properties": {
                "entities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/RunEntity"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "RunEntity": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "entity_mrn": {
                    "type": "string"
                },
                "entity_name": {
                    "type": "string"
                },
                "entity_type": {
                    "type": "string"
                },
                "error_message": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "RunEvent": {
            "type": "object",
            "properties": {
                "eventTime": {
                    "type": "string"
                },
                "eventType": {
                    "type": "string"
                },
                "inputs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Dataset"
                    }
                },
                "job": {
                    "$ref": "#/definitions/Job"
                },
                "outputs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Dataset"
                    }
                },
                "producer": {
                    "type": "string"
                },
                "run": {
                    "$ref": "#/definitions/LineageRun"
                },
                "schemaURL": {
                    "type": "string"
                }
            }
        },
        "RunHistory": {
            "type": "object",
            "properties": {
                "duration_ms": {
                    "type": "integer"
                },
                "end_time": {
                    "type": "string"
                },
                "event_time": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "job_name": {
                    "type": "string"
                },
                "job_namespace": {
                    "type": "string"
                },
                "run_id": {
                    "type": "string"
                },
                "start_time": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "RunHistoryResponse": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "run_history": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/RunHistory"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "RunStatus": {
            "type": "string",
            "enum": [
                "running",
                "completed",
                "failed",
                "cancelled"
            ],
            "x-enum-varnames": [
                "StatusRunning",
                "StatusCompleted",
                "StatusFailed",
                "StatusCancelled"
            ]
        },
        "RunSummary": {
            "type": "object",
            "properties": {
                "assets_created": {
                    "type": "integer"
                },
                "assets_deleted": {
                    "type": "integer"
                },
                "assets_updated": {
                    "type": "integer"
                },
                "documentation_added": {
                    "type": "integer"
                },
                "duration_seconds": {
                    "type": "integer"
                },
                "errors_count": {
                    "type": "integer"
                },
                "lineage_created": {
                    "type": "integer"
                },
                "lineage_updated": {
                    "type": "integer"
                },
                "total_entities": {
                    "type": "integer"
                }
            }
        },
        "RunsResponse": {
            "type": "object",
            "properties": {
                "runs": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AgentRun"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "SSOTeamMapping": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "member_role": {
                    "type": "string"
                },
                "provider": {
                    "type": "string"
                },
                "sso_group_name": {
                    "type": "string"
                },
                "team_id": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "Schedule": {
            "type": "object",
            "properties": {
                "config": {
                    "type": "object",
                    "additionalProperties": true
                },
                "created_at": {
                    "type": "string"
                },
                "created_by": {
                    "type": "string"
                },
                "cron_expression": {
                    "type": "string"
                },
                "enabled": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "last_run_at": {
                    "type": "string"
                },
                "last_run_status": {
                    "type": "string"
                },
                "managed_by": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "next_run_at": {
                    "type": "string"
                },
                "plugin_id": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "SearchOwnersResponse": {
            "type": "object",
            "properties": {
                "owners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/TeamOwner"
                    }
                }
            }
        },
        "SearchResponse": {
            "type": "object",
            "properties": {
                "facets": {
                    "$ref": "#/definitions/Facets"
                },
                "limit": {
                    "type": "integer"
                },
                "offset": {
                    "type": "integer"
                },
                "results": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Result"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "StartRunRequest": {
            "type": "object",
            "required": [
                "pipeline_name",
                "source_name"
            ],
            "properties": {
                "config": {
                    "$ref": "#/definitions/RawPluginConfig"
                },
                "pipeline_name": {
                    "type": "string"
                },
                "source_name": {
                    "type": "string"
                }
            }
        },
        "Stats": {
            "type": "object",
            "properties": {
                "median_latency_ms": {
                    "type": "integer"
                },
                "p95_latency_ms": {
                    "type": "integer"
                },
                "run_count": {
                    "type": "integer"
                },
                "success_rate": {
                    "type": "number"
                },
                "tokens_in": {
                    "type": "integer"
                },
                "tokens_out": {
                    "type": "integer"
                }
            }
        },
        "TagRequest": {
            "type": "object",
            "required": [
                "tag"
            ],
            "properties": {
                "tag": {
                    "type": "string"
                }
            }
        },
        "Team": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "created_by": {
                    "type": "string"
                },
                "created_via_sso": {
                    "type": "boolean"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "sso_provider": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "TeamMemberWithUser": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "joined_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "profile_picture": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "sso_provider": {
                    "type": "string"
                },
                "team_id": {
                    "type": "string"
                },
                "user_id": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "TeamOwner": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "profile_picture": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "TokenExchangeResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "expires_in": {
                    "type": "integer"
                },
                "issued_token_type": {
                    "type": "string"
                },
                "token_type": {
                    "type": "string"
                }
            }
        },
        "TokenResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "expires_in": {
                    "type": "integer"
                },
                "requires_password_change": {
                    "type": "boolean"
                },
                "token_type": {
                    "type": "string"
                }
            }
        },
        "ToolCall": {
            "type": "object",
            "properties": {
                "duration_ms": {
                    "type": "integer"
                },
                "ordinal": {
                    "type": "integer"
                },
                "started_at": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "target_mrn": {
                    "type": "string"
                },
                "tool_name": {
                    "type": "string"
                }
            }
        },
        "ToolCallPayload": {
            "type": "object",
            "properties": {
                "duration_ms": {
                    "type": "integer"
                },
                "started_at": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "target_mrn": {
                    "type": "string"
                },
                "tool_name": {
                    "type": "string"
                }
            }
        },
        "TotalAssetsResponse": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                }
            }
        },
        "UIConfigResponse": {
            "type": "object",
            "properties": {
                "allow_unencrypted": {
                    "type": "boolean"
                },
                "banner": {
                    "$ref": "#/definitions/BannerResponse"
                },
                "encryption_configured": {
                    "type": "boolean"
                },
                "table_preview_enabled": {
                    "type": "boolean"
                }
            }
        },
        "UpdateAssetRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "environments": {
                    "type": "object",
                    "additionalProperties": {
                        "$ref": "#/definitions/Environment"
                    }
                },
                "external_links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetExternalLink"
                    }
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "providers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "schema": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    }
                },
                "sources": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetSource"
                    }
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "type": {
                    "type": "string"
                },
                "user_description": {
                    "type": "string"
                }
            }
        },
        "UpdateAssetRuleRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "is_enabled": {
                    "type": "boolean"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/AssetRuleExternalLink"
                    }
                },
                "metadata_field": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "pattern_type": {
                    "type": "string"
                },
                "pattern_value": {
                    "type": "string"
                },
                "priority": {
                    "type": "integer"
                },
                "query_expression": {
                    "type": "string"
                },
                "rule_type": {
                    "type": "string"
                },
                "term_ids": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "UpdateMemberRoleRequest": {
            "type": "object",
            "properties": {
                "role": {
                    "type": "string"
                }
            }
        },
        "UpdatePasswordRequest": {
            "type": "object",
            "required": [
                "new_password"
            ],
            "properties": {
                "new_password": {
                    "type": "string",
                    "minLength": 8
                }
            }
        },
        "UpdateSSOMappingRequest": {
            "type": "object",
            "properties": {
                "member_role": {
                    "type": "string"
                },
                "team_id": {
                    "type": "string"
                }
            }
        },
        "UpdateScheduleRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "type": "object",
                    "additionalProperties": true
                },
                "cron_expression": {
                    "type": "string"
                },
                "enabled": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "plugin_id": {
                    "type": "string"
                }
            }
        },
        "UpdateTeamRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "tags": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "UpdateTermRequest": {
            "type": "object",
            "properties": {
                "definition": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "metadata": {
                    "type": "object",
                    "additionalProperties": true
                },
                "name": {
                    "type": "string"
                },
                "owners": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/OwnerRequest"
                    }
                },
                "parent_term_id": {
                    "type": "string"
                }
            }
        },
        "UpdateUserInput": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "email": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 8
                },
                "preferences": {
                    "type": "object",
                    "additionalProperties": true
                },
                "profile_picture": {
                    "type": "string"
                },
                "role_names": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "User": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "identities": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/UserIdentity"
                    }
                },
                "must_change_password": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "preferences": {
                    "type": "object",
                    "additionalProperties": true
                },
                "profile_picture": {
                    "type": "string"
                },
                "roles": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Role"
                    }
                },
                "updated_at": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "UserIdentity": {
            "type": "object",
            "properties": {
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "provider": {
                    "type": "string"
                },
                "provider_data": {
                    "type": "object",
                    "additionalProperties": true
                },
                "provider_email": {
                    "type": "string"
                },
                "provider_user_id": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                },
                "user_id": {
                    "type": "string"
                }
            }
        },
        "ValidateConfigRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "type": "object",
                    "additionalProperties": true
                },
                "plugin_id": {
                    "type": "string"
                }
            }
        },
        "ValidateConfigResponse": {
            "type": "object",
            "properties": {
                "errors": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/ValidationErrorDetail"
                    }
                },
                "valid": {
                    "type": "boolean"
                }
            }
        },
        "ValidationErrorDetail": {
            "type": "object",
            "properties": {
                "field": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                }
            }
        }
    }
}