Arbitrary non-public static domain files (files)

Overview

Provides access to files in the domain’s shared non-public file directory.

The files contained in the directory are uploaded by the domain administrator, and can be assigned for use by some domain entities. For example, when configuring certificates in domain.settings.sber_salute, the path to the certificate is specified as the certificate to the endpoint. Thus, the URL `/rest/v1/fs/targets/files/certificates/x.local.pem` corresponds to the macro path ':SYNC_DOMAIN/data/files/certificates/x.local.pem`.

Work with nested structure of arbitrary depth is supported. When a file is placed, the path is automatically created, when a file is deleted, empty directories are automatically deleted.

The directory is located in the category of automatically synchronized directories :SYNC.

Requests

HTTP verb Endpoint Description

POST

/rest/v1/fs/targets/files

Pouring a group of files

GET

/rest/v1/fs/targets/files

Getting a list of files

GET

/rest/v1/fs/targets/files/<filename>

File download

PUT

/rest/v1/fs/targets/files/<filename>

Reloading an existing file

DELETE

/rest/v1/fs/targets/files/<filename>

Deleting a file

HEAD

/rest/v1/fs/targets/files/<filename>

Getting meta-information about a file


Pouring a group of files

Uploading to the collection is done by Content-Type: multipart/formdata.

There can be one or more files in the request. The files are placed under the names specified in the Content-Disposition headers of each part.

If a file with the specified name already exists, it is not saved and returns an error. Depending on the Content-Type and the presence of successfully placed files, the request may return a failed HTTP response, or failure information in the body of the HTTP response 200 OK.

Request

Request example
POST /rest/v1/fs/targets/files HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e

-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="filename"; filename="test.local.pem"
Content-Transfer-Encoding: binary

BINARY BODY OF 'test.local.pem'
-----------boundary_69df8120352a996e--

Response

Response example
[
  {
    "name": "test.local.pem",
    "size": 19542,
    "status": "ok"
  }
]

Getting a list of files

Request

Table 1. Request parameters
Name Type Description

filter

object

Filter by field values.

mask

str

List of fields to output. Available fields for output: name, size, last_modified.

offset

int

Offset in the list of files to be issued.

limit

int

Maximum number of files in the list.

order

array<object|str>

The sort order of the files in the list.

Request example
GET /rest/v1/fs/targets/files HTTP/1.1

Response

Response example
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

[
  {
    "last_modified": "2023-07-30 20:03:59",
    "name": "certificates",
    "type": "directory"
  },
  {
    "last_modified": "2023-07-31 13:12:32",
    "name": "test.local.pem",
    "size": 19542
  }
]

File download

Request

Table 2. Request parameters
Name Type Description

attachment

bool

Issuance Type. Default false.

true – is output with the header Content-Disposition: attachment; filename=filename.ext or Content-Disposition: attachment; filename*=UTF-8''%d1%84%d0%b0%d0%b9%d0%bb.ext, where file.ext is the file name in UTF-8 encoding and URLencoded.

false – untitled Content-Disposition.

Request example
GET /rest/v1/fs/targets/files/test.local.pem?attachment=true HTTP/1.1

Response

Response example
HTTP/1.1 200 OK
Content-Type: application/octet-stream; charset=utf-8
Content-Disposition: attachment; filename*=UTF-8''doc%20123.html

BINARY BODY OF 'doc 123.html'

Reloading an existing file

Performs a file replacement.

A single file is uploaded either with Content-Type: multipart/formdata, or with an arbitrary Content-Type that is not multipart.

If the download is done with Content-Type: multipart/formdata, then only the first file will be saved (the first part with the filename field in the header) Content-Disposition), and the file name itself will be ignored.

Request

Request example (octet-stream)
PUT /rest/v1/fs/targets/files/test.local.pem HTTP/1.1
Content-Type: application/octet-stream

BINARY BODY OF 'test.local.pem'
Request example (multipart)
PUT /rest/v1/fs/targets/files/test.local.pem HTTP/1.1
Content-Type: multipart/form-data; boundary=-----------boundary_69df8120352a996e

-----------boundary_69df8120352a996e
Content-Type: application/octet-stream
Content-Disposition: form-data; name="test.local.pem"; filename="test.local.pem"
Content-Transfer-Encoding: binary

BINARY BODY OF 'test.local.pem'
-----------boundary_69df8120352a996e--

Response

Response example
HTTP/1.1 204 No Content

Deleting a file

Request

Request example
DELETE /rest/v1/fs/targets/files/test.local.pem HTTP/1.1

Response

Response example
HTTP/1.1 204 No Content

Getting meta-information about a file

Returns meta-information about the file, including the size in the header Content-Length.

Features

  • HTTP-the response does not contain a body, despite the presence of a header Content-Length.

Request

Table 3. Request parameters
Name Type Description

attachment

bool

Issuance Type. Default false.

true – is output with the header Content-Disposition: attachment; filename=filename.ext or Content-Disposition: attachment; filename*=UTF-8''%d1%84%d0%b0%d0%b9%d0%bb.ext, where file.ext is the file name in UTF-8 encoding and URLencoded.

false – untitled Content-Disposition.

Request example
HEAD /rest/v1/fs/targets/files/test.local.pem?attachment=true HTTP/1.1

Response

Example of a successful response
HTTP/1.1 200 OK
content-length: 19542
content-type: application/octet-streaqm
date: Fri, 14 Jan 2022 06:29:04 GMT
server: Cowboy
Example of an unsuccessful response
HTTP/1.1 404 Not Found