Files
qdrant/openapi/openapi-snapshots.ytt.yaml
Andrey Vasnetsov 345621f447 Expose shard snapshot API (#8132)
* [AI] generate openapi schema for stream download of shard snapshot

* bump number of APIs

* cover API with access test

* fix test

* fix test
2026-02-16 13:34:44 +01:00

299 lines
9.3 KiB
YAML

#@ load("openapi.lib.yml", "response", "response_with_accepted", "reference", "type", "array")
paths:
/collections/{collection_name}/snapshots/upload:
post:
tags:
- Snapshots
summary: Recover from an uploaded snapshot
description: Recover local collection data from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created.
operationId: recover_from_uploaded_snapshot
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
- name: wait
in: query
description: "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true."
required: false
schema:
type: boolean
- name: priority
in: query
description: "Defines source of truth for snapshot recovery"
required: false
schema:
$ref: "#/components/schemas/SnapshotPriority"
- name: checksum
in: query
description: "Optional SHA256 checksum to verify snapshot integrity before recovery."
required: false
schema:
type: string
requestBody:
description: Snapshot to recover from
content:
multipart/form-data:
schema:
type: object
properties:
snapshot:
type: string
format: binary
responses: #@ response_with_accepted(type("boolean"))
/collections/{collection_name}/snapshots/recover:
put:
tags:
- Snapshots
summary: Recover from a snapshot
description: Recover local collection data from a snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created.
operationId: recover_from_snapshot
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
- name: wait
in: query
description: "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true."
required: false
schema:
type: boolean
requestBody:
description: Snapshot to recover from
content:
application/json:
schema:
$ref: "#/components/schemas/SnapshotRecover"
responses: #@ response_with_accepted(type("boolean"))
/collections/{collection_name}/snapshots:
get:
tags:
- Snapshots
summary: List collection snapshots
description: Get list of snapshots for a collection
operationId: list_snapshots
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
responses: #@ response(array(reference("SnapshotDescription")))
post:
tags:
- Snapshots
summary: Create collection snapshot
description: Create new snapshot for a collection
operationId: create_snapshot
parameters:
- name: collection_name
in: path
description: Name of the collection for which to create a snapshot
required: true
schema:
type: string
- name: wait
in: query
description: "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true."
required: false
schema:
type: boolean
responses: #@ response_with_accepted(reference("SnapshotDescription"))
/collections/{collection_name}/snapshots/{snapshot_name}:
delete:
tags:
- Snapshots
summary: Delete collection snapshot
description: Delete snapshot for a collection
operationId: delete_snapshot
parameters:
- name: collection_name
in: path
description: Name of the collection for which to delete a snapshot
required: true
schema:
type: string
- name: snapshot_name
in: path
description: Name of the snapshot to delete
required: true
schema:
type: string
- name: wait
in: query
description: "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true."
required: false
schema:
type: boolean
responses: #@ response_with_accepted(type("boolean"))
get:
tags:
- Snapshots
summary: Download collection snapshot
description: Download specified snapshot from a collection as a file
operationId: get_snapshot
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
- name: snapshot_name
in: path
description: Name of the snapshot to download
required: true
schema:
type: string
responses:
default:
description: error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
4XX:
description: error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
'200':
description: Snapshot file
content:
application/octet-stream:
schema:
type: string
format: binary
/snapshots:
get:
tags:
- Snapshots
summary: List of storage snapshots
description: Get list of snapshots of the whole storage
operationId: list_full_snapshots
responses: #@ response(array(reference("SnapshotDescription")))
post:
tags:
- Snapshots
summary: Create storage snapshot
description: Create new snapshot of the whole storage
operationId: create_full_snapshot
parameters:
- name: wait
in: query
description: "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true."
required: false
schema:
type: boolean
responses: #@ response_with_accepted(reference("SnapshotDescription"))
/snapshots/{snapshot_name}:
delete:
tags:
- Snapshots
summary: Delete storage snapshot
description: Delete snapshot of the whole storage
operationId: delete_full_snapshot
parameters:
- name: snapshot_name
in: path
description: Name of the full snapshot to delete
required: true
schema:
type: string
- name: wait
in: query
description: "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true."
required: false
schema:
type: boolean
responses: #@ response_with_accepted(type("boolean"))
get:
tags:
- Snapshots
summary: Download storage snapshot
description: Download specified snapshot of the whole storage as a file
operationId: get_full_snapshot
parameters:
- name: snapshot_name
in: path
description: Name of the snapshot to download
required: true
schema:
type: string
responses:
default:
description: error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
4XX:
description: error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
'200':
description: Snapshot file
content:
application/octet-stream:
schema:
type: string
format: binary
/collections/{collection_name}/shards/{shard_id}/snapshot:
get:
tags:
- Snapshots
summary: Download shard snapshot
description: Stream the current state of a shard as a snapshot file
operationId: stream_shard_snapshot
parameters:
- name: collection_name
in: path
description: Name of the collection
required: true
schema:
type: string
- name: shard_id
in: path
description: Id of the shard
required: true
schema:
type: integer
responses:
default:
description: error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
4XX:
description: error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
'200':
description: Snapshot file
content:
application/octet-stream:
schema:
type: string
format: binary