{ "swagger": "2.0", "info": { "description": "API server for managing AI Services catalog, applications, and authentication", "title": "AI Services Catalog API", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", "url": "https://github.com/project-ai-services/ai-services", "email": "support@example.com" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "1.0" }, "host": "localhost:8080", "basePath": "/api/v1", "paths": { "/applications": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves a paginated list of all applications for the authenticated user with optional filters", "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "List applications", "parameters": [ { "type": "integer", "default": 1, "description": "Page number (1-indexed)", "name": "page", "in": "query" }, { "type": "integer", "default": 20, "description": "Number of items per page (max: 100)", "name": "page_size", "in": "query" }, { "type": "string", "description": "Filter by deployment type: 'architectures' or 'services'", "name": "deployment_type", "in": "query" }, { "type": "string", "description": "Filter by catalog ID (e.g., 'rag', 'chat', 'digitize', 'summarize')", "name": "catalog_id", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationListResponse" } }, "400": { "description": "Invalid query parameters", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Creates a new application (architecture or service) with optional custom parameters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "Create new application", "parameters": [ { "description": "Application creation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateApplicationRequest" } } ], "responses": { "202": { "description": "Application creation initiated", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateApplicationResponse" } }, "400": { "description": "Invalid request body or validation errors", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "409": { "description": "Application name already exists", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "422": { "description": "Parameter validation failed or invalid template", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/applications/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves a single application by its unique identifier for the authenticated user", "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "Get application by ID", "parameters": [ { "type": "string", "description": "Application ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Application" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Application not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Updates the display name of an existing application", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "Update application", "parameters": [ { "type": "string", "description": "Application ID (UUID)", "name": "id", "in": "path", "required": true }, { "description": "Update request", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.UpdateApplicationRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Application" } }, "400": { "description": "Invalid request body or name validation failed", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "403": { "description": "User doesn't own this application", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Application not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Initiates async deletion of an application and all its resources. Returns 202 immediately.", "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "Delete application", "parameters": [ { "type": "string", "description": "Application ID (UUID)", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "When 'true', preserves underlying data (volumes of databases/service resources). Default: 'false'", "name": "keep_data", "in": "query" } ], "responses": { "202": { "description": "Accepted", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_repository.DeleteApplicationResponse" } }, "400": { "description": "Invalid application ID or keep_data parameter", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "403": { "description": "User doesn't own this application", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Application not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "409": { "description": "Application is already being deleted", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/applications/{id}/ps": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves the process status and runtime information for an application", "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "Get application process status", "parameters": [ { "type": "string", "description": "Application ID (UUID)", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationPSResponse" } }, "400": { "description": "Invalid application ID format", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Application not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/applications/{id}/resources": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves used and total allocated CPU (in cores) and memory usage (in bytes), along with the hardware accelerator cards for an application and its services", "produces": [ "application/json" ], "tags": [ "Applications" ], "summary": "Get application resources", "parameters": [ { "type": "string", "description": "Application ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationResourcesResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Application not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/architectures": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves a list of all available architecture templates with summary information", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "List available architectures", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ArchitectureSummary" } } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/architectures/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves detailed information about a specific architecture template", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get architecture details", "parameters": [ { "type": "string", "description": "Architecture template ID (e.g., 'rag')", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Architecture" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Architecture not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/architectures/{id}/deploy-options": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves available providers and dependency rules for all services and their components within an architecture", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get architecture deploy options", "parameters": [ { "type": "string", "description": "Architecture ID (e.g., 'rag')", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsArchitecture" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Architecture not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/auth/login": { "post": { "description": "Authenticate user and return access and refresh tokens", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "User login", "parameters": [ { "description": "Login credentials", "name": "credentials", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.loginReq" } } ], "responses": { "200": { "description": "Returns access_token, refresh_token, and token_type", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Invalid payload", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Invalid credentials", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/logout": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Invalidate the current access token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "User logout", "responses": { "200": { "description": "Successfully logged out", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Missing token", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Failed to logout", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/me": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get information about the currently authenticated user", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Get current user info", "responses": { "200": { "description": "Returns user id, username, and name", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "User not found", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/refresh": { "post": { "description": "Get new access and refresh tokens using a valid refresh token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Refresh access token", "parameters": [ { "description": "Refresh token", "name": "refresh", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.refreshReq" } } ], "responses": { "200": { "description": "Returns new access_token, refresh_token, and token_type", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Invalid payload", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Invalid refresh token", "schema": { "type": "object", "additionalProperties": true } } } } }, "/auth/token": { "post": { "security": [ { "BearerAuth": [] } ], "description": "**Experimental** — This endpoint is under active development and may change without notice.\nIBM Power Mission Control use this\nendpoint to exchange a pre-existing ManageIQ token for an internal JWT\nwithout supplying username/password credentials.", "produces": [ "application/json" ], "tags": [ "Authentication" ], "summary": "Exchange a ManageIQ token for a Catalog API JWT", "responses": { "200": { "description": "Returns access_token, refresh_token, and token_type", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Invalid or expired ManageIQ token", "schema": { "type": "object", "additionalProperties": true } }, "403": { "description": "ManageIQ token does not have required permissions", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "ManageIQ resource not found", "schema": { "type": "object", "additionalProperties": true } }, "503": { "description": "ManageIQ unavailable or returned an unexpected server error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/catalog/bundles": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of all registered bundles ordered by created_at DESC.", "produces": [ "application/json" ], "tags": [ "Bundles" ], "summary": "List all bundles", "parameters": [ { "type": "integer", "default": 1, "description": "Page number (1-indexed)", "name": "page", "in": "query" }, { "type": "integer", "default": 20, "description": "Number of items per page (max: 100)", "name": "page_size", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleListResponse" } }, "400": { "description": "Invalid pagination parameters", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Uploads a .tar.gz archive and creates a new bundle. id, type, and version are read from metadata.yaml inside the archive.", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Bundles" ], "summary": "Create a new catalog bundle", "parameters": [ { "type": "file", "description": ".tar.gz archive containing the catalog item assets", "name": "file", "in": "formData", "required": true } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleResponse" } }, "400": { "description": "Missing file, wrong content-type, exceeds size limit, or metadata.yaml malformed", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "403": { "description": "Forbidden — admin role required", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "409": { "description": "Conflict — bundle with same catalog_id already exists", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "422": { "description": "Unprocessable Entity — validation failed", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/catalog/bundles/validate": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Validates a .tar.gz archive without writing a DB row or reloading CatalogProvider.", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Bundles" ], "summary": "Validate a bundle without storing it", "parameters": [ { "type": "file", "description": ".tar.gz archive to validate", "name": "file", "in": "formData", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleValidationResult" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "422": { "description": "Validation failed", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/catalog/bundles/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns the status and metadata for a specific bundle.", "produces": [ "application/json" ], "tags": [ "Bundles" ], "summary": "Get a bundle by ID", "parameters": [ { "type": "string", "description": "Internal bundle UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Bundle not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Replaces the bundle identified by id with a new archive. catalog_id and catalog_type are resolved from the DB record.", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Bundles" ], "summary": "Replace an existing bundle", "parameters": [ { "type": "string", "description": "Internal bundle UUID", "name": "id", "in": "path", "required": true }, { "type": "file", "description": "Replacement .tar.gz archive", "name": "file", "in": "formData", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Bundle not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "422": { "description": "catalog_id or catalog_type mismatch, or validation failed", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Marks the bundle deleting, removes the on-disk directory, reloads CatalogProvider, and removes the DB row.", "tags": [ "Bundles" ], "summary": "Delete a bundle", "parameters": [ { "type": "string", "description": "Internal bundle UUID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content" }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Bundle not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/components/{component_type}/providers/{provider_id}/params": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves the configuration schema (JSON Schema) for a specific provider within a component type. Returns a JSON Schema object with properties that may include x-data-id for fields that should be populated from metadata specifications.", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get component provider parameters", "parameters": [ { "type": "string", "description": "Component type (e.g., 'vector_db', 'llm', 'embedding', 'reranker')", "name": "component_type", "in": "path", "required": true }, { "type": "string", "description": "Provider identifier (e.g., 'opensearch', 'vllm', 'watsonx')", "name": "provider_id", "in": "path", "required": true } ], "responses": { "200": { "description": "JSON Schema object with $schema, type, and properties. Properties may include x-data-id field indicating data should be populated from metadata specifications (e.g., supported_models)", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request - Invalid component_type or provider_id", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Component type or provider not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/connectors": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns registered providers. When type is supplied only that type is returned; omitting it returns all providers across all connector types.", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "List connector providers", "parameters": [ { "type": "string", "description": "Filter by connector type (e.g. 'datasource'). Omit to return all types.", "name": "type", "in": "query" } ], "responses": { "200": { "description": "List of providers", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Connector" } } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Connector type not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/connectors/{connector_type}/providers/{provider_id}/params": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns the JSON Schema for the configuration parameters of a specific connector provider.", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get connector provider parameters", "parameters": [ { "type": "string", "description": "Connector type (e.g. 'datasource')", "name": "connector_type", "in": "path", "required": true }, { "type": "string", "description": "Provider identifier (e.g. 'object_storage', 'file_system')", "name": "provider_id", "in": "path", "required": true } ], "responses": { "200": { "description": "JSON Schema for the provider's configuration", "schema": { "type": "object", "additionalProperties": true } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Connector type or provider not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/datasources": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns a paginated list of datasource connectors with optional filters by status and provider.", "produces": [ "application/json" ], "tags": [ "Datasources" ], "summary": "List datasource connectors", "parameters": [ { "type": "integer", "default": 1, "description": "Page number (1-indexed)", "name": "page", "in": "query" }, { "type": "integer", "default": 20, "description": "Number of items per page (max: 100)", "name": "page_size", "in": "query" }, { "type": "string", "description": "Filter by status: 'connected' or 'offline'", "name": "status", "in": "query" }, { "type": "string", "description": "Filter by provider ID (e.g. 'object_storage', 'file_system')", "name": "provider", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceListResponse" } }, "400": { "description": "Invalid query parameters", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Validates the request, tests the connection, encrypts credentials, and persists a new datasource connector. Returns 422 if the connection test fails.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Datasources" ], "summary": "Create datasource connector", "parameters": [ { "description": "Datasource creation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateDatasourceRequest" } } ], "responses": { "201": { "description": "Datasource created", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateDatasourceResponse" } }, "400": { "description": "Invalid request body or validation errors", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Provider not found in catalog", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "409": { "description": "Datasource name already exists", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "422": { "description": "Connection test failed", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/datasources/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns the full details of a datasource connector including non-sensitive metadata and the list of connected services enriched with live sync state from each service's Digitize pod.", "produces": [ "application/json" ], "tags": [ "Datasources" ], "summary": "Get a single datasource connector", "parameters": [ { "type": "string", "description": "Datasource UUID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Datasource detail", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.GetDatasourceResponse" } }, "400": { "description": "Invalid UUID format", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Datasource not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Deletes a datasource connector by ID. Returns 409 Conflict if the connector is still linked to one or more applications.", "produces": [ "application/json" ], "tags": [ "Datasources" ], "summary": "Delete datasource connector", "parameters": [ { "type": "string", "description": "Datasource connector ID (UUID)", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "Datasource deleted" }, "400": { "description": "Invalid connector ID format", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Datasource not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "409": { "description": "Datasource is connected to one or more applications", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/resources": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves system resource information including CPU, memory, and accelerator availability", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get system resources", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ResourcesResponse" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/services": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves a list of all deployable service templates. Dependency-only services are excluded from this list. Returns service summaries including standalone flag without endpoints and pod templates.", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "List available services", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ServiceSummary" } } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/services/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves detailed information about a specific service template", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get service details", "parameters": [ { "type": "string", "description": "Service template ID (e.g., 'summarize')", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Service" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Service not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/services/{id}/deploy-options": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves available providers and dependency rules for a specific service", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get service deploy options", "parameters": [ { "type": "string", "description": "Service ID (e.g., 'digitize', 'chat')", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsService" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Service not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/services/{id}/params": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieves the configuration schema (JSON Schema) for a specific service. Returns a JSON Schema object with properties that define the service's configurable parameters.", "produces": [ "application/json" ], "tags": [ "Catalog" ], "summary": "Get service parameters", "parameters": [ { "type": "string", "description": "Service ID (e.g., 'chat', 'digitize', 'similarity')", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "JSON Schema object with $schema, type, and properties defining service parameters", "schema": { "type": "object", "additionalProperties": true } }, "400": { "description": "Bad Request - Invalid service ID", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "401": { "description": "Unauthorized - Invalid or missing access token", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "404": { "description": "Service not found", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.ErrorResponse" } } } } }, "/workers": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Returns all registered workers and their current status from the database.", "produces": [ "application/json" ], "tags": [ "Workers" ], "summary": "List all workers", "responses": { "200": { "description": "List of workers", "schema": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Worker" } } }, "500": { "description": "Internal error", "schema": { "type": "object", "additionalProperties": true } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Pre-registers a worker by name, creates a pending DB row, and returns a single-use bootstrap token.\nThe operator passes this token when starting the worker daemon (`worker join --token \u003ctoken\u003e`).", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Workers" ], "summary": "Register a new worker", "parameters": [ { "description": "Worker registration request", "name": "worker", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.createWorkerReq" } } ], "responses": { "201": { "description": "Worker registered; token valid for 24 hours", "schema": { "$ref": "#/definitions/internal_pkg_catalog_apiserver_handlers.createWorkerResp" } }, "400": { "description": "Invalid payload", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal error", "schema": { "type": "object", "additionalProperties": true } } } } }, "/workers/{id}": { "delete": { "security": [ { "BearerAuth": [] } ], "description": "Permanently removes a worker from the registry and the database.\nIf the worker is currently connected its gRPC stream is also cleaned up.", "produces": [ "application/json" ], "tags": [ "Workers" ], "summary": "Deregister a worker", "parameters": [ { "type": "string", "description": "Worker ID (UUID)", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "Worker deleted" }, "400": { "description": "Invalid worker ID", "schema": { "type": "object", "additionalProperties": true } }, "404": { "description": "Worker not found", "schema": { "type": "object", "additionalProperties": true } }, "500": { "description": "Internal error", "schema": { "type": "object", "additionalProperties": true } } } } } }, "definitions": { "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.Component": { "type": "object", "required": [ "component_type", "provider_id", "version" ], "properties": { "component_type": { "type": "string" }, "params": { "type": "object", "additionalProperties": {} }, "provider_id": { "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.ConnectedServiceInfo": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.ConnectedServiceItem": { "type": "object", "properties": { "application_id": { "description": "ApplicationID is the UUID of the application that owns this service.", "type": "string" }, "application_name": { "description": "ApplicationName is the human-readable display name of the owning application.", "type": "string" }, "err_msg": { "description": "ErrMsg is populated when sync state could not be fetched (e.g. service unreachable or\nno endpoint registered). Empty on success.", "type": "string" }, "last_sync_at": { "description": "LastSyncAt is the ISO-8601 timestamp of the last completed sync, or null when unavailable.", "type": "string" }, "service": { "description": "Service contains the catalog identity (id + resolved name) of the owning application.", "allOf": [ { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.ConnectedServiceInfo" } ] }, "sync_status": { "description": "SyncStatus is the current sync state sourced from the Digitize pod.\nSet to \"unknown\" when the Digitize pod is unreachable.", "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateApplicationRequest": { "type": "object", "required": [ "catalog_id", "name", "services", "version" ], "properties": { "catalog_id": { "type": "string" }, "name": { "type": "string", "maxLength": 100, "minLength": 3 }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.Service" } }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateApplicationResponse": { "type": "object", "properties": { "id": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateDatasourceRequest": { "type": "object", "required": [ "name", "params", "provider_id" ], "properties": { "name": { "description": "Name is the unique human-readable label for this connector.\nMust be 3–100 characters; only letters, digits, hyphens (-), and underscores (_) are\nallowed. Duplicate-name detection is case-insensitive (\"My-DB\" and \"my-db\" conflict).", "type": "string", "maxLength": 100, "minLength": 3 }, "params": { "description": "Params holds the provider-specific configuration. Sensitive fields (format: \"password\"\nin the JSON schema) are encrypted at rest; all other fields are stored in plain text.", "type": "object", "additionalProperties": {} }, "provider_id": { "description": "ProviderID identifies the provider implementation (e.g. \"object_storage\", \"file_system\").", "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.CreateDatasourceResponse": { "type": "object", "properties": { "id": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceListResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceResponse" } }, "pagination": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.PaginationMetadata" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceProviderInfo": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceResponse": { "type": "object", "properties": { "connected_services": { "type": "integer" }, "created_at": { "type": "string" }, "id": { "type": "string" }, "message": { "type": "string" }, "name": { "type": "string" }, "provider": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceProviderInfo" }, "status": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.GetDatasourceResponse": { "type": "object", "properties": { "created_at": { "description": "CreatedAt is the creation timestamp.", "type": "string" }, "id": { "description": "ID is the UUID of the datasource connector.", "type": "string" }, "message": { "description": "Message contains a human-readable description of the current status (may be empty).", "type": "string" }, "metadata": { "description": "Metadata holds the non-sensitive configuration fields.\nSensitive fields (e.g. secret_access_key, private_key) are always stripped.", "type": "object", "additionalProperties": {} }, "name": { "description": "Name is the unique human-readable label.", "type": "string" }, "provider": { "description": "Provider contains the provider ID and its resolved display name.", "allOf": [ { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.DatasourceProviderInfo" } ] }, "services": { "description": "Services lists every service currently connected to this datasource,\nenriched with live sync state from each service's Digitize pod.", "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.ConnectedServiceItem" } }, "status": { "description": "Status is the current connectivity status (\"connected\" or \"offline\").", "type": "string" }, "type": { "description": "Type is always \"datasource\".", "type": "string" }, "updated_at": { "description": "UpdatedAt is the last-update timestamp.", "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.Service": { "type": "object", "required": [ "catalog_id", "components", "version" ], "properties": { "catalog_id": { "type": "string" }, "components": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_models.Component" } }, "params": { "description": "Service-level parameters", "type": "object", "additionalProperties": {} }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_repository.DeleteApplicationResponse": { "type": "object", "properties": { "id": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleListResponse": { "type": "object", "properties": { "bundles": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleResponse" } }, "pagination": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.PaginationMetadata" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleResponse": { "type": "object", "properties": { "catalog_id": { "type": "string" }, "catalog_type": { "type": "string" }, "created_at": { "type": "string" }, "created_by": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "size_bytes": { "type": "integer" }, "status": { "type": "string" }, "updated_at": { "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_apiserver_services_bundle.BundleValidationResult": { "type": "object", "properties": { "catalog_id": { "type": "string" }, "catalog_type": { "type": "string" }, "name": { "type": "string" }, "valid": { "type": "boolean" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Application": { "type": "object", "properties": { "catalog_id": { "type": "string" }, "created_at": { "type": "string" }, "deployment_type": { "type": "string" }, "id": { "type": "string" }, "message": { "type": "string" }, "name": { "type": "string" }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationService" } }, "status": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationCPUInfo": { "type": "object", "properties": { "total_cpu": { "description": "Total allocated CPUs", "type": "number" }, "used_cpu": { "description": "Actually used CPUs", "type": "number" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationListResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Application" } }, "pagination": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.PaginationMetadata" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationMemInfo": { "type": "object", "properties": { "total_bytes": { "description": "Total allocated memory in bytes", "type": "integer" }, "used_bytes": { "description": "Actually used memory in bytes", "type": "integer" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationPSResponse": { "type": "object", "properties": { "components": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Pod" } }, "id": { "type": "string" }, "name": { "type": "string" }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Pod" } } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationResourcesResponse": { "type": "object", "properties": { "accelerators": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "cpu": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationCPUInfo" }, "memory": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationMemInfo" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ApplicationService": { "type": "object", "properties": { "catalog_id": { "type": "string" }, "components": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ServiceComponentResp" } }, "created_at": { "type": "string" }, "endpoints": { "type": "array", "items": { "type": "object", "additionalProperties": {} } }, "id": { "type": "string" }, "message": { "type": "string" }, "status": { "type": "string" }, "type": { "type": "string" }, "updated_at": { "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Architecture": { "type": "object", "properties": { "certified_by": { "type": "string" }, "description": { "type": "string" }, "global_components": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ComponentReference" } }, "id": { "type": "string" }, "links": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ArchitectureLinks" }, "name": { "type": "string" }, "runtimes": { "type": "array", "items": { "type": "string" } }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ServiceReference" } }, "type": { "description": "\"architecture\"", "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ArchitectureLinks": { "type": "object", "properties": { "code": { "type": "string" }, "demo": { "type": "string" }, "documentation": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ArchitectureSummary": { "type": "object", "properties": { "certified_by": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "services": { "type": "array", "items": { "type": "string" } } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ComponentReference": { "type": "object", "properties": { "type": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Connector": { "type": "object", "properties": { "connector_name": { "description": "display label for connector_type", "type": "string" }, "connector_type": { "description": "e.g. \"datasource\"", "type": "string" }, "description": { "description": "short description", "type": "string" }, "id": { "description": "e.g. \"object_storage\", \"file_system\"", "type": "string" }, "name": { "description": "display name", "type": "string" }, "type": { "description": "always \"connector\"", "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DependencyReference": { "type": "object", "properties": { "id": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsArchitecture": { "type": "object", "properties": { "global_components": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsComponent" } }, "id": { "type": "string" }, "name": { "type": "string" }, "services": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsService" } }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsComponent": { "type": "object", "properties": { "name": { "type": "string" }, "providers": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsProvider" } }, "type": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsProvider": { "type": "object", "properties": { "default": { "type": "boolean" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "resources": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Resources" }, "schema": { "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsService": { "type": "object", "properties": { "accepts_datasource": { "type": "boolean" }, "components": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DeployOptionsComponent" } }, "id": { "type": "string" }, "name": { "type": "string" }, "resources": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Resources" }, "schema": { "type": "string" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.PaginationMetadata": { "type": "object", "properties": { "has_next": { "type": "boolean" }, "has_prev": { "type": "boolean" }, "page": { "type": "integer" }, "page_size": { "type": "integer" }, "total_items": { "type": "integer" }, "total_pages": { "type": "integer" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Pod": { "type": "object", "properties": { "containers": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.PodContainer" } }, "created": { "type": "string" }, "healthy": { "type": "boolean" }, "labels": { "type": "object", "additionalProperties": { "type": "string" } }, "pod_id": { "type": "string" }, "pod_name": { "type": "string" }, "status": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Status" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.PodContainer": { "type": "object", "properties": { "healthy": { "type": "boolean" }, "name": { "type": "string" }, "status": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Status" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ProviderInfo": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Resources": { "type": "object", "properties": { "accelerators": { "description": "Accelerator cards (e.g., \"ibm.com/spyre_pf\": 1)", "type": "object", "additionalProperties": { "type": "integer" } }, "cpu": { "description": "CPU cores", "type": "integer" }, "memory": { "description": "Memory in bytes", "type": "integer" }, "storage": { "description": "Storage in bytes", "type": "integer" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Service": { "type": "object", "properties": { "accepts_datasource": { "type": "boolean" }, "architectures": { "type": "array", "items": { "type": "string" } }, "certified_by": { "type": "string" }, "dependencies": { "type": "array", "items": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.DependencyReference" } }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "standalone": { "type": "boolean" }, "type": { "description": "\"service\"", "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ServiceComponentResp": { "type": "object", "properties": { "id": { "type": "string" }, "message": { "type": "string" }, "metadata": { "type": "object", "additionalProperties": {} }, "provider": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ProviderInfo" }, "status": { "type": "string" }, "type": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ServiceReference": { "type": "object", "properties": { "id": { "type": "string" }, "optional": { "type": "boolean" }, "version": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.ServiceSummary": { "type": "object", "properties": { "architectures": { "type": "array", "items": { "type": "string" } }, "certified_by": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "standalone": { "type": "boolean" } } }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Status": { "type": "string", "enum": [ "waiting", "running", "terminated", "created", "paused", "restarting", "exited", "removing", "dead" ], "x-enum-varnames": [ "Waiting", "Running", "Terminated", "Created", "Paused", "Restarting", "Exited", "Removing", "Dead" ] }, "github_com_project-ai-services_ai-services_internal_pkg_catalog_types.Worker": { "type": "object", "properties": { "id": { "type": "string" }, "last_heartbeat": { "type": "string" }, "metadata": { "type": "object", "additionalProperties": {} }, "name": { "type": "string" }, "registered_at": { "type": "string" }, "runtime_type": { "type": "string" }, "status": { "type": "string" }, "updated_at": { "type": "string" } } }, "github_com_project-ai-services_ai-services_internal_pkg_models.AcceleratorInfo": { "type": "object", "properties": { "available": { "type": "integer" }, "total": { "type": "integer" } } }, "github_com_project-ai-services_ai-services_internal_pkg_models.CPUInfo": { "type": "object", "properties": { "available_cpu": { "type": "number" }, "total_cpu": { "type": "integer" } } }, "github_com_project-ai-services_ai-services_internal_pkg_models.MemoryInfo": { "type": "object", "properties": { "available_bytes": { "type": "integer" }, "total_bytes": { "type": "integer" } } }, "internal_pkg_catalog_apiserver_handlers.ErrorResponse": { "type": "object", "properties": { "error": { "type": "string" } } }, "internal_pkg_catalog_apiserver_handlers.ResourcesResponse": { "type": "object", "properties": { "accelerators": { "type": "object", "additionalProperties": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_models.AcceleratorInfo" } }, "cpu": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_models.CPUInfo" }, "memory": { "$ref": "#/definitions/github_com_project-ai-services_ai-services_internal_pkg_models.MemoryInfo" } } }, "internal_pkg_catalog_apiserver_handlers.UpdateApplicationRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 3 } } }, "internal_pkg_catalog_apiserver_handlers.createWorkerReq": { "type": "object", "required": [ "worker_name" ], "properties": { "worker_name": { "type": "string", "maxLength": 100, "minLength": 1 } } }, "internal_pkg_catalog_apiserver_handlers.createWorkerResp": { "type": "object", "properties": { "token": { "type": "string" }, "worker_name": { "type": "string" } } }, "internal_pkg_catalog_apiserver_handlers.loginReq": { "type": "object", "required": [ "password", "username" ], "properties": { "password": { "type": "string" }, "username": { "type": "string" } } }, "internal_pkg_catalog_apiserver_handlers.refreshReq": { "type": "object", "required": [ "refresh_token" ], "properties": { "refresh_token": { "type": "string" } } } }, "securityDefinitions": { "BearerAuth": { "description": "Type \"Bearer\" followed by a space and JWT token.", "type": "apiKey", "name": "Authorization", "in": "header" } }, "tags": [ { "description": "Authentication and authorization endpoints", "name": "Authentication" }, { "description": "Application management endpoints", "name": "Applications" }, { "description": "Catalog endpoints for architectures and services", "name": "Catalog" } ] }