ArangoDB Hot Backups API

Manage incremental data backups

OpenAPI Specification

arangodb-hot-backups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: ArangoDB Inc.
    url: https://arango.ai
  license:
    name: Business Source License 1.1
    url: https://github.com/arangodb/arangodb/blob/devel/LICENSE
  summary: The HTTP API of the ArangoDB graph database system
  title: ArangoDB Core Hot Backups API
  version: 3.12.10 (API v0)
  description: Manage incremental data backups
tags:
- description: Manage incremental data backups
  name: Hot Backups
paths:
  /_admin/backup/create:
    post:
      description: 'Creates a consistent local backup "as soon as possible", very much

        like a snapshot in time, with a given label. The ambiguity in the

        phrase "as soon as possible" refers to the next window during which a

        global write lock across all databases can be obtained in order to

        guarantee consistency. Note that the backup at first resides on the

        same machine and hard drive as the original data. Make sure to upload

        it to a remote site for an actual backup.

        '
      operationId: createBackup
      requestBody:
        content:
          application/json:
            schema:
              properties:
                allowInconsistent:
                  default: false
                  description: 'If this flag is set to `true` and no global transaction lock can be

                    acquired within the given timeout, a possibly inconsistent backup

                    is taken. The default for this flag is `false` and in this case

                    a timeout results in an HTTP 408 error.

                    '
                  type: boolean
                force:
                  default: false
                  description: 'If this flag is set to `true` and no global transaction lock can be acquired

                    within the given timeout, all running transactions are forcefully aborted to

                    ensure that a consistent backup can be created. This does not include

                    JavaScript transactions. It waits for the transactions to be aborted at most

                    `timeout` seconds. Thus using `force` the request timeout is doubled.

                    To abort transactions is almost certainly not what you want for your application.

                    In the presence of intermediate commits it can even destroy the atomicity of your

                    transactions. Use at your own risk, and only if you need a consistent backup at

                    all costs. The default and recommended value is `false`. If both

                    `allowInconsistent` and `force` are set to `true`, then the latter takes

                    precedence and transactions are aborted. This is only available in the cluster.

                    '
                  type: boolean
                label:
                  description: 'The label for this backup. The label is used together with a

                    timestamp string create a unique backup identifier, `<timestamp>_<label>`.

                    If no label is specified, the empty string is assumed and a default

                    UUID is created for this part of the ID.

                    '
                  type: string
                timeout:
                  default: 120
                  description: 'The time in seconds that the operation tries to get a consistent

                    snapshot.

                    '
                  type: integer
              type: object
      responses:
        '201':
          description: 'If all is well, code 201 is returned.

            '
        '400':
          description: 'If the create command is invoked with bad parameters or any HTTP

            method other than `POST`, then an *HTTP 400* is returned. The specifics

            are detailed in the returned error document.

            '
        '408':
          description: 'If the operation cannot obtain a global transaction lock

            within the timeout, then an *HTTP 408* is returned.

            '
      summary: Create a backup
      tags:
      - Hot Backups
  /_admin/backup/delete:
    post:
      description: 'Delete a specific local backup identified by the given `id`.

        '
      operationId: deleteBackup
      requestBody:
        content:
          application/json:
            schema:
              properties:
                id:
                  description: 'The identifier for this backup.

                    '
                  type: string
              required:
              - id
              type: object
      responses:
        '200':
          description: 'If all is well, this code 200 is returned.

            '
        '400':
          description: 'If the delete command is invoked with bad parameters or any HTTP

            method other than `POST`, then an *HTTP 400* is returned.

            '
        '404':
          description: 'If a backup corresponding to the identifier `id` cannot be found.

            '
      summary: Delete a backup
      tags:
      - Hot Backups
  /_admin/backup/download:
    post:
      description: 'Download a specific local backup from a remote repository, or query

        progress on a previously scheduled download operation, or abort

        a running download operation.

        '
      operationId: downloadBackup
      requestBody:
        content:
          application/json:
            schema:
              properties:
                abort:
                  default: false
                  description: 'Set this to `true` if a running download operation should be aborted. In

                    this case, the only other body parameter which is needed is `downloadId`.

                    '
                  type: boolean
                config:
                  description: 'Configuration of remote repository. This is required when a download

                    operation is scheduled. In this case leave out the `downloadId`

                    attribute. See [Rclone Configuration](https://docs.arango.ai/arangodb/3.12/components/tools/arangobackup/examples/#rclone-configuration)

                    for a description of the `config` object.

                    '
                  type: object
                downloadId:
                  description: 'Download ID to specify for which download operation progress is queried, or

                    the download operation to abort.

                    If you specify this, leave out all the above body parameters.

                    '
                  type: string
                id:
                  description: 'The identifier for this backup. This is required when a download

                    operation is scheduled. In this case leave out the `downloadId`

                    attribute.

                    '
                  type: string
                remoteRepository:
                  description: 'URL of remote repository. This is required when a download operation is

                    scheduled. In this case leave out the `downloadId` attribute. Provided

                    repository URLs are normalized and validated as follows: One single colon must

                    appear separating the configuration section name and the path. The URL prefix

                    up to the colon must exist as a key in the config object below. No slashes must

                    appear before the colon. Multiple back to back slashes are collapsed to one, as

                    `..` and `.` are applied accordingly. Local repositories must be absolute paths

                    and must begin with a `/`. Trailing `/` are removed.

                    '
                  type: string
              required:
              - remoteRepository
              - config
              type: object
      responses:
        '200':
          description: 'If all is well, code 200 is returned if progress is inquired or the

            operation is aborted.

            '
        '202':
          description: 'If all is well, code 202 is returned if a new operation is scheduled.

            '
        '400':
          description: 'If the download command is invoked with bad parameters or any HTTP

            method other than `POST`, then an *HTTP 400* is returned.

            '
        '401':
          description: 'If the authentication to the remote repository fails, then an *HTTP

            401* is returned.

            '
        '404':
          description: 'If a backup corresponding to the identifier `id`  cannot be found, or if

            there is no known download operation with the given `downloadId`.

            '
      summary: Download a backup from a remote repository
      tags:
      - Hot Backups
  /_admin/backup/list:
    post:
      description: 'Lists all locally found backups.

        '
      operationId: listBackups
      requestBody:
        content:
          application/json:
            schema:
              properties:
                id:
                  description: 'The body can either be empty (in which case all available backups are

                    listed), or it can be an object with an attribute `id`, which

                    is a string. In the latter case the returned list

                    is restricted to the backup with the given id.

                    '
                  type: string
              type: object
      responses:
        '200':
          description: 'If all is well, code 200 is returned.

            '
        '400':
          description: 'If the list command is invoked with bad parameters, then an *HTTP 400*

            is returned.

            '
        '404':
          description: 'If an `id` or a list of ids was given and the given ids were not found

            as identifiers of a backup, an *HTTP 404 Not Found* is returned.

            '
        '405':
          description: 'If the list command is invoked with any HTTP

            method other than `POST`, then an *HTTP 405 Method Not Allowed* is returned.

            '
      summary: List all backups
      tags:
      - Hot Backups
  /_admin/backup/restore:
    post:
      description: 'Restores a consistent local backup from a

        snapshot in time, with a given id. The backup snapshot must reside on

        the ArangoDB service locally.

        '
      operationId: restoreBackup
      requestBody:
        content:
          application/json:
            schema:
              properties:
                id:
                  description: 'The id of the backup to restore from.

                    '
                  type: string
              required:
              - id
              type: object
      responses:
        '200':
          description: 'Is returned if the backup could be restored. Note that there is an

            inevitable discrepancy between the single server and the cluster. In a

            single server, the request returns successfully, but the restore is

            only executed afterwards. In the cluster, the request only returns when

            the restore operation has been completed successfully. The cluster

            behavior is obviously the desired one, but in a single instance, one

            cannot keep a connection open across a restart.

            '
        '400':
          description: 'If the restore command is invoked with bad parameters or any HTTP

            method other than `POST`, then an *HTTP 400* is returned. The specifics

            are detailed in the returned error document.

            '
      summary: Restore a backup
      tags:
      - Hot Backups
  /_admin/backup/upload:
    post:
      description: 'Upload a specific local backup to a remote repository, or query

        progress on a previously scheduled upload operation, or abort

        a running upload operation.

        '
      operationId: uploadBackup
      requestBody:
        content:
          application/json:
            schema:
              properties:
                abort:
                  default: false
                  description: 'Set this to `true` if a running upload operation should be aborted. In

                    this case, the only other body parameter which is needed is `uploadId`.

                    '
                  type: boolean
                config:
                  description: 'Configuration of remote repository. This is required when an upload

                    operation is scheduled. In this case leave out the `uploadId`

                    attribute. See [Rclone Configuration](https://docs.arango.ai/arangodb/3.12/components/tools/arangobackup/examples/#rclone-configuration)

                    for a description of the `config` object.

                    '
                  type: object
                id:
                  description: 'The identifier for this backup. This is required when an upload

                    operation is scheduled. In this case leave out the `uploadId`

                    attribute.

                    '
                  type: string
                remoteRepository:
                  description: 'URL of remote repository. This is required when an upload operation is

                    scheduled. In this case leave out the `uploadId` attribute. Provided repository

                    URLs are normalized and validated as follows: One single colon must appear

                    separating the configuration section name and the path. The URL prefix up to

                    the colon must exist as a key in the config object below. No slashes must

                    appear before the colon. Multiple back to back slashes are collapsed to one, as

                    `..` and `.` are applied accordingly. Local repositories must be absolute

                    paths and must begin with a `/`. Trailing `/` are removed.

                    '
                  type: string
                uploadId:
                  description: 'Upload ID to specify for which upload operation progress is queried or

                    the upload operation to abort.

                    If you specify this, leave out all the above body parameters.

                    '
                  type: string
              type: object
      responses:
        '200':
          description: 'If all is well, code 200 is returned if progress is inquired or the

            operation is aborted.

            '
        '202':
          description: 'If all is well, code 202 is returned if a new operation is scheduled.

            '
        '400':
          description: 'If the upload command is invoked with bad parameters or any HTTP

            method other than `POST`, then an *HTTP 400* is returned.

            '
        '401':
          description: 'If the authentication to the remote repository fails, then an *HTTP

            400* is returned.

            '
        '404':
          description: 'If a backup corresponding to the identifier `id`  cannot be found, or if

            there is no known upload operation with the given `uploadId`.

            '
      summary: Upload a backup to a remote repository
      tags:
      - Hot Backups
externalDocs:
  description: ArangoDB Documentation
  url: https://docs.arango.ai/arangodb/