Qubership DBaaS Aggregator API

The REST API for Qubership DBaaS, Netcracker's open-source Database as a Service aggregator. It collects requests for managed databases and routes them to the appropriate database adapter, tracking every database used in a cloud project. OpenAPI 3.1.0, version 6.13.2, 73 documented paths covering database operations, users, backup and restore, balancing rules, physical database registration and migration. Bearer JWT authentication.

OpenAPI Specification

netcracker-qubership-dbaas-openapi.json Raw ↑
{
  "openapi": "3.1.0",
  "components": {
    "schemas": {
      "AccessGrantsResponse": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceRole"
            },
            "description": "Lists services roles"
          },
          "policies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PolicyRole"
            },
            "description": "Lists polices roles"
          },
          "disableGlobalPermissions": {
            "type": "boolean",
            "description": "Is global permissions disabled"
          }
        }
      },
      "AdapterDatabaseCreateRequest": {
        "type": "object",
        "description": "The request to create database for REST dbaas adapter",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {}
          },
          "namePrefix": {
            "type": "string"
          },
          "settings": {
            "type": "object",
            "additionalProperties": {}
          },
          "initScriptIdentifiers": {
            "type": "array",
            "deprecated": true,
            "items": {
              "type": "string"
            }
          },
          "password": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "dbName": {
            "type": "string"
          }
        }
      },
      "AdditionalRoles": {
        "type": "object",
        "required": [
          "id",
          "dbName",
          "connectionProperties",
          "resources"
        ],
        "description": "V3 Additional roles model for sending registration to DBaaS",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID",
            "type": "string",
            "description": "Logical database Id"
          },
          "dbName": {
            "type": "string",
            "description": "Logical database name"
          },
          "connectionProperties": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "Logical databases connection properties"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbResource"
            },
            "description": "Logical databases resources"
          }
        }
      },
      "ApiVersion": {
        "type": "object",
        "properties": {
          "specs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Spec"
            },
            "description": "The root URL part for that API version"
          }
        }
      },
      "BGState": {
        "type": "object",
        "properties": {
          "controllerNamespace": {
            "type": "string"
          },
          "originNamespace": {
            "$ref": "#/components/schemas/BGStateNamespace"
          },
          "peerNamespace": {
            "$ref": "#/components/schemas/BGStateNamespace"
          },
          "updateTime": {
            "$ref": "#/components/schemas/Date"
          }
        }
      },
      "BGStateNamespace": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "version": {
            "type": "string"
          }
        }
      },
      "BackupDatabaseResponse": {
        "type": "object",
        "required": [
          "id",
          "name",
          "status",
          "path"
        ],
        "description": "Logical database backup details",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID",
            "type": "string",
            "examples": [
              "550e8400-e29b-41d4-a716-446655440000"
            ],
            "description": "Identifier of the backup database"
          },
          "name": {
            "type": "string",
            "examples": [
              "mydb"
            ],
            "description": "Name of the database"
          },
          "classifiers": {
            "type": "array",
            "examples": [
              [
                {
                  "namespace": "namespace",
                  "microserviceName": "microserviceName",
                  "scope": "service"
                }
              ]
            ],
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "List of database classifiers. Each classifier is a sorted map of attributes."
          },
          "settings": {
            "type": "object",
            "examples": [
              {
                "key": "value"
              }
            ],
            "additionalProperties": {},
            "description": "Database settings as a key-value map"
          },
          "users": {
            "type": "array",
            "examples": [
              [
                {
                  "name": "username",
                  "role": "admin"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/User"
            },
            "description": "List of database users"
          },
          "configurational": {
            "type": "boolean",
            "examples": [
              true
            ],
            "description": "Indicates the type of the database"
          },
          "status": {
            "type": [
              "string",
              "object"
            ],
            "enum": [
              "NOT_STARTED",
              "IN_PROGRESS",
              "FAILED",
              "RETRYABLE_FAIL",
              "COMPLETED"
            ],
            "description": "Current state of the backup database"
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "examples": [
              12256
            ],
            "description": "Size of the backup"
          },
          "duration": {
            "type": "integer",
            "format": "int64",
            "examples": [
              12000
            ],
            "description": "Duration of the backup operation"
          },
          "path": {
            "type": "string",
            "examples": [
              "/backups/mydb-2025-11-13.bak"
            ],
            "description": "Path to the backup file in the storage"
          },
          "errorMessage": {
            "type": "string",
            "examples": [
              "Backup Not Found"
            ],
            "description": "Error message if the backup failed"
          },
          "creationTime": {
            "$ref": "#/components/schemas/Instant",
            "type": "string",
            "examples": [
              "2025-11-13T12:34:56Z"
            ],
            "description": "Timestamp when the backup was created"
          }
        }
      },
      "BackupExternalDatabaseResponse": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "description": "External database details",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID",
            "type": "string",
            "examples": [
              "550e8400-e29b-41d4-a716-446655440000"
            ],
            "description": "Identifier of the external backup database"
          },
          "name": {
            "type": "string",
            "examples": [
              "mydb"
            ],
            "description": "Name of the external database"
          },
          "type": {
            "type": "string",
            "examples": [
              "postgresql"
            ],
            "description": "Type of the database"
          },
          "classifiers": {
            "type": "array",
            "examples": [
              [
                {
                  "namespace": "namespace",
                  "microserviceName": "microserviceName",
                  "scope": "service"
                }
              ]
            ],
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "List of database classifiers. Each classifier is a sorted map of attributes."
          }
        }
      },
      "BackupRequest": {
        "type": "object",
        "required": [
          "backupName",
          "storageName",
          "blobPath",
          "filterCriteria",
          "externalDatabaseStrategy",
          "ignoreNotBackupableDatabases"
        ],
        "description": "Request to create a database backup",
        "properties": {
          "backupName": {
            "type": "string",
            "examples": [
              "before-prod-update-20251013T1345-G5s8"
            ],
            "pattern": "\\S",
            "description": "Unique name of the backup"
          },
          "storageName": {
            "type": "string",
            "examples": [
              "s3-backend"
            ],
            "pattern": "\\S",
            "description": "Name of the storage backend containing the backup"
          },
          "blobPath": {
            "type": "string",
            "examples": [
              "/backups/before-prod-update-20251013T1345-G5s8/logical/dbaas/"
            ],
            "pattern": "\\S",
            "description": "Path in the storage where backup will be stored"
          },
          "filterCriteria": {
            "type": "object",
            "description": "Filter criteria",
            "properties": {
              "include": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Filter"
                },
                "description": "Include databases that match any of the filters in the list"
              },
              "exclude": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Filter"
                },
                "description": "Exclude databases that match any of the filters in the list"
              }
            }
          },
          "externalDatabaseStrategy": {
            "type": [
              "string",
              "object"
            ],
            "enum": [
              "FAIL",
              "SKIP",
              "INCLUDE"
            ],
            "examples": [
              "FAIL"
            ],
            "description": "How to handle external databases during backup",
            "default": "FAIL"
          },
          "ignoreNotBackupableDatabases": {
            "type": "boolean",
            "examples": [
              false
            ],
            "description": "Whether non-backupable databases should be ignored during backup",
            "default": false
          }
        }
      },
      "BackupResponse": {
        "type": "object",
        "required": [
          "backupName",
          "storageName",
          "blobPath",
          "externalDatabaseStrategy",
          "ignoreNotBackupableDatabases",
          "status",
          "total",
          "completed",
          "size"
        ],
        "description": "Response containing backup operation details",
        "properties": {
          "backupName": {
            "type": "string",
            "examples": [
              "before-prod-update-20251013T1345-G5s8"
            ],
            "pattern": "\\S",
            "description": "Unique name of the backup"
          },
          "storageName": {
            "type": "string",
            "examples": [
              "s3-backend"
            ],
            "pattern": "\\S",
            "description": "Name of the storage backend containing the backup"
          },
          "blobPath": {
            "type": "string",
            "examples": [
              "/backups"
            ],
            "pattern": "\\S",
            "description": "Path to the backup file in the storage"
          },
          "externalDatabaseStrategy": {
            "type": [
              "string",
              "object"
            ],
            "enum": [
              "FAIL",
              "SKIP",
              "INCLUDE"
            ],
            "examples": [
              "FAIL"
            ],
            "description": "How to handle external databases during backup"
          },
          "ignoreNotBackupableDatabases": {
            "type": "boolean",
            "examples": [
              false
            ],
            "description": "Whether non-backupable databases were ignored during backup"
          },
          "filterCriteria": {
            "type": "object",
            "description": "Filter criteria",
            "properties": {
              "include": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Filter"
                },
                "description": "Include databases that match any of the filters in the list"
              },
              "exclude": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Filter"
                },
                "description": "Exclude databases that match any of the filters in the list"
              }
            }
          },
          "status": {
            "type": [
              "string",
              "object"
            ],
            "enum": [
              "NOT_STARTED",
              "IN_PROGRESS",
              "FAILED",
              "COMPLETED",
              "DELETE_IN_PROGRESS",
              "DELETED"
            ],
            "description": "Current state of the backup operation"
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "examples": [
              5
            ],
            "description": "Total number of databases being backed up"
          },
          "completed": {
            "type": "integer",
            "format": "int32",
            "examples": [
              3
            ],
            "description": "Number of databases successfully backed up"
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "examples": [
              1073741824
            ],
            "description": "Total size of the backup in bytes"
          },
          "errorMessage": {
            "type": "string",
            "examples": [
              "Failed to connect to database"
            ],
            "description": "Error details if the backup failed"
          },
          "logicalBackups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LogicalBackupResponse"
            },
            "description": "List of logical backups"
          },
          "externalDatabases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BackupExternalDatabaseResponse"
            },
            "description": "List of external databases"
          }
        }
      },
      "BackupStatusResponse": {
        "type": "object",
        "required": [
          "status"
        ],
        "description": "Current status of a backup operation",
        "properties": {
          "status": {
            "type": [
              "string",
              "object"
            ],
            "enum": [
              "NOT_STARTED",
              "IN_PROGRESS",
              "FAILED",
              "COMPLETED",
              "DELETE_IN_PROGRESS",
              "DELETED"
            ],
            "description": "Current state of the backup operation"
          },
          "total": {
            "type": "integer",
            "format": "int32",
            "examples": [
              5
            ],
            "description": "Total number of databases being backed up"
          },
          "completed": {
            "type": "integer",
            "format": "int32",
            "examples": [
              3
            ],
            "description": "Number of databases successfully backed up"
          },
          "size": {
            "type": "integer",
            "format": "int64",
            "examples": [
              1073741824
            ],
            "description": "Total size of the backup in bytes"
          },
          "errorMessage": {
            "type": "string",
            "examples": [
              "Failed to connect to database"
            ],
            "description": "Error details if the backup failed"
          }
        }
      },
      "BgNamespaceRequest": {
        "type": "object",
        "properties": {
          "peerNamespace": {
            "type": "string"
          },
          "originNamespace": {
            "type": "string"
          },
          "controllerNamespace": {
            "type": "string"
          }
        }
      },
      "BgStateRequest": {
        "type": "object",
        "properties": {
          "BGState": {
            "$ref": "#/components/schemas/BGState"
          }
        }
      },
      "ChangedDatabaseResponse": {
        "type": "object",
        "description": "A database whose credentials changed (password rotation or restore). Carries only the identity needed to locate the consumer; connection properties are fetched separately.",
        "properties": {
          "id": {
            "type": "string",
            "description": "Registry id. Together with lastRotatedAt it forms the keyset cursor the caller echoes back as sinceId to page deterministically through rows that share a timestamp."
          },
          "namespace": {
            "type": "string",
            "description": "Namespace where the database is placed."
          },
          "classifier": {
            "type": "object",
            "additionalProperties": {},
            "description": "Classifier identifying the database within the namespace."
          },
          "type": {
            "type": "string",
            "description": "Type of database (e.g. postgresql, mongodb)."
          },
          "lastRotatedAt": {
            "$ref": "#/components/schemas/OffsetDateTime",
            "type": "string",
            "description": "Timestamp of the credential change; also serves as the poll cursor."
          }
        }
      },
      "ChangedDatabasesCursor": {
        "type": "object",
        "description": "Keyset cursor (lastRotatedAt, id) for the changed-databases feed. Seed the poll cursor from the high-water mark on the first (since-less) call; thereafter advance the cursor from the returned items.",
        "properties": {
          "lastRotatedAt": {
            "$ref": "#/components/schemas/OffsetDateTime",
            "type": "string",
            "description": "lastRotatedAt component of the cursor."
          },
          "id": {
            "type": "string",
            "description": "Registry id component of the cursor (tie-breaker for equal timestamps)."
          }
        }
      },
      "ChangedDatabasesResponse": {
        "type": "object",
        "description": "Page of databases whose credentials changed since the requested keyset cursor, plus the current high-water mark used to seed the cursor.",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChangedDatabaseResponse"
            },
            "description": "Databases changed after the requested cursor, ordered by (lastRotatedAt, id) ascending. Advance the cursor from the last item."
          },
          "highWaterMark": {
            "$ref": "#/components/schemas/ChangedDatabasesCursor",
            "type": "object",
            "description": "Latest (lastRotatedAt, id) currently known across all databases. Use it only to SEED the cursor on the first (since-less) call; null when nothing has rotated yet."
          }
        }
      },
      "ClassifierDetailsResponse": {
        "type": "object",
        "required": [
          "type",
          "classifier"
        ],
        "description": "Classifier details used during restore operation",
        "properties": {
          "type": {
            "type": [
              "string",
              "object"
            ],
            "enum": [
              "NEW",
              "REPLACED",
              "TRANSIENT_REPLACED"
            ],
            "description": "Type of classifier in restore context"
          },
          "previousDatabase": {
            "type": [
              "string",
              "null"
            ],
            "examples": [
              "dbaas_12345"
            ],
            "description": "Name of the existing database previously associated with this classifier, used when the classifier replaces or transiently replaces another database during restore"
          },
          "classifier": {
            "type": "object",
            "examples": [
              {
                "namespace": "namespace",
                "microserviceName": "microserviceName",
                "scope": "service"
              }
            ],
            "additionalProperties": {},
            "description": "Final classifier used to create a database in the target environment."
          },
          "classifierBeforeMapper": {
            "type": [
              "object",
              "null"
            ],
            "examples": [
              {
                "namespace": "namespace",
                "microserviceName": "microserviceName",
                "scope": "service"
              }
            ],
            "additionalProperties": {},
            "description": "Original (pre-mapping) classifier from backup database preserved to track how mapping changed the classifier during restore"
          }
        }
      },
      "ClassifierWithRolesRequest": {
        "type": "object",
        "required": [
          "classifier"
        ],
        "properties": {
          "classifier": {
            "type": "object",
            "additionalProperties": {},
            "description": "Database composite identify key. See details in https://perch.qubership.org/display/CLOUDCORE/DbaaS+Database+Classifier"
          },
          "originService": {
            "type": "string",
            "description": "Origin service which send request"
          },
          "userRole": {
            "type": "string",
            "description": "Indicates connection properties with which user role should be returned to a client"
          }
        }
      },
      "CleanupMarkedForDropRequest": {
        "type": "object",
        "required": [
          "namespaces"
        ],
        "properties": {
          "namespaces": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of namespaces where the marked for drop databases should be cleaned"
          },
          "delete": {
            "type": "boolean",
            "description": "Confirmation parameter. If this is not passed or \u0027false\u0027 then marked for drop databases will not be deleted and response will contain marked for drop databases that are registered in DBaaS for the specified namespaces"
          },
          "force": {
            "type": "boolean",
            "description": "If this parameter is \u0027true\u0027, then deletion errors from physical adapters will be ignored"
          }
        }
      },
      "CompositeStructureDto": {
        "type": "object",
        "required": [
          "id",
          "namespaces"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Composite identifier. Usually it\u0027s baseline or origin baseline in blue-green scheme"
          },
          "namespaces": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            },
            "description": "Namespaces that are included in composite structure (baseline and satellites)"
          }
        }
      },
      "Condition": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ConnectionDescription": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/FieldDescription"
            }
          }
        }
      },
      "Database": {
        "type": "object",
        "required": [
          "oldClassifier",
          "classifier",
          "connectionProperties",
          "namespace",
          "type",
          "adapterId",
          "name",
          "resources"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/UUID",
            "type": "string",
            "description": "A unique identifier of the document in the database. This field may not be used when searching by classifier for security purpose. In appears in response when Create database API is executed."
          },
          "oldClassifier": {
            "type": "object",
            "additionalProperties": {},
            "description": "Old classifier describes the purpose of the database and distinguishes this database from other database in the same namespase. It contains such keys as dbClassifier, isService, microserviceName, namespace. Setting keys depends on the database type."
          },
          "classifier": {
            "type": "object",
            "deprecated": true,
            "additionalProperties": {},
            "description": "Classifier describes the purpose of the database and distinguishes this database from other database in the same namespase. It contains such keys as dbClassifier, scope, microserviceName, namespace. Setting keys depends on the database type."
          },
          "connectionProperties": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "description": "The information about connection to database. It contains such keys as url, authDbName, username, password, port, host.Setting keys depends on the database type."
          },
          "namespace": {
            "type": "string",
            "deprecated": true,
            "description": "Namespace where database is placed"
          },
          "type": {
            "type": "string",
            "deprecated": true,
            "description": "Type of database, for example postgresql or mongodb"
          },
          "adapterId": {
            "type": "string",
            "description": "This field indicates for which adapter the database was created."
          },
          "name": {
            "type": "string",
            "description": "Name of database. It may be generated or, if name was specified in a request then it will be specified."
          },
          "markedForDrop": {
            "type": "boolean",
            "description": "A marker indicating that the database will be deleted."
          },
          "timeDbCreation": {
            "$ref": "#/components/schemas/Date",
            "type": "string",
            "description": "Time to create a database"
          },
          "backupDisabled": {
            "type": "boolean",
            "description": "This field indicates if backup is disabled or not. If true, database would not be backed up. Example: false"
          },
          "dbOwnerRoles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of roles which are related to this logical database. The external security service (e.g. DBaaS Agent) can perform a verification process on this field."
          },
          "settings": {
            "type": "object",
            "additionalProperties": {},
            "description": "Additional settings for creating a database"
          },
          "connectionDescription": {
            "$ref": "#/components/schemas/ConnectionDescription",
            "type": "object",
            "description": "This parameter describes connection properties."
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Lists warning messages"
          },
          "externallyManageable": {
            "type": "boolean",
            "description": "This parameter specifies if a control over the database is not carried out by the DBaaS adapter."
          },
          "bgVersion": {
            "type": "string",
            "description": "Database version. It uses for blue-green"
          },
          "physicalDatabaseId": {
            "type": "string"
          },
          "databaseRegistry": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DatabaseRegistry"
            }
          },
          "resources": {
            "$ref": "#/components/schemas/DbResource",
            "description": "It lists resource which will be deleted when sending the request for delete a database"
          },
          "dbState": {
            "$ref": "#/components/schemas/DbState"
          }
        }
      },
      "DatabaseCreateRequest": {
        "type": "object",
        "required": [
          "classifier",
          "type",
          "dbOwner"
        ],
        "description": "Request model for adding database to DBaaS",
        "properties": {
          "classifier": {
            "type": "object",
            "additionalProperties": {},
            "description": "Classifier describes the purpose of database and distinguishes this database from other databases in the same namespace. It contains such keys as dbClassifier, isServiceDb, microserviceName, namespace. Setting keys depends on the database type. If database with such classifier exists, then this database will be given away. The backupDisabled parameter can not be modified; it is installed only once during creating database request."
          },
          "type": {
            "type": "string",
            "description": "Describes the type of database in which you want to create a database. For example mongodb or postgresql"
          },
          "backupDisabled": {
            "type": "boolean",
            "description": "This field indicates if backup is disabled or not. If true - database would not be backed up."
          },
          "settings": {
            "type": "object",
            "additionalProperties": {},
            "description": "Additional settings for creating database. There is a possibility to update settings after database creation."
          },
          "physicalDatabaseId": {
            "type": "string",
            "description": "Specifies the identificator of physical database where a logical database will be created. If it is not specified then logical database will be created in default physical database. You can get the list of all physical databases by \"List registered physical databases\" API."
          },
          "namePrefix": {
            "type": "string",
            "description": "This is a prefix of the database name. Prefix depends on the type of the database and it should be less than 27 characters if dbName is not specified."
          },
          "dbName": {
            "type": "string",
            "description": "This is the name of the database. Name should be unique. If a database having this name exists there will be a conflict. If dbName is absent it will be generated"
          },
          "username": {
            "type": "string",
            "description": "It is a username for a user which will be created together with the database. If the username is absent it will be generated."
          },
          "password": {
            "type": "string",
            "description": "This is password for 

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