{ "openapi": "3.1.0", "info": { "title": "Redis Data Integration API", "description": "> **NOTE:** RDI API v1 is deprecated as of RDI 1.19.0. Use RDI API v2 for new integrations and migrate existing clients. API v1 will not be extended with new RDI features and may be removed in a future RDI version. See the [RDI API migration guide](https://redis.io/docs/latest/integrate/redis-data-integration/reference/api-migration/).\n\nAPI for Redis Data Integration services", "version": "2.0.0" }, "paths": { "/": { "get": { "summary": "Redirect To Doc", "description": "Redirects to the API documentation page.", "operationId": "redirect_to_doc__get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } }, "security": [] } }, "/api/v1/login": { "post": { "tags": ["login"], "summary": "Login", "description": "Login route.\n\nArgs:\n credentials (CredentialsInfo): User credentials.\n\nReturns:\n TokenInfo: Token information.", "operationId": "login_api_v1_login_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CredentialsInfo" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenInfo" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [] } }, "/api/v1/pipelines/start": { "post": { "tags": ["secure"], "summary": "Start Pipeline", "description": "Starts a pipeline.", "operationId": "start_pipeline_api_v1_pipelines_start_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/stop": { "post": { "tags": ["secure"], "summary": "Stop Pipeline", "description": "Stops a pipeline.", "operationId": "stop_pipeline_api_v1_pipelines_stop_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/reset": { "post": { "tags": ["secure"], "summary": "Reset Pipeline", "description": "Resets a pipeline.", "operationId": "reset_pipeline_api_v1_pipelines_reset_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/actions/{action_id}": { "get": { "tags": ["secure"], "summary": "Get Action", "description": "Gets an action status by ID.", "operationId": "get_action_api_v1_actions__action_id__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "action_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Action Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Action not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionResponse" } } } } } } }, "/api/v1/me": { "get": { "tags": ["secure"], "summary": "Protected Route", "description": "Protected route.\n\nArgs:\n token_data (dict): Token data.\n\nReturns:\n Dict[str, Any]: Token data.", "operationId": "protected_route_api_v1_me_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Response Protected Route Api V1 Me Get" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/sources": { "put": { "tags": ["secure", "sources"], "summary": "Update Sources", "description": "Updates the sources in RDI settings.", "operationId": "update_sources_api_v1_pipelines_sources_put", "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Body", "examples": [ { "psql": { "type": "cdc", "logging": { "level": "debug" }, "connection": { "type": "mysql", "host": "${HOST_IP}", "port": 3306, "database": "new_schema", "user": "${secret:local-vault:credentials:user}", "password": "${secret:local-vault:credentials:password}" } } } ] } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/sources/{name}": { "put": { "tags": ["secure", "sources"], "summary": "Upsert Source By Name", "description": "Upserts a source in RDI settings by its name.", "operationId": "upsert_source_by_name_api_v1_pipelines_sources__name__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "type": "cdc", "logging": { "level": "debug" }, "connection": { "type": "mysql", "host": "${HOST_IP}", "port": 3306, "database": "new_schema", "user": "${secret:local-vault:credentials:user}", "password": "${secret:local-vault:credentials:password}" } } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } }, "patch": { "tags": ["secure", "sources"], "summary": "Partial Update Source By Name", "description": "Partially updates a source in RDI settings by name.", "operationId": "partial_update_source_by_name_api_v1_pipelines_sources__name__patch", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "active": true, "tables": { "my_table": { "columns": ["id", "name"] } } } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } }, "delete": { "tags": ["secure", "sources"], "summary": "Delete Source By Name", "description": "Deletes a source from RDI settings by its name.", "operationId": "delete_source_by_name_api_v1_pipelines_sources__name__delete", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v1/pipelines/targets": { "put": { "tags": ["secure", "targets"], "summary": "Update Targets", "description": "Updates the targets in RDI settings.", "operationId": "update_targets_api_v1_pipelines_targets_put", "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Body", "examples": [ { "target": { "connection": { "type": "redis", "host": "${HOST_IP}", "port": 12002 } } } ] } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/targets/{name}": { "put": { "tags": ["secure", "targets"], "summary": "Upsert Target By Name", "description": "Upserts a target in RDI settings by its name.", "operationId": "upsert_target_by_name_api_v1_pipelines_targets__name__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "connection": { "type": "redis", "host": "${HOST_IP}", "port": 12002 } } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } }, "patch": { "tags": ["secure", "targets"], "summary": "Partial Update Target By Name", "description": "Partially updates a target in RDI settings by name.", "operationId": "partial_update_target_by_name_api_v1_pipelines_targets__name__patch", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "connection": { "port": 12001 } } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } }, "delete": { "tags": ["secure", "targets"], "summary": "Delete Target By Name", "description": "Deletes a target from RDI settings by its name.", "operationId": "delete_target_by_name_api_v1_pipelines_targets__name__delete", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v1/pipelines/secret-providers/{name}": { "put": { "tags": ["secure", "secret-providers"], "summary": "Upsert Secret Provider By Name", "description": "Upserts a secret-provider in RDI settings by its name.", "operationId": "upsert_secret_provider_by_name_api_v1_pipelines_secret_providers__name__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "type": "vault", "parameters": { "vaultAddress": "http://vault.default:8200", "roleName": "database", "someField": "abc", "objects": [ { "objectName": "password", "secretPath": "secret/data/db-pass", "secretKey": "password" } ] } } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } }, "patch": { "tags": ["secure", "secret-providers"], "summary": "Partial Update Secret Provider By Name", "description": "Partially updates a secret provider in RDI settings by name.", "operationId": "partial_update_secret_provider_by_name_api_v1_pipelines_secret_providers__name__patch", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "type": "aws" } ], "title": "Body" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } }, "delete": { "tags": ["secure", "secret-providers"], "summary": "Delete Secret Provider By Name", "description": "Deletes a secret-provider from RDI settings by its name.", "operationId": "delete_secret_provider_by_name_api_v1_pipelines_secret_providers__name__delete", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "title": "Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v1/pipelines/sources/dry-run": { "post": { "tags": ["secure", "connection"], "summary": "Sources Dry Run", "description": "Tests the connection to the source database.", "operationId": "sources_dry_run_api_v1_pipelines_sources_dry_run_post", "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Body", "examples": [ { "type": "cdc", "logging": { "level": "debug" }, "connection": { "type": "mysql", "host": "${HOST_IP}", "port": 3306, "database": "new_schema", "user": "${secret:local-vault:credentials:user}", "password": "${secret:local-vault:credentials:password}" } } ] } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectionStatusSingleConnection" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "503": { "description": "Service Unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "504": { "description": "Gateway Timeout", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/targets/dry-run": { "post": { "tags": ["secure"], "summary": "Multiple Targets Dry Run", "description": "Tests connection to the target database(s).", "operationId": "multiple_targets_dry_run_api_v1_pipelines_targets_dry_run_post", "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Body", "examples": [ { "targets": { "target-one": { "type": "redis", "host": "${HOST_IP}", "port": 12000 }, "target-two": { "type": "redis", "host": "${HOST_IP}", "port": 12002, "password": "${TARGET_DB_PASSWORD}" } } } ] } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TargetsOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/target/dry-run": { "post": { "tags": ["secure"], "summary": "Single Target Dry Run", "description": "Tests connection by name to the target database.", "operationId": "single_target_dry_run_api_v1_pipelines_target_dry_run_post", "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Body", "examples": [ { "type": "redis", "host": "${HOST_IP}", "port": 12002 } ] } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConnectionStatusSingleConnection" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/sources/{source_name}/columns": { "get": { "tags": ["secure"], "summary": "Get Columns", "description": "Returns metadata for the specified schema and tables, for the specified source.", "operationId": "get_columns_api_v1_pipelines_sources__source_name__columns_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "source_name", "in": "path", "required": true, "schema": { "type": "string", "title": "Source Name" } }, { "name": "schema", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional schema name", "title": "Schema" }, "description": "Optional schema name" }, { "name": "tables", "in": "query", "required": true, "schema": { "type": "string", "description": "Comma-separated list of table names to filter by", "title": "Tables" }, "description": "Comma-separated list of table names to filter by" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetadataResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "The specified source is not found in the current pipeline", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "description": "Collector API is not available for the specified source or is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v1/pipelines/sources/{source_name}/schemas": { "get": { "tags": ["secure"], "summary": "Get Schemas", "description": "Returns all available schemas for the specified source.\nFor databases that do not support schemas (such as MySQL), returns available databases instead.", "operationId": "get_schemas_api_v1_pipelines_sources__source_name__schemas_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "source_name", "in": "path", "required": true, "schema": { "type": "string", "title": "Source Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "The specified source is not found in the current pipeline", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "description": "Collector API is not available for the specified source or is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v1/pipelines/sources/{source_name}/databases": { "get": { "tags": ["secure"], "summary": "Get Databases", "description": "Returns all available databases for the specified source.", "operationId": "get_databases_api_v1_pipelines_sources__source_name__databases_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "source_name", "in": "path", "required": true, "schema": { "type": "string", "title": "Source Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DatabaseResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "The specified source is not found in the current pipeline", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "description": "Collector API is not available for the specified source or is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v1/pipelines/sources/{source_name}/metadata": { "get": { "tags": ["secure"], "summary": "Get Metadata", "description": "Returns metadata for the specified schema and tables, for the specified source.", "operationId": "get_metadata_api_v1_pipelines_sources__source_name__metadata_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "source_name", "in": "path", "required": true, "schema": { "type": "string", "title": "Source Name" } }, { "name": "schema", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional schema name", "title": "Schema" }, "description": "Optional schema name" }, { "name": "tables", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional comma-separated list of table names to filter by", "title": "Tables" }, "description": "Optional comma-separated list of table names to filter by" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetadataResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "The specified source is not found in the current pipeline", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "description": "Collector API is not available for the specified source or is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v1/pipelines/sources/{source_name}/tables": { "get": { "tags": ["secure"], "summary": "Get Tables", "description": "Returns available tables in the specified schema for the specified source.", "operationId": "get_tables_api_v1_pipelines_sources__source_name__tables_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "source_name", "in": "path", "required": true, "schema": { "type": "string", "title": "Source Name" } }, { "name": "schema", "in": "query", "required": true, "schema": { "type": "string", "description": "Schema name", "title": "Schema" }, "description": "Schema name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TableResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "The specified source is not found in the current pipeline", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "description": "Collector API is not available for the specified source or is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v1/pipelines": { "get": { "tags": ["secure", "deploy"], "summary": "Get Pipelines", "description": "Returns the current pipeline.", "operationId": "get_pipelines_api_v1_pipelines_get", "security": [ { "JWTBearer": [] } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "title": "Response Get Pipelines Api V1 Pipelines Get" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" } } }, "post": { "tags": ["secure", "deploy"], "summary": "Post Pipelines", "description": "Updates the current pipeline completely, or creates it if it doesn't exist, using the provided configuration.\nBefore creating or updating, validates the provided configuration for schema compliance and integrity.", "operationId": "post_pipelines_api_v1_pipelines_post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "dry_run", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Only validate the provided configuration without making changes", "default": false, "title": "Dry Run" }, "description": "Only validate the provided configuration without making changes" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "sources": { "psql": { "type": "cdc", "logging": { "level": "debug" }, "connection": { "type": "postgresql", "host": "host.docker.internal", "port": 5432, "database": "chinook", "user": "postgres", "password": "postgres" }, "tables": { "public.invoice": { "columns": [ "billingaddress", "billingcity", "billingcountry", "billingpostalcode", "total", "customerid", "billingstate", "invoiceid", "invoicedate" ], "keys": ["invoiceid"] }, "public.track": { "columns": [ "genreid", "milliseconds", "mediatypeid", "trackid", "composer", "bytes", "name", "albumid", "unitprice" ], "keys": ["trackid"] }, "public.mediatype": { "columns": ["mediatypeid", "name"], "keys": ["mediatypeid"] }, "public.customer": { "columns": [ "country", "firstname", "address", "city", "lastname", "phone", "postalcode", "customerid", "company", "state", "fax", "email", "supportrepid" ], "keys": ["customerid"] }, "public.genre": { "columns": ["genreid", "name"], "keys": ["genreid"] }, "public.invoiceline": { "columns": [ "quantity", "trackid", "invoicelineid", "invoiceid", "unitprice" ], "keys": ["invoicelineid"] }, "public.playlist": { "columns": ["playlistid", "name"], "keys": ["playlistid"] }, "public.employee": { "columns": [ "country", "firstname", "birthdate", "address", "city", "reportsto", "title", "employeeid", "hiredate", "lastname", "phone", "postalcode", "state", "fax", "email" ], "keys": ["employeeid"] }, "public.album": { "columns": ["albumid", "artistid", "title"], "keys": ["albumid"] }, "public.artist": { "columns": ["name", "artistid"], "keys": ["artistid"] }, "public.playlisttrack": { "columns": ["playlistid", "trackid"], "keys": ["playlistid", "trackid"] } } } }, "targets": { "target": { "type": "redis", "host": "host.docker.internal", "port": 12002, "password": "test" } }, "processors": { "target_data_type": "hash" }, "jobs": [ { "name": "chinook_customer", "source": { "schema": "public", "table": "Customer" }, "output": [ { "uses": "redis.write", "with": { "connection": "target", "key": { "expression": "concat(['CustomerId:', CustomerId])", "language": "jmespath" }, "expire": 100 } } ] } ] } ], "title": "Body" } } } }, "responses": { "200": { "description": "Pipeline created or updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" }, "examples": { "dry_run=false": { "summary": "dry_run=false", "value": { "action_id": "1234567890" } }, "dry_run=true": { "summary": "dry_run=true", "value": {} } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Configuration validation failed", "content": { "application/json": { "examples": { "Single validation error": { "summary": "Single validation error", "value": { "detail": "Validation failed", "errors": [ { "code": "job_validation_error", "message": "Job 'users' table 'dbz.users' was not found in the list of captured source tables.", "details": { "job": "users", "captured_tables": ["customers", "invoices"] } } ] } }, "Multiple validation errors": { "summary": "Multiple validation errors", "value": { "detail": "Validation failed", "errors": [ { "code": "job_validation_error", "message": "Job name 'user_sync' is not unique", "details": { "job": "user_sync" } }, { "code": "validation_error", "message": "Source database 'test1' is not used in any source tables.", "details": {} } ] } } }, "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } }, "patch": { "tags": ["secure", "deploy"], "summary": "Patch Pipelines", "description": "Updates the current pipeline partially by merging with the provided configuration using JSON Merge Patch semantics.\nBefore updating, validates the merged configuration for schema compliance and integrity.", "operationId": "patch_pipelines_api_v1_pipelines_patch", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "dry_run", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Only validate the provided configuration without making changes", "default": false, "title": "Dry Run" }, "description": "Only validate the provided configuration without making changes" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "examples": [ { "sources": { "psql": { "type": "cdc", "logging": { "level": "debug" }, "connection": { "type": "postgresql", "host": "host.docker.internal", "port": 5432, "database": "chinook", "user": "postgres", "password": "postgres" }, "tables": { "public.invoice": { "columns": [ "billingaddress", "billingcity", "billingcountry", "billingpostalcode", "total", "customerid", "billingstate", "invoiceid", "invoicedate" ], "keys": ["invoiceid"] }, "public.track": { "columns": [ "genreid", "milliseconds", "mediatypeid", "trackid", "composer", "bytes", "name", "albumid", "unitprice" ], "keys": ["trackid"] }, "public.mediatype": { "columns": ["mediatypeid", "name"], "keys": ["mediatypeid"] }, "public.customer": { "columns": [ "country", "firstname", "address", "city", "lastname", "phone", "postalcode", "customerid", "company", "state", "fax", "email", "supportrepid" ], "keys": ["customerid"] }, "public.genre": { "columns": ["genreid", "name"], "keys": ["genreid"] }, "public.invoiceline": { "columns": [ "quantity", "trackid", "invoicelineid", "invoiceid", "unitprice" ], "keys": ["invoicelineid"] }, "public.playlist": { "columns": ["playlistid", "name"], "keys": ["playlistid"] }, "public.employee": { "columns": [ "country", "firstname", "birthdate", "address", "city", "reportsto", "title", "employeeid", "hiredate", "lastname", "phone", "postalcode", "state", "fax", "email" ], "keys": ["employeeid"] }, "public.album": { "columns": ["albumid", "artistid", "title"], "keys": ["albumid"] }, "public.artist": { "columns": ["name", "artistid"], "keys": ["artistid"] }, "public.playlisttrack": { "columns": ["playlistid", "trackid"], "keys": ["playlistid", "trackid"] } } } }, "targets": { "target": { "type": "redis", "host": "host.docker.internal", "port": 12002, "password": "test" } }, "processors": { "target_data_type": "hash" }, "jobs": [ { "name": "chinook_customer", "source": { "schema": "public", "table": "Customer" }, "output": [ { "uses": "redis.write", "with": { "connection": "target", "key": { "expression": "concat(['CustomerId:', CustomerId])", "language": "jmespath" }, "expire": 100 } } ] } ] }, { "targets": { "target": { "type": "redis", "host": "host.docker.internal", "port": 12002, "password": "test" } }, "processors": { "target_data_type": "hash" } } ], "title": "Body" } } } }, "responses": { "200": { "description": "Pipeline updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" }, "examples": { "dry_run=false": { "summary": "dry_run=false", "value": { "action_id": "1234567890" } }, "dry_run=true": { "summary": "dry_run=true", "value": {} } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Configuration validation failed", "content": { "application/json": { "examples": { "Single validation error": { "summary": "Single validation error", "value": { "detail": "Validation failed", "errors": [ { "code": "job_validation_error", "message": "Job 'users' table 'dbz.users' was not found in the list of captured source tables.", "details": { "job": "users", "captured_tables": ["customers", "invoices"] } } ] } }, "Multiple validation errors": { "summary": "Multiple validation errors", "value": { "detail": "Validation failed", "errors": [ { "code": "job_validation_error", "message": "Job name 'user_sync' is not unique", "details": { "job": "user_sync" } }, { "code": "validation_error", "message": "Source database 'test1' is not used in any source tables.", "details": {} } ] } } }, "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v1/pipelines/undeploy": { "post": { "tags": ["secure", "deploy"], "summary": "Undeploy Pipelines", "description": "Undeploys a pipeline.", "operationId": "undeploy_pipelines_api_v1_pipelines_undeploy_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/jobs/functions": { "get": { "tags": ["secure"], "summary": "Pipelines Jobs Functions", "description": "Retrieves a list of all supported JMESPath functions (builtin and custom) that can be used in JMESPath.", "operationId": "pipelines_jobs_functions_api_v1_pipelines_jobs_functions_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelinesFunctionsResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/config/templates/ingest/{db_type}": { "get": { "tags": ["secure"], "summary": "Pipelines Config Templates", "description": "Returns the YAML template describing the config for the specified db type.", "operationId": "pipelines_config_templates_api_v1_pipelines_config_templates_ingest__db_type__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "db_type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/DbType" } }, { "name": "db_flavor", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/DbFlavor" }, { "type": "null" } ], "description": "Optional database flavor", "title": "Db Flavor" }, "description": "Optional database flavor" }, { "name": "source_name", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional source name; defaults to the database type", "title": "Source Name" }, "description": "Optional source name; defaults to the database type" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "501": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Implemented" } } } }, "/api/v1/pipelines/jobs/templates/ingest": { "get": { "tags": ["secure"], "summary": "Pipelines Jobs Templates", "description": "Returns the YAML templates describing how to create a job", "operationId": "pipelines_jobs_templates_api_v1_pipelines_jobs_templates_ingest_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "source_name", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Optional source name; defaults to a placeholder", "title": "Source Name" }, "description": "Optional source name; defaults to a placeholder" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Unprocessable Entity" } } } }, "/api/v1/pipelines/jobs/dry-run": { "post": { "tags": ["secure"], "summary": "Job Dry Run", "description": "Executes a job using input data in a dry-run mode.", "operationId": "job_dry_run_api_v1_pipelines_jobs_dry_run_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobDryRunBody" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobDryRunSuccessResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/strategies": { "get": { "tags": ["secure"], "summary": "Pipelines Strategies", "description": "Retrieves available strategies.", "operationId": "pipelines_strategies_api_v1_pipelines_strategies_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelinesStrategiesResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/config/schemas": { "get": { "tags": ["secure"], "summary": "Pipelines Config Schemas", "description": "Retrieves config schema.", "operationId": "pipelines_config_schemas_api_v1_pipelines_config_schemas_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Response Pipelines Config Schemas Api V1 Pipelines Config Schemas Get" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/jobs/schemas": { "get": { "tags": ["secure"], "summary": "Pipelines Jobs Schemas", "description": "Retrieves job schemas.", "operationId": "pipelines_jobs_schemas_api_v1_pipelines_jobs_schemas_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Response Pipelines Jobs Schemas Api V1 Pipelines Jobs Schemas Get" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/processors": { "put": { "tags": ["secure", "processors"], "summary": "Update Processors", "description": "Updates multiple processor properties in RDI settings.\nThe request body should be a dictionary with property names as keys and new values as values.", "operationId": "update_processors_api_v1_pipelines_processors_put", "requestBody": { "content": { "application/json": { "schema": { "additionalProperties": true, "type": "object", "title": "Body" }, "examples": { "multi_update": { "summary": "Update multiple processor properties", "description": "Example of updating read_batch_size, write_batch_size, and target_data_type.", "value": { "read_batch_size": 1000, "write_batch_size": 500, "target_data_type": "hash" } } } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } } }, "423": { "description": "Locked", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/pipelines/processors/{prop}": { "put": { "tags": ["secure", "processors"], "summary": "Upsert Processors Property", "description": "Upserts a single processor property by property name.\nThe request body should contain a single 'value' field with the new value for the property.\nThe property name is specified in the URL path.", "operationId": "upsert_processors_property_api_v1_pipelines_processors__prop__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "prop", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ProcessorPropertyName" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorProperty" }, "examples": { "read_batch_size": { "summary": "Update read_batch_size", "description": "Example of updating the read_batch_size property.", "value": { "value": 1000 } }, "target_data_type": { "summary": "Update target_data_type", "description": "Example of updating the target_data_type property.", "value": { "value": "hash" } }, "write_batch_size": { "summary": "Update write_batch_size", "description": "Example of updating the write_batch_size property.", "value": { "value": 500 } } } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v1/secrets/{secret_name}": { "put": { "tags": ["secure", "secrets"], "summary": "Set Multi Key Secret", "description": "Stores multiple key-value pairs under a single secret name in the key store.\nNOTE: {secret_name} is legacy and is not used - calculated automatically\n\nArgs:\n secret_name (str): The secret name (legacy, not used - kept for backward compatibility).\n secret_keys (SecretKeyModel): The secret key/value pairs to set.\n\nReturns:\n OperationResponse: The operation response.", "operationId": "set_multi_key_secret_api_v1_secrets__secret_name__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "secret_name", "in": "path", "required": true, "schema": { "type": "string", "title": "Secret Name" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretKeyModel" } } } }, "responses": { "200": { "description": "Secrets were set successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperationResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Use API v2 to manage sources and secrets of this pipeline.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } } } }, "/api/v1/secrets": { "put": { "tags": ["secure", "secrets"], "summary": "Set Secrets", "description": "Sets multiple secret values in the key store for multiple secret names.\n\nArgs:\n secrets (SecretsModel): Collection of secrets to store.\n\nReturns:\n OperationResponse: The operation response.", "operationId": "set_secrets_api_v1_secrets_put", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretsModel" } } }, "required": true }, "responses": { "200": { "description": "Secrets were set successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OperationResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "422": { "description": "Use API v2 to manage sources and secrets of this pipeline.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/monitoring/statistics": { "get": { "tags": ["secure"], "summary": "Statistics", "description": "Retrieves RDI statistics.", "operationId": "statistics_api_v1_monitoring_statistics_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatisticsResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/status": { "get": { "tags": ["secure"], "summary": "Get Status", "description": "Retrieves RDI status.", "operationId": "get_status_api_v1_status_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v1/trace/start": { "post": { "tags": ["secure"], "summary": "Start Trace", "description": "Starts a trace session for troubleshooting data transformation.\n\nTracing is no longer supported; the operator does not process trace tasks anymore.", "operationId": "start_trace_api_v1_trace_start_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TraceRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionIdResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } }, "501": { "description": "Not Implemented", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__v1__models__responses__ErrorResponse" } } } } }, "security": [ { "JWTBearer": [] } ] } }, "/api/v2/pipelines": { "get": { "tags": ["v2", "pipelines"], "summary": "Get Pipelines", "description": "Gets all pipelines.", "operationId": "get_pipelines_api_v2_pipelines_get", "security": [ { "JWTBearer": [] } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineResponse" }, "title": "Response Get Pipelines Api V2 Pipelines Get" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" } } }, "post": { "tags": ["v2", "pipelines"], "summary": "Create Pipeline", "description": "Creates a new pipeline.", "operationId": "create_pipeline_api_v2_pipelines_post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "dry_run", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Only validate the provided configuration without making changes", "default": false, "title": "Dry Run" }, "description": "Only validate the provided configuration without making changes" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineCreateRequest", "description": "Pipeline details" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Conflict" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v2/pipelines/{name}": { "get": { "tags": ["v2", "pipelines"], "summary": "Get Pipeline", "description": "Gets a pipeline by name.", "operationId": "get_pipeline_api_v2_pipelines__name__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" } } }, "put": { "tags": ["v2", "pipelines"], "summary": "Update Pipeline", "description": "Updates a pipeline completely, or creates it if it doesn't exist.", "operationId": "update_pipeline_api_v2_pipelines__name__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "dry_run", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Only validate the provided configuration without making changes", "default": false, "title": "Dry Run" }, "description": "Only validate the provided configuration without making changes" }, { "name": "validate_tables", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Validate against source and target databases via collector API", "default": true, "title": "Validate Tables" }, "description": "Validate against source and target databases via collector API" }, { "name": "validate_cdc", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Validate CDC configuration via collector API", "default": false, "title": "Validate Cdc" }, "description": "Validate CDC configuration via collector API" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineUpdateRequest", "description": "Pipeline details" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Gateway Timeout" } } }, "patch": { "tags": ["v2", "pipelines"], "summary": "Patch Pipeline", "description": "Updates a pipeline partially (only updates specified fields).", "operationId": "patch_pipeline_api_v2_pipelines__name__patch", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "dry_run", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Only validate the provided configuration without making changes", "default": false, "title": "Dry Run" }, "description": "Only validate the provided configuration without making changes" }, { "name": "validate_tables", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Validate against source and target databases via collector API", "default": true, "title": "Validate Tables" }, "description": "Validate against source and target databases via collector API" }, { "name": "validate_cdc", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Validate CDC configuration via collector API", "default": false, "title": "Validate Cdc" }, "description": "Validate CDC configuration via collector API" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelinePatchRequest", "description": "Partial pipeline details" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Gateway Timeout" } } }, "delete": { "tags": ["v2", "pipelines"], "summary": "Delete Pipeline", "description": "Deletes a pipeline by name.", "operationId": "delete_pipeline_api_v2_pipelines__name__delete", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" } ], "responses": { "204": { "description": "Successful Response" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v2/pipelines/{name}/status": { "get": { "tags": ["v2", "pipelines"], "summary": "Get Pipeline Status", "description": "Gets the status of a pipeline by name.", "operationId": "get_pipeline_status_api_v2_pipelines__name__status_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineStatusResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" } } } }, "/api/v2/pipelines/{name}/start": { "post": { "tags": ["v2", "pipelines"], "summary": "Start Pipeline", "description": "Starts a pipeline, or a single source when one is given.", "operationId": "start_pipeline_api_v2_pipelines__name__start_post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "source", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Start only this source; it runs only while the pipeline itself is running. Must be an existing source that is not of type 'external'.", "title": "Source" }, "description": "Start only this source; it runs only while the pipeline itself is running. Must be an existing source that is not of type 'external'." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v2/pipelines/{name}/stop": { "post": { "tags": ["v2", "pipelines"], "summary": "Stop Pipeline", "description": "Stops a pipeline, or a single source when one is given.", "operationId": "stop_pipeline_api_v2_pipelines__name__stop_post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "source", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Stop only this source; the pipeline and its other sources keep running. Must be an existing source that is not of type 'external'.", "title": "Source" }, "description": "Stop only this source; the pipeline and its other sources keep running. Must be an existing source that is not of type 'external'." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v2/pipelines/{name}/reset": { "post": { "tags": ["v2", "pipelines"], "summary": "Reset Pipeline", "description": "Resets a pipeline, or a single source when one is given.", "operationId": "reset_pipeline_api_v2_pipelines__name__reset_post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "source", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Reset only this source; the other sources keep their data. The whole pipeline is stopped while the reset runs and starts again afterwards. Must be an existing source that is not of type 'external'.", "title": "Source" }, "description": "Reset only this source; the other sources keep their data. The whole pipeline is stopped while the reset runs and starts again afterwards. Must be an existing source that is not of type 'external'." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" } } } }, "/api/v2/pipelines/{name}/metric-collections": { "get": { "tags": ["v2", "pipelines", "metric-collections"], "summary": "Get Metric Collections", "description": "Gets all metric collections for a pipeline.", "operationId": "get_metric_collections_api_v2_pipelines__name__metric_collections_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineMetricCollectionResponse" }, "title": "Response Get Metric Collections Api V2 Pipelines Name Metric Collections Get" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" } } } }, "/api/v2/pipelines/{name}/metric-collections/{collection_name}": { "get": { "tags": ["v2", "pipelines", "metric-collections"], "summary": "Get Metric Collection", "description": "Gets a metric collection for a pipeline.", "operationId": "get_metric_collection_api_v2_pipelines__name__metric_collections__collection_name__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "collection_name", "in": "path", "required": true, "schema": { "type": "string", "description": "Metric collection name", "title": "Collection Name" }, "description": "Metric collection name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineMetricCollectionResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" } } } }, "/api/v2/pipelines/{name}/dlqs": { "get": { "tags": ["v2", "dlq"], "summary": "Get all DLQ streams with counts", "description": "Returns all tables that have DLQ records with their total counts. Table names are returned in the format: source_name.schema_name.table_name (for PostgreSQL, Oracle, SQL Server, Spanner) or source_name.database_name.table_name (for MySQL, MariaDB, MongoDB).", "operationId": "get_all_dlqs_api_v2_pipelines__name__dlqs_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DlqListResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Internal Server Error" } } } }, "/api/v2/pipelines/{name}/dlqs/{full_table_name}/records": { "get": { "tags": ["v2", "dlq"], "summary": "Get DLQ records for a specific stream", "description": "Returns the DLQ records for a specific table with pagination. The stream name must be in the format: source_name.schema_name.table_name (e.g., 'postgres.public.users') or source_name.database_name.table_name (e.g., 'mysql.mydb.users').", "operationId": "get_dlq_records_api_v2_pipelines__name__dlqs__full_table_name__records_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "full_table_name", "in": "path", "required": true, "schema": { "type": "string", "description": "Full stream name in format: source_name.schema_name.table_name (e.g., 'postgres.public.users') or source_name.database_name.table_name (e.g., 'mysql.mydb.users')", "title": "Full Table Name" }, "description": "Full stream name in format: source_name.schema_name.table_name (e.g., 'postgres.public.users') or source_name.database_name.table_name (e.g., 'mysql.mydb.users')" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Number of records to return", "default": 20, "title": "Limit" }, "description": "Number of records to return" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "description": "Starting position for pagination", "default": 0, "title": "Offset" }, "description": "Starting position for pagination" }, { "name": "sort_order", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/SortOrder", "description": "Sort order: 'asc' (oldest first) or 'desc' (newest first)", "default": "desc" }, "description": "Sort order: 'asc' (oldest first) or 'desc' (newest first)" }, { "name": "fields", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated list of fields to include in projection. Allowed fields: __dlq_stream_entry_id, db, opcode, reason_rejected, removed_fields, schema, server_name, source, source_type, table, timestamp", "title": "Fields" }, "description": "Comma-separated list of fields to include in projection. Allowed fields: __dlq_stream_entry_id, db, opcode, reason_rejected, removed_fields, schema, server_name, source, source_type, table, timestamp" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DlqRecordsResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Internal Server Error" } } } }, "/api/v2/pipelines/{name}/dlqs/{full_table_name}": { "get": { "tags": ["v2", "dlq"], "summary": "Get DLQ info for a specific stream", "description": "Returns the DLQ count for a specific stream. The stream name must be in the format: source_name.schema_name.table_name (e.g., 'postgres.public.users') or source_name.database_name.table_name (e.g., 'mysql.mydb.users').", "operationId": "get_dlq_by_table_name_api_v2_pipelines__name__dlqs__full_table_name__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "full_table_name", "in": "path", "required": true, "schema": { "type": "string", "description": "Full stream name in format: source_name.schema_name.table_name (e.g., 'postgres.public.users') or source_name.database_name.table_name (e.g., 'mysql.mydb.users')", "title": "Full Table Name" }, "description": "Full stream name in format: source_name.schema_name.table_name (e.g., 'postgres.public.users') or source_name.database_name.table_name (e.g., 'mysql.mydb.users')" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DlqTableResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "500": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Internal Server Error" } } } }, "/api/v2/pipelines/{name}/secrets": { "get": { "tags": ["v2", "pipelines", "secrets"], "summary": "Get Pipeline Secrets", "description": "Lists pipeline secrets, optionally filtered to a single database.", "operationId": "get_pipeline_secrets_api_v2_pipelines__name__secrets_get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "db", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "If set, list only the secrets of this database.", "title": "Db" }, "description": "If set, list only the secrets of this database." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PipelineSecretResponse" }, "title": "Response Get Pipeline Secrets Api V2 Pipelines Name Secrets Get" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" } } }, "post": { "tags": ["v2", "pipelines", "secrets"], "summary": "Create Secret", "description": "Creates a new pipeline secret.", "operationId": "create_secret_api_v2_pipelines__name__secrets_post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "db", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys.", "title": "Db" }, "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys." }, { "name": "validate_source", "in": "query", "required": false, "schema": { "type": "boolean", "description": "When true, require the source to already exist in the pipeline.", "default": false, "title": "Validate Source" }, "description": "When true, require the source to already exist in the pipeline." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineSecretCreateRequest", "description": "Pipeline secret details" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineSecretResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "409": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Conflict" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" } } } }, "/api/v2/pipelines/{name}/secrets/{key}": { "get": { "tags": ["v2", "pipelines", "secrets"], "summary": "Get Secret", "description": "Gets a pipeline secret by key.", "operationId": "get_secret_api_v2_pipelines__name__secrets__key__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline secret key", "title": "Key" }, "description": "Pipeline secret key" }, { "name": "db", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys.", "title": "Db" }, "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys." } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineSecretResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" } } }, "put": { "tags": ["v2", "pipelines", "secrets"], "summary": "Update Secret", "description": "Updates a pipeline secret, or creates it if it does not exist.", "operationId": "update_secret_api_v2_pipelines__name__secrets__key__put", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline secret key", "title": "Key" }, "description": "Pipeline secret key" }, { "name": "db", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys.", "title": "Db" }, "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys." } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineSecretUpdateRequest", "description": "Pipeline secret details" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineSecretResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" } } }, "delete": { "tags": ["v2", "pipelines", "secrets"], "summary": "Delete Secret", "description": "Deletes a pipeline secret by key.", "operationId": "delete_secret_api_v2_pipelines__name__secrets__key__delete", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "key", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline secret key", "title": "Key" }, "description": "Pipeline secret key" }, { "name": "db", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys.", "title": "Db" }, "description": "The database a secret belongs to: a source name, or 'target' for the target database. Omit for legacy SOURCE_DB_* and TARGET_DB_* keys." } ], "responses": { "204": { "description": "Successful Response" }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" } } } }, "/api/v2/pipelines/{name}/source-schemas/{source_name}": { "get": { "tags": ["v2", "pipelines"], "summary": "Get Pipeline Source Schemas", "description": "Lists source schemas/databases, tables, and columns for a pipeline source.", "operationId": "get_pipeline_source_schemas_api_v2_pipelines__name__source_schemas__source_name__get", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "source_name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline source name", "title": "Source Name" }, "description": "Pipeline source name" }, { "name": "schemas", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated list of schema/database names to filter on", "title": "Schemas" }, "description": "Comma-separated list of schema/database names to filter on" }, { "name": "tables", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated list of table names to filter on", "title": "Tables" }, "description": "Comma-separated list of table names to filter on" }, { "name": "details", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/SourceSchemaDetails", "description": "The level of detail to return: schemas, tables, or columns", "default": "schemas" }, "description": "The level of detail to return: schemas, tables, or columns" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineSourceSchemaResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "423": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Locked" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v2/pipelines/{name}/flush-target/{target_name}": { "post": { "tags": ["v2", "pipelines", "targets"], "summary": "Flush Target", "description": "Flushes the target Redis database.\n\nSends a FLUSHALL command to the target Redis database through the collector API.", "operationId": "flush_target_api_v2_pipelines__name__flush_target__target_name__post", "security": [ { "JWTBearer": [] } ], "parameters": [ { "name": "name", "in": "path", "required": true, "schema": { "type": "string", "description": "Pipeline name", "title": "Name" }, "description": "Pipeline name" }, { "name": "target_name", "in": "path", "required": true, "schema": { "type": "string", "description": "Target name", "title": "Target Name" }, "description": "Target name" } ], "responses": { "200": { "description": "FLUSHALL completed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FlushResponse" } } } }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unauthorized" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Forbidden" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Request" }, "404": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Not Found" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Unprocessable Entity" }, "502": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Bad Gateway" }, "503": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Service Unavailable" }, "504": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } }, "description": "Gateway Timeout" } } } }, "/api/v2/info": { "get": { "tags": ["v2", "info"], "summary": "Info", "description": "Gets the API version and the operator leader-election mode.", "operationId": "info_api_v2_info_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InfoResponse" } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/redis_di_api__models__errors__ErrorResponse" } } } } }, "security": [] } } }, "components": { "schemas": { "ActionIdResponse": { "properties": { "action_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action Id", "examples": ["1234567890"] } }, "type": "object", "title": "ActionIdResponse", "description": "Response model containing an action ID." }, "ActionResponse": { "properties": { "action_id": { "type": "string", "title": "Action ID", "examples": ["1715254593439-0"] }, "status": { "$ref": "#/components/schemas/TaskStatus", "title": "Action status", "examples": ["completed", "failed"] }, "output": { "anyOf": [ { "$ref": "#/components/schemas/SourcesOutput" }, { "type": "null" } ], "title": "Action output" }, "error": { "anyOf": [ { "$ref": "#/components/schemas/redis_di_api__v1__models__sources__Error" }, { "type": "null" } ], "title": "Error object", "examples": [ { "message": "Unknown error occurred" } ] } }, "type": "object", "required": ["action_id", "status"], "title": "ActionResponse" }, "Client": { "properties": { "id": { "type": "string", "title": "Id", "examples": ["975820001001"] }, "addr": { "type": "string", "title": "Addr", "examples": ["172.17.0.1:56982"] }, "age_sec": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "$ref": "#/components/schemas/NotApplicable" } ], "title": "Age Sec", "examples": [1111, "N/A"] }, "idle_sec": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "$ref": "#/components/schemas/NotApplicable" } ], "title": "Idle Sec", "examples": [1111, "N/A"] }, "user": { "type": "string", "title": "User", "examples": ["default"] } }, "type": "object", "required": ["id", "addr", "age_sec", "idle_sec", "user"], "title": "Client" }, "ComponentType": { "type": "string", "enum": [ "debezium-collector", "collector-api", "stream-processor", "metrics-exporter", "flink-collector", "flink-processor", "riotx-collector", "unknown" ], "title": "ComponentType", "description": "Component types for RDI pipeline components." }, "ConnectionStatus": { "properties": { "status": { "$ref": "#/components/schemas/Result", "examples": ["success", "failed"] }, "error": { "anyOf": [ { "$ref": "#/components/schemas/redis_di_api__v1__models__sources__Error" }, { "type": "null" } ] } }, "type": "object", "required": ["status"], "title": "ConnectionStatus" }, "ConnectionStatusSingleConnection": { "properties": { "connected": { "type": "boolean", "title": "Connected" }, "error": { "type": "string", "title": "Error" }, "invalid_properties": { "anyOf": [ { "additionalProperties": { "type": "string" }, "type": "object" }, { "type": "null" } ], "title": "Invalid properties", "description": "Map of invalid property names to their specific error messages", "examples": [ { "database.hostname": "Unable to connect: Communications link failure" } ] } }, "type": "object", "required": ["connected", "error"], "title": "ConnectionStatusSingleConnection" }, "CredentialsInfo": { "properties": { "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Username", "description": "RDI database user", "examples": ["admin"] }, "password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Password", "description": "RDI database password", "examples": ["secret-password"] } }, "type": "object", "title": "CredentialsInfo", "description": "Credentials information" }, "DataStreams": { "properties": { "totals": { "$ref": "#/components/schemas/DataStreamsStatisticsTotal" }, "streams": { "additionalProperties": { "$ref": "#/components/schemas/DataStreamsStatistics" }, "type": "object", "title": "Streams" } }, "type": "object", "required": ["totals", "streams"], "title": "DataStreams" }, "DataStreamsStatistics": { "properties": { "total": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Total", "default": 0, "examples": [0] }, "pending": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Pending", "default": 0, "examples": [0] }, "inserted": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Inserted", "default": 0, "examples": [0] }, "updated": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Updated", "default": 0, "examples": [0] }, "deleted": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Deleted", "default": 0, "examples": [0] }, "filtered": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Filtered", "default": 0, "examples": [0] }, "rejected": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Rejected", "default": 0, "examples": [0] }, "deduplicated": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Deduplicated", "default": 0, "examples": [0] }, "last_arrival": { "type": "string", "title": "Last Arrival" } }, "type": "object", "required": ["last_arrival"], "title": "DataStreamsStatistics" }, "DataStreamsStatisticsTotal": { "properties": { "total": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Total", "default": 0, "examples": [0] }, "pending": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Pending", "default": 0, "examples": [0] }, "inserted": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Inserted", "default": 0, "examples": [0] }, "updated": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Updated", "default": 0, "examples": [0] }, "deleted": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Deleted", "default": 0, "examples": [0] }, "filtered": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Filtered", "default": 0, "examples": [0] }, "rejected": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Rejected", "default": 0, "examples": [0] }, "deduplicated": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Deduplicated", "default": 0, "examples": [0] } }, "type": "object", "title": "DataStreamsStatisticsTotal" }, "DatabaseResponse": { "properties": { "databases": { "items": { "type": "string" }, "type": "array", "title": "Databases", "examples": ["database1", "database2"] } }, "type": "object", "required": ["databases"], "title": "DatabaseResponse", "description": "Database response class." }, "DbFlavor": { "type": "string", "enum": [ "mongodb-atlas", "mongodb-replica-set", "mongodb-sharded-cluster" ], "title": "DbFlavor", "description": "Defines supported database flavors." }, "DbType": { "type": "string", "enum": [ "mariadb", "mongodb", "mysql", "oracle", "postgresql", "snowflake", "sqlserver", "spanner", "redis" ], "title": "DbType", "description": "Defines supported databases." }, "DlqListResponse": { "additionalProperties": { "$ref": "#/components/schemas/DlqTableInfo" }, "type": "object", "title": "DlqListResponse", "description": "Response model for listing all DLQ tables with their counts.\n\nReturns a dictionary mapping table names to their DLQ info.\nExample: {\"source.schema.table1\": {\"total_count\": 100}, ...}" }, "DlqRecordsResponse": { "properties": { "records": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Records", "description": "List of DLQ records" } }, "additionalProperties": false, "type": "object", "title": "DlqRecordsResponse", "description": "Response model for DLQ records." }, "DlqTableInfo": { "properties": { "total_count": { "type": "integer", "minimum": 0.0, "title": "Total Count", "description": "Total number of records in the DLQ stream", "examples": [1500] } }, "additionalProperties": false, "type": "object", "required": ["total_count"], "title": "DlqTableInfo", "description": "Model representing DLQ info for a single table." }, "DlqTableResponse": { "additionalProperties": { "$ref": "#/components/schemas/DlqTableInfo" }, "type": "object", "title": "DlqTableResponse", "description": "Response model for a single DLQ table info.\n\nReturns a dictionary with single table name mapped to its DLQ info.\nExample: {\"source.schema.table\": {\"total_count\": 100}}" }, "Entity": { "properties": { "status": { "$ref": "#/components/schemas/RdiStatus", "examples": ["ready"] }, "connected": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Connected", "examples": [true] }, "version": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Version", "examples": ["1.2.3", "1.2.0b17"] }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error", "examples": ["Error message"] } }, "type": "object", "required": ["status"], "title": "Entity" }, "ErrorCode": { "type": "string", "enum": [ "validation_error", "job_validation_error", "request_validation_error", "cdc_validation_error", "pipeline_error", "pipeline_pending", "pipeline_component_error", "operation_error" ], "title": "ErrorCode", "description": "Error codes" }, "ExtendedErrorResponse": { "properties": { "detail": { "type": "string", "title": "Detail", "examples": ["Detailed error message"] }, "errors": { "anyOf": [ { "items": { "$ref": "#/components/schemas/redis_di_api__models__errors__Error" }, "type": "array" }, { "type": "null" } ], "title": "Errors" } }, "type": "object", "required": ["detail"], "title": "ExtendedErrorResponse", "description": "Model representing an API error response with an additional list of errors." }, "FlushResponse": { "properties": { "success": { "type": "boolean", "title": "Success", "description": "Whether the flush operation was successful" }, "message": { "type": "string", "title": "Message", "description": "Human-readable result message" } }, "type": "object", "required": ["success", "message"], "title": "FlushResponse", "description": "Response model for the target flush operation." }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "InfoResponse": { "properties": { "version": { "type": "string", "title": "Version" }, "leader_election_mode": { "anyOf": [ { "$ref": "#/components/schemas/LeaderElectionMode" }, { "type": "null" } ] } }, "type": "object", "required": ["version"], "title": "InfoResponse", "description": "Response model containing information about the API and operator." }, "JobDryRunBody": { "properties": { "job": { "additionalProperties": true, "type": "object", "title": "Job settings to dry run with.", "examples": [ { "source": { "table": "employee" }, "transform": [ { "uses": "add_field", "with": { "expression": "FNAME || ' ' || LAST_NAME", "field": "FullName", "language": "sql" } } ] } ] }, "input_data": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Input Data", "examples": [ [ { "COUNTRY": "IL", "FNAME": "John", "LAST_NAME": "Lennon" }, { "COUNTRY": "US", "FNAME": "John", "LAST_NAME": "Doe" } ] ] } }, "type": "object", "required": ["job", "input_data"], "title": "JobDryRunBody" }, "JobDryRunSuccessResponse": { "properties": { "transformation": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Transformation", "examples": [ [ { "COUNTRY": "IL", "FIRST_NAME": "John", "LAST_NAME": "Lennon" } ] ] }, "output": { "items": {}, "type": "array", "title": "Output" } }, "type": "object", "required": ["transformation", "output"], "title": "JobDryRunSuccessResponse" }, "LeaderElectionMode": { "type": "string", "enum": ["disabled", "leader", "follower"], "title": "LeaderElectionMode", "description": "Operator leader-election mode." }, "LegacySecretName": { "type": "string", "enum": [ "source-db", "target-db", "rdi-sys-config", "rdi-db-ssl", "source-db-ssl", "target-db-ssl" ], "title": "LegacySecretName", "description": "The secret names API v1 accepts as the request key. They are kept for backward compatibility\nonly, since the K8s secret is derived from each key instead." }, "MetadataResponse": { "properties": { "tables": { "additionalProperties": { "$ref": "#/components/schemas/Table" }, "type": "object", "title": "Tables", "examples": [ { "table1": { "cdc_ready": true, "columns": {} } } ] } }, "type": "object", "required": ["tables"], "title": "MetadataResponse", "description": "Metadata response class." }, "NotApplicable": { "type": "string", "title": "NotApplicable", "default": "N/A" }, "OperationResponse": { "properties": { "status": { "type": "boolean", "title": "Status" } }, "type": "object", "required": ["status"], "title": "OperationResponse", "description": "Represents the response of an operation." }, "Pipeline": { "properties": { "status": { "$ref": "#/components/schemas/RdiStatus", "examples": ["ready"] }, "state": { "$ref": "#/components/schemas/State", "examples": ["cdc"] }, "last_error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Last Error", "examples": ["Error message"] }, "tasks": { "items": { "$ref": "#/components/schemas/Task" }, "type": "array", "title": "Tasks" } }, "type": "object", "required": ["status", "state", "tasks"], "title": "Pipeline" }, "PipelineComponentResponse": { "properties": { "name": { "type": "string", "title": "Name" }, "type": { "$ref": "#/components/schemas/ComponentType" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source" }, "version": { "type": "string", "title": "Version" }, "status": { "$ref": "#/components/schemas/Status", "default": "unknown" }, "replicas": { "type": "integer", "title": "Replicas", "default": 0 }, "errors": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Errors" }, "metric_collections": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Metric Collections" }, "external_endpoints": { "items": { "type": "string" }, "type": "array", "title": "External Endpoints", "default": [] } }, "additionalProperties": false, "type": "object", "required": ["name", "type", "version"], "title": "PipelineComponentResponse", "description": "Response model containing the details of a pipeline component." }, "PipelineCreateRequest": { "properties": { "name": { "type": "string", "title": "Name", "default": "default" }, "active": { "type": "boolean", "title": "Active", "default": true }, "config": { "additionalProperties": true, "type": "object", "title": "Config" } }, "additionalProperties": false, "type": "object", "title": "PipelineCreateRequest", "description": "Request model for creating a new pipeline." }, "PipelineFunction": { "properties": { "summary": { "type": "string", "title": "Summary", "examples": ["Decodes a base64(RFC 4648) encoded string"] }, "arguments": { "items": { "$ref": "#/components/schemas/PipelineFunctionArgument" }, "type": "array", "title": "Arguments" } }, "type": "object", "required": ["summary", "arguments"], "title": "PipelineFunction" }, "PipelineFunctionArgument": { "properties": { "name": { "type": "string", "title": "Name" }, "type": { "type": "string", "enum": [ "number", "string", "boolean", "object", "array", "null", "any" ], "title": "Type", "default": "string", "examples": ["string"] }, "display_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Display Text" }, "optional": { "type": "boolean", "title": "Optional", "default": false } }, "type": "object", "required": ["name"], "title": "PipelineFunctionArgument" }, "PipelineMetricCollectionResponse": { "properties": { "name": { "type": "string", "title": "Name" }, "component": { "type": "string", "title": "Component" }, "metrics": { "additionalProperties": true, "type": "object", "title": "Metrics" } }, "additionalProperties": false, "type": "object", "required": ["name", "component", "metrics"], "title": "PipelineMetricCollectionResponse", "description": "Response model containing the details of a metric collection." }, "PipelinePatchRequest": { "properties": { "active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Active" }, "config": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Config" } }, "additionalProperties": false, "type": "object", "title": "PipelinePatchRequest", "description": "Request model for updating a pipeline partially." }, "PipelineResponse": { "properties": { "name": { "type": "string", "title": "Name" }, "active": { "type": "boolean", "title": "Active" }, "config": { "additionalProperties": true, "type": "object", "title": "Config" }, "status": { "$ref": "#/components/schemas/Status", "default": "unknown" }, "status_changed_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Status Changed At" }, "errors": { "items": { "$ref": "#/components/schemas/redis_di_api__models__errors__Error" }, "type": "array", "title": "Errors" }, "components": { "items": { "$ref": "#/components/schemas/PipelineComponentResponse" }, "type": "array", "title": "Components" }, "current": { "type": "boolean", "title": "Current", "default": false } }, "additionalProperties": false, "type": "object", "required": ["name", "active", "config"], "title": "PipelineResponse", "description": "Response model containing the details of a pipeline." }, "PipelineSecretCreateRequest": { "properties": { "key": { "type": "string", "title": "Key" }, "value": { "type": "string", "title": "Value" }, "type": { "type": "string", "enum": ["simple", "file", "binary_file"], "title": "Type", "default": "simple" } }, "additionalProperties": false, "type": "object", "required": ["key", "value"], "title": "PipelineSecretCreateRequest", "description": "Request model for creating a new pipeline secret." }, "PipelineSecretResponse": { "properties": { "key": { "type": "string", "title": "Key" }, "db": { "type": "string", "title": "Db" }, "type": { "type": "string", "enum": ["simple", "file", "binary_file"], "title": "Type" } }, "additionalProperties": false, "type": "object", "required": ["key", "db", "type"], "title": "PipelineSecretResponse", "description": "Response model for a pipeline secret." }, "PipelineSecretUpdateRequest": { "properties": { "value": { "type": "string", "title": "Value" }, "type": { "type": "string", "enum": ["simple", "file", "binary_file"], "title": "Type", "default": "simple" } }, "additionalProperties": false, "type": "object", "required": ["value"], "title": "PipelineSecretUpdateRequest", "description": "Request model for updating an existing pipeline secret." }, "PipelineSourceSchemaResponse": { "properties": { "schemas": { "additionalProperties": { "$ref": "#/components/schemas/SourceSchemaResponse" }, "type": "object", "title": "Schemas", "examples": [ { "inventory": { "tables": { "addresses": { "cdc_ready": true, "columns": { "zip": { "primary_key": false, "size": 255, "type": "varchar", "unique_constraint": false } } } } } } ] } }, "additionalProperties": false, "type": "object", "title": "PipelineSourceSchemaResponse", "description": "Nested source metadata response for a pipeline source." }, "PipelineStatusResponse": { "properties": { "status": { "$ref": "#/components/schemas/Status", "default": "unknown" }, "status_changed_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Status Changed At" }, "errors": { "items": { "$ref": "#/components/schemas/redis_di_api__models__errors__Error" }, "type": "array", "title": "Errors" }, "components": { "items": { "$ref": "#/components/schemas/PipelineComponentResponse" }, "type": "array", "title": "Components" }, "current": { "type": "boolean", "title": "Current", "default": false } }, "additionalProperties": false, "type": "object", "title": "PipelineStatusResponse", "description": "Response model containing the details of a pipeline status." }, "PipelineUpdateRequest": { "properties": { "active": { "type": "boolean", "title": "Active", "default": true }, "config": { "additionalProperties": true, "type": "object", "title": "Config" } }, "additionalProperties": false, "type": "object", "title": "PipelineUpdateRequest", "description": "Request model for updating a pipeline completely." }, "PipelinesFunctionsResponse": { "additionalProperties": { "$ref": "#/components/schemas/PipelineFunction" }, "type": "object", "title": "PipelinesFunctionsResponse" }, "PipelinesStrategiesResponse": { "properties": { "strategies": { "items": { "$ref": "#/components/schemas/StrategyModel" }, "type": "array", "title": "Strategies" } }, "type": "object", "required": ["strategies"], "title": "PipelinesStrategiesResponse" }, "ProcessingPerformance": { "properties": { "total_batches": { "type": "integer", "minimum": 0.0, "title": "Total Batches", "examples": [100] }, "batch_size_avg": { "type": "number", "minimum": 0.0, "title": "Batch Size Avg", "examples": [50.2] }, "read_time_avg": { "type": "number", "minimum": 0.0, "title": "Read Time Avg", "examples": [10.5] }, "transform_time_avg": { "type": "number", "minimum": 0.0, "title": "Transform Time Avg", "examples": [2.3] }, "write_time_avg": { "type": "number", "minimum": 0.0, "title": "Write Time Avg", "examples": [4.4] }, "process_time_avg": { "type": "number", "minimum": 0.0, "title": "Process Time Avg", "examples": [20.3] }, "ack_time_avg": { "type": "number", "minimum": 0.0, "title": "Ack Time Avg", "examples": [5.2] }, "total_time_avg": { "type": "number", "minimum": 0.0, "title": "Total Time Avg", "examples": [35.5] }, "rec_per_sec_avg": { "type": "number", "minimum": 0.0, "title": "Rec Per Sec Avg", "examples": [100.1] } }, "type": "object", "required": [ "total_batches", "batch_size_avg", "read_time_avg", "transform_time_avg", "write_time_avg", "process_time_avg", "ack_time_avg", "total_time_avg", "rec_per_sec_avg" ], "title": "ProcessingPerformance" }, "ProcessorProperty": { "properties": { "value": { "title": "Value", "examples": ["hash"] } }, "type": "object", "required": ["value"], "title": "ProcessorProperty" }, "ProcessorPropertyName": { "type": "string", "enum": [ "on_failed_retry_interval", "read_batch_size", "dedup", "dedup_max_size", "dedup_strategy", "duration", "write_batch_size", "error_handling", "dlq_max_messages", "target_data_type", "json_update_strategy", "initial_sync_processes", "idle_sleep_time_ms", "idle_streams_check_interval_ms", "busy_streams_check_interval_ms", "wait_enabled", "wait_timeout", "retry_on_replica_failure" ], "title": "ProcessorPropertyName" }, "ProcessorState": { "type": "string", "enum": ["unknown", "running", "idling", "stopped"], "title": "ProcessorState", "description": "Enum for the state of the stream processor." }, "RdiPipelineStatus": { "properties": { "rdi_version": { "type": "string", "title": "Rdi Version", "examples": ["N/A"] }, "address": { "type": "string", "title": "Address", "examples": ["172.17.0.2:12006"] }, "run_status": { "anyOf": [ { "$ref": "#/components/schemas/ProcessorState" }, { "$ref": "#/components/schemas/RdiStatus" } ], "title": "Run Status", "examples": ["stopped"] }, "sync_mode": { "type": "string", "title": "Sync Mode", "examples": ["N/A"] } }, "type": "object", "required": ["rdi_version", "address", "run_status", "sync_mode"], "title": "RdiPipelineStatus" }, "RdiStatus": { "type": "string", "enum": ["stopped", "ready", "not-ready"], "title": "RdiStatus", "description": "RDI component status." }, "Result": { "type": "string", "enum": ["success", "failed"], "title": "Result", "description": "Represents the result of an operation." }, "SchemaResponse": { "properties": { "schemas": { "items": { "type": "string" }, "type": "array", "title": "Schemas", "examples": ["schema1", "schema2"] } }, "type": "object", "required": ["schemas"], "title": "SchemaResponse", "description": "Schema response class." }, "SecretKeyModel": { "additionalProperties": { "type": "string" }, "type": "object", "title": "SecretKeyModel", "examples": [ { "TARGET_DB_PASSWORD": "password", "TARGET_DB_USERNAME": "admin" } ] }, "SecretsModel": { "additionalProperties": { "$ref": "#/components/schemas/SecretKeyModel" }, "propertyNames": { "$ref": "#/components/schemas/LegacySecretName" }, "type": "object", "title": "SecretsModel", "examples": [ { "target-db": { "TARGET_DB_PASSWORD": "password", "TARGET_DB_USERNAME": "admin" } } ] }, "SnapshotStatus": { "type": "string", "enum": ["running", "failed", "paused", "completed", "N/A"], "title": "SnapshotStatus" }, "SortOrder": { "type": "string", "enum": ["asc", "desc"], "title": "SortOrder", "description": "Sort order for DLQ records." }, "SourceColumnResponse": { "properties": { "type": { "type": "string", "title": "Type", "examples": ["varchar"] }, "size": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Size", "examples": [255] }, "primary_key": { "type": "boolean", "title": "Primary Key", "default": false, "examples": [false] }, "unique_constraint": { "type": "boolean", "title": "Unique Constraint", "default": false, "examples": [false] } }, "additionalProperties": false, "type": "object", "required": ["type"], "title": "SourceColumnResponse", "description": "Metadata for a single source column." }, "SourceSchemaDetails": { "type": "string", "enum": ["schemas", "tables", "columns"], "title": "SourceSchemaDetails", "description": "Detail level for source metadata responses." }, "SourceSchemaResponse": { "properties": { "tables": { "anyOf": [ { "additionalProperties": { "$ref": "#/components/schemas/SourceTableResponse" }, "type": "object" }, { "type": "null" } ], "title": "Tables", "examples": [ { "users": { "cdc_ready": true, "columns": { "id": { "primary_key": true, "size": 32, "type": "int4", "unique_constraint": true } } } } ] } }, "additionalProperties": false, "type": "object", "title": "SourceSchemaResponse", "description": "Metadata for a single source schema or database." }, "SourceTableResponse": { "properties": { "cdc_ready": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Cdc Ready", "examples": [true] }, "columns": { "anyOf": [ { "additionalProperties": { "$ref": "#/components/schemas/SourceColumnResponse" }, "type": "object" }, { "type": "null" } ], "title": "Columns", "examples": [ { "id": { "primary_key": true, "size": 32, "type": "int4", "unique_constraint": true } } ] } }, "additionalProperties": false, "type": "object", "title": "SourceTableResponse", "description": "Metadata for a single source table." }, "SourcesOutput": { "properties": { "sources": { "additionalProperties": { "$ref": "#/components/schemas/ConnectionStatus" }, "type": "object", "title": "Sources" } }, "type": "object", "required": ["sources"], "title": "SourcesOutput" }, "State": { "type": "string", "enum": ["cdc", "initial-sync", "not-running"], "title": "State", "description": "Represents the state of a pipeline." }, "StatisticsConnection": { "properties": { "key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Key" }, "cert": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cert" }, "cacert": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cacert" }, "key_password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Key Password" }, "type": { "$ref": "#/components/schemas/DbType", "default": "redis", "examples": ["redis"] }, "host": { "type": "string", "title": "Host", "default": "localhost", "examples": ["localhost"] }, "port": { "type": "integer", "exclusiveMinimum": 0.0, "title": "Port", "description": "Positive int or \"${ENV_VAR_NAME}\" placeholder", "default": 5432, "examples": [5432, "${DB_PORT}"] }, "database": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Database", "examples": ["rdi"] }, "user": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "User", "examples": ["rdi"] }, "password": { "type": "string", "title": "Password", "examples": ["********"] }, "status": { "type": "string", "title": "Status" } }, "additionalProperties": false, "type": "object", "required": ["password", "status"], "title": "StatisticsConnection" }, "StatisticsResponse": { "properties": { "connections": { "additionalProperties": { "$ref": "#/components/schemas/StatisticsConnection" }, "type": "object", "title": "Connections" }, "data_streams": { "$ref": "#/components/schemas/DataStreams" }, "processing_performance": { "$ref": "#/components/schemas/ProcessingPerformance" }, "rdi_pipeline_status": { "$ref": "#/components/schemas/RdiPipelineStatus" }, "clients": { "additionalProperties": { "$ref": "#/components/schemas/Client" }, "type": "object", "title": "Clients" }, "offsets": { "additionalProperties": true, "type": "object", "title": "Offsets" }, "snapshot_status": { "$ref": "#/components/schemas/SnapshotStatus", "examples": ["running"] } }, "type": "object", "required": [ "connections", "data_streams", "processing_performance", "rdi_pipeline_status", "clients", "offsets", "snapshot_status" ], "title": "StatisticsResponse" }, "Status": { "type": "string", "enum": [ "started", "stopped", "error", "creating", "updating", "deleting", "starting", "stopping", "resetting", "pending", "standby", "unknown" ], "title": "Status", "description": "Pipeline status." }, "StatusResponse": { "properties": { "components": { "additionalProperties": { "$ref": "#/components/schemas/Entity" }, "type": "object", "title": "Components" }, "pipelines": { "additionalProperties": { "$ref": "#/components/schemas/Pipeline" }, "type": "object", "title": "Pipelines" } }, "type": "object", "required": ["components", "pipelines"], "title": "StatusResponse" }, "Strategy": { "type": "string", "enum": ["ingest"], "title": "Strategy", "description": "Defines available strategies." }, "StrategyModel": { "properties": { "strategy": { "$ref": "#/components/schemas/Strategy", "examples": ["ingest"] }, "databases": { "items": { "type": "string" }, "type": "array", "title": "Databases", "examples": ["mongodb", "mysql", "oracle", "sqlserver"] } }, "type": "object", "required": ["strategy", "databases"], "title": "StrategyModel" }, "Table": { "properties": { "cdc_ready": { "type": "boolean", "title": "Cdc Ready", "examples": [true] }, "columns": { "additionalProperties": true, "type": "object", "title": "Columns" } }, "type": "object", "required": ["cdc_ready", "columns"], "title": "Table" }, "TableResponse": { "properties": { "tables": { "items": { "type": "string" }, "type": "array", "title": "Tables", "examples": ["table1", "table2"] } }, "type": "object", "required": ["tables"], "title": "TableResponse", "description": "Table response class." }, "TargetsOutput": { "properties": { "targets": { "additionalProperties": { "$ref": "#/components/schemas/ConnectionStatus" }, "type": "object", "title": "Targets" } }, "type": "object", "required": ["targets"], "title": "TargetsOutput" }, "Task": { "properties": { "name": { "type": "string", "title": "Name" }, "status": { "$ref": "#/components/schemas/TaskStatus" }, "error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error", "examples": ["Error message"] }, "created_at": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$", "title": "Created At", "examples": ["2024-03-03T10:23:12"] } }, "type": "object", "required": ["name", "status", "created_at"], "title": "Task" }, "TaskStatus": { "type": "string", "enum": ["pending", "processing", "failed", "completed"], "title": "TaskStatus", "description": "Defines task statuses for Operator" }, "TemplateResponse": { "properties": { "template": { "type": "string", "title": "Template", "examples": ["template1"] } }, "type": "object", "required": ["template"], "title": "TemplateResponse" }, "TokenInfo": { "properties": { "access_token": { "type": "string", "title": "Access Token" }, "token_type": { "type": "string", "title": "Token Type" } }, "type": "object", "required": ["access_token", "token_type"], "title": "TokenInfo", "description": "Token information" }, "TraceRequest": { "properties": { "max_change_records": { "type": "integer", "title": "The maximum number of traced change records.", "default": 10, "examples": [10] }, "rejected_only": { "type": "boolean", "title": "Indicating whether to trace only rejected change records.", "default": false, "examples": [false] }, "timeout": { "type": "integer", "title": "The maximum duration of the trace in seconds.", "default": 20, "examples": [20] } }, "type": "object", "title": "TraceRequest", "description": "Request model for the trace endpoint." }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" }, "input": { "title": "Input" }, "ctx": { "type": "object", "title": "Context" } }, "type": "object", "required": ["loc", "msg", "type"], "title": "ValidationError" }, "redis_di_api__models__errors__Error": { "properties": { "code": { "$ref": "#/components/schemas/ErrorCode" }, "message": { "type": "string", "title": "Message" }, "remediation": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Remediation" }, "details": { "additionalProperties": true, "type": "object", "title": "Details" } }, "type": "object", "required": ["code", "message"], "title": "Error", "description": "Generic error model" }, "redis_di_api__models__errors__ErrorResponse": { "properties": { "detail": { "type": "string", "title": "Detail", "examples": ["Detailed error message"] }, "errors": { "anyOf": [ { "items": { "$ref": "#/components/schemas/redis_di_api__models__errors__Error" }, "type": "array" }, { "type": "null" } ], "title": "Errors" } }, "type": "object", "required": ["detail"], "title": "ErrorResponse", "description": "Generic error response model" }, "redis_di_api__v1__models__responses__ErrorResponse": { "properties": { "detail": { "type": "string", "title": "Detail", "examples": ["Detailed error message"] } }, "type": "object", "required": ["detail"], "title": "ErrorResponse", "description": "Model representing an API error response." }, "redis_di_api__v1__models__sources__Error": { "properties": { "message": { "type": "string", "title": "Error message", "examples": [ "Failed to establish connection to the PostgreSQL database. Invalid credentials" ] } }, "type": "object", "required": ["message"], "title": "Error" } }, "securitySchemes": { "JWTBearer": { "type": "http", "scheme": "bearer" }, "HTTPBearer": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } }, "servers": [ { "url": "/", "description": "Default server" } ] }