4 Proxmox Backup Server uses a REST based API. While the management
5 interface use normal HTTP, the actual backup and restore interface use
6 HTTP/2 for improved performance. Both HTTP and HTTP/2 are well known
7 standards, so the following section assumes that you are familiar on
14 To start a new backup, the API call ``GET /api2/json/backup`` needs to
15 be upgraded to a HTTP/2 connection using
16 ``proxmox-backup-protocol-v1`` as protocol name::
18 GET /api2/json/backup HTTP/1.1
19 UPGRADE: proxmox-backup-protocol-v1
21 The server replies with HTTP 101 Switching Protocol status code,
22 and you can then issue REST commands on that updated HTTP/2 connection.
24 The backup protocol allows you to upload three different kind of files:
26 - Chunks and blobs (binary data)
28 - Fixed Indexes (List of chunks with fixed size)
30 - Dynamic Indexes (List of chunk with variable size)
32 The following section gives a short introduction how to upload such
33 files. Please use the `API Viewer <api-viewer/index.html>`_ for
34 details about available REST commands.
40 Uploading blobs is done using ``POST /blob``. The HTTP body contains the
41 data encoded as :ref:`Data Blob <data-blob-format>`).
43 The file name needs to end with ``.blob``, and is automatically added
44 to the backup manifest.
50 Chunks belong to an index, so you first need to open an index (see
51 below). After that, you can upload chunks using ``POST /fixed_chunk``
52 and ``POST /dynamic_chunk``. The HTTP body contains the chunk data
53 encoded as :ref:`Data Blob <data-blob-format>`).
59 Fixed indexes are use to store VM image data. The VM image is split
60 into equally sized chunks, which are uploaded individually. The index
61 file simply contains a list to chunk digests.
63 You create a fixed index with ``POST /fixed_index``. Then upload
64 chunks with ``POST /fixed_chunk``, and append them to the index with
65 ``PUT /fixed_index``. When finished, you need to close the index using
66 ``POST /fixed_close``.
68 The file name needs to end with ``.fidx``, and is automatically added
69 to the backup manifest.
72 Upload Dynamic Indexes
73 ~~~~~~~~~~~~~~~~~~~~~~
75 Dynamic indexes are use to store file archive data. The archive data
76 is split into dynamically sized chunks, which are uploaded
77 individually. The index file simply contains a list to chunk digests
80 You create a dynamic sized index with ``POST /dynamic_index``. Then
81 upload chunks with ``POST /dynamic_chunk``, and append them to the index with
82 ``PUT /dynamic_index``. When finished, you need to close the index using
83 ``POST /dynamic_close``.
85 The file name needs to end with ``.didx``, and is automatically added
86 to the backup manifest.
91 Once you have uploaded all data, you need to call ``POST
92 /finish``. This commits all data and ends the backup protocol.
95 Restore/Reader Protocol API
96 ---------------------------
98 To start a new reader, the API call ``GET /api2/json/reader`` needs to
99 be upgraded to a HTTP/2 connection using
100 ``proxmox-backup-reader-protocol-v1`` as protocol name::
102 GET /api2/json/reader HTTP/1.1
103 UPGRADE: proxmox-backup-reader-protocol-v1
105 The server replies with HTTP 101 Switching Protocol status code,
106 and you can then issue REST commands on that updated HTTP/2 connection.
108 The reader protocol allows you to download three different kind of files:
110 - Chunks and blobs (binary data)
112 - Fixed Indexes (List of chunks with fixed size)
114 - Dynamic Indexes (List of chunk with variable size)
116 The following section gives a short introduction how to download such
117 files. Please use the `API Viewer <api-viewer/index.html>`_ for details about
118 available REST commands.
124 Downloading blobs is done using ``GET /download``. The HTTP body contains the
125 data encoded as :ref:`Data Blob <data-blob-format>`.
131 Downloading chunks is done using ``GET /chunk``. The HTTP body contains the
132 data encoded as :ref:`Data Blob <data-blob-format>`).
138 Downloading index files is done using ``GET /download``. The HTTP body
139 contains the data encoded as :ref:`Fixed Index <fixed-index-format>`
140 or :ref:`Dynamic Index <dynamic-index-format>`.