e604222f60
Signed-off-by: Denis Kirillov <denis@nspcc.ru>
2276 lines
53 KiB
Go
2276 lines
53 KiB
Go
// Code generated by go-swagger; DO NOT EDIT.
|
|
|
|
package restapi
|
|
|
|
// This file was generated by the swagger tool.
|
|
// Editing this file might prove futile when you re-run the swagger generate command
|
|
|
|
import (
|
|
"encoding/json"
|
|
)
|
|
|
|
var (
|
|
// SwaggerJSON embedded version of the swagger document used at generation time
|
|
SwaggerJSON json.RawMessage
|
|
// FlatSwaggerJSON embedded flattened version of the swagger document used at generation time
|
|
FlatSwaggerJSON json.RawMessage
|
|
)
|
|
|
|
func init() {
|
|
SwaggerJSON = json.RawMessage([]byte(`{
|
|
"schemes": [
|
|
"http"
|
|
],
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "REST API NeoFS",
|
|
"title": "REST API NeoFS",
|
|
"version": "v1"
|
|
},
|
|
"host": "localhost:8090",
|
|
"basePath": "/v1",
|
|
"paths": {
|
|
"/auth": {
|
|
"post": {
|
|
"security": [],
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"summary": "Form bearer token to futher requests",
|
|
"operationId": "auth",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Owner Id (wallet address) that will sign the token",
|
|
"name": "X-Bearer-Owner-Id",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 100,
|
|
"description": "Token lifetime in epoch",
|
|
"name": "X-Bearer-Lifetime",
|
|
"in": "header"
|
|
},
|
|
{
|
|
"description": "Bearer token",
|
|
"name": "tokens",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Bearer"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Base64 encoded stable binary marshaled bearer token",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/TokenResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/containers": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "Get list of containers",
|
|
"operationId": "listContainers",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded owner id",
|
|
"name": "ownerId",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "The number of containers to skip before starting to collect the result set.",
|
|
"name": "offset",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"type": "integer",
|
|
"default": 100,
|
|
"description": "The numbers of containers to return.",
|
|
"name": "limit",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Containers info",
|
|
"schema": {
|
|
"$ref": "#/definitions/ContainerList"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"summary": "Create new container in NeoFS",
|
|
"operationId": "putContainer",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/signatureParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureKeyParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureScheme"
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Provide this parameter to register container name in NNS service",
|
|
"name": "name-scope-global",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"description": "Container info",
|
|
"name": "container",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"basicAcl": {
|
|
"type": "string"
|
|
},
|
|
"containerName": {
|
|
"type": "string"
|
|
},
|
|
"placementPolicy": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"basicAcl": "public-read-write",
|
|
"containerName": "container",
|
|
"placementPolicy": "REP 3"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Address of uploaded objects",
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/containers/{containerId}": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "Get container by id",
|
|
"operationId": "getContainer",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Container info",
|
|
"schema": {
|
|
"$ref": "#/definitions/ContainerInfo"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Delete container by id",
|
|
"operationId": "deleteContainer",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/signatureParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureKeyParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureScheme"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful deletion",
|
|
"schema": {
|
|
"$ref": "#/definitions/SuccessResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/containerId"
|
|
}
|
|
]
|
|
},
|
|
"/containers/{containerId}/eacl": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "Get container EACL by id",
|
|
"operationId": "getContainerEACL",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Container EACL information",
|
|
"schema": {
|
|
"$ref": "#/definitions/Eacl"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"summary": "Set container EACL by id",
|
|
"operationId": "putContainerEACL",
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/signatureParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureKeyParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureScheme"
|
|
},
|
|
{
|
|
"description": "EACL for container",
|
|
"name": "eacl",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/Eacl"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful EACL updating",
|
|
"schema": {
|
|
"$ref": "#/definitions/SuccessResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/containerId"
|
|
}
|
|
]
|
|
},
|
|
"/objects": {
|
|
"put": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"summary": "Upload object to NeoFS",
|
|
"operationId": "putObject",
|
|
"parameters": [
|
|
{
|
|
"description": "Object info to upload",
|
|
"name": "object",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/ObjectUpload"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Address of uploaded objects",
|
|
"schema": {
|
|
"$ref": "#/definitions/Address"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/signatureParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureKeyParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureScheme"
|
|
}
|
|
]
|
|
},
|
|
"/objects/{containerId}/search": {
|
|
"post": {
|
|
"summary": "Search objects by filters",
|
|
"operationId": "searchObjects",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "The number of containers to skip before starting to collect the result set.",
|
|
"name": "offset",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"type": "integer",
|
|
"default": 100,
|
|
"description": "The numbers of containers to return.",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"description": "Filters to search objects",
|
|
"name": "searchFilters",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/SearchFilters"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of objects",
|
|
"schema": {
|
|
"$ref": "#/definitions/ObjectList"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/signatureParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureKeyParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureScheme"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/containerId"
|
|
}
|
|
]
|
|
},
|
|
"/objects/{containerId}/{objectId}": {
|
|
"get": {
|
|
"summary": "Get object info by address",
|
|
"operationId": "getObjectInfo",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"name": "range-offset",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"minimum": 1,
|
|
"type": "integer",
|
|
"name": "range-length",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"maximum": 524288000,
|
|
"type": "integer",
|
|
"default": 4194304,
|
|
"description": "Max payload size (in bytes) that can be included in the response.\nIf the actual size is greater than this params the payload won't be included in the response.\n",
|
|
"name": "max-payload-size",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Object info",
|
|
"schema": {
|
|
"$ref": "#/definitions/ObjectInfo"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Remove object from NeoFS",
|
|
"operationId": "deleteObject",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful deletion",
|
|
"schema": {
|
|
"$ref": "#/definitions/SuccessResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"$ref": "#/parameters/signatureParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureKeyParam"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/signatureScheme"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/containerId"
|
|
},
|
|
{
|
|
"$ref": "#/parameters/objectId"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"definitions": {
|
|
"Action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ALLOW",
|
|
"DENY"
|
|
]
|
|
},
|
|
"Address": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"objectId"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"objectId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"objectId": "8N3o7Dtr6T1xteCt6eRwhpmJ7JhME58Hyu1dvaswuTDd"
|
|
}
|
|
},
|
|
"Attribute": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Bearer": {
|
|
"type": "object",
|
|
"properties": {
|
|
"container": {
|
|
"$ref": "#/definitions/Rule"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"object": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Record"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ContainerInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"version",
|
|
"ownerId",
|
|
"basicAcl",
|
|
"placementPolicy",
|
|
"attributes"
|
|
],
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Attribute"
|
|
}
|
|
},
|
|
"basicAcl": {
|
|
"type": "string"
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"ownerId": {
|
|
"type": "string"
|
|
},
|
|
"placementPolicy": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"attribute": [
|
|
{
|
|
"key": "Timestamp",
|
|
"value": "1648810072"
|
|
},
|
|
{
|
|
"key": "Name",
|
|
"value": "container"
|
|
}
|
|
],
|
|
"basicAcl": "0x1fbf9fff",
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"ownerId": "NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM",
|
|
"placementPolicy": "REP 2",
|
|
"version": "2.11"
|
|
}
|
|
},
|
|
"ContainerList": {
|
|
"type": "object",
|
|
"required": [
|
|
"size",
|
|
"containers"
|
|
],
|
|
"properties": {
|
|
"containers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ContainerInfo"
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"Eacl": {
|
|
"type": "object",
|
|
"required": [
|
|
"records"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string",
|
|
"readOnly": true
|
|
},
|
|
"records": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Record"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ErrorResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/ErrorType"
|
|
}
|
|
}
|
|
},
|
|
"ErrorType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"GW",
|
|
"API"
|
|
]
|
|
},
|
|
"Filter": {
|
|
"type": "object",
|
|
"required": [
|
|
"headerType",
|
|
"matchType",
|
|
"key",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"headerType": {
|
|
"$ref": "#/definitions/HeaderType"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"matchType": {
|
|
"$ref": "#/definitions/MatchType"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"headerType": "OBJECT",
|
|
"key": "FileName",
|
|
"matchType": "STRING_NOT_EQUAL",
|
|
"value": "myfile"
|
|
}
|
|
},
|
|
"HeaderType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"REQUEST",
|
|
"OBJECT",
|
|
"SERVICE"
|
|
]
|
|
},
|
|
"MatchType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"STRING_EQUAL",
|
|
"STRING_NOT_EQUAL"
|
|
]
|
|
},
|
|
"ObjectBaseInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"address"
|
|
],
|
|
"properties": {
|
|
"address": {
|
|
"$ref": "#/definitions/Address"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ObjectInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"objectId",
|
|
"ownerId",
|
|
"attributes",
|
|
"objectSize",
|
|
"payloadSize"
|
|
],
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Attribute"
|
|
}
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"objectId": {
|
|
"type": "string"
|
|
},
|
|
"objectSize": {
|
|
"description": "Object full payload size",
|
|
"type": "integer"
|
|
},
|
|
"ownerId": {
|
|
"type": "string"
|
|
},
|
|
"payload": {
|
|
"description": "Base64 encoded object payload",
|
|
"type": "string"
|
|
},
|
|
"payloadSize": {
|
|
"description": "Payload size in response",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"example": {
|
|
"attribute": [
|
|
{
|
|
"key": "Timestamp",
|
|
"value": "1648810072"
|
|
},
|
|
{
|
|
"key": "Name",
|
|
"value": "object"
|
|
}
|
|
],
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"objectId": "8N3o7Dtr6T1xteCt6eRwhpmJ7JhME58Hyu1dvaswuTDd",
|
|
"ownerId": "NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM"
|
|
}
|
|
},
|
|
"ObjectList": {
|
|
"type": "object",
|
|
"required": [
|
|
"size",
|
|
"objects"
|
|
],
|
|
"properties": {
|
|
"objects": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ObjectBaseInfo"
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"ObjectUpload": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"fileName"
|
|
],
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Attribute"
|
|
}
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"fileName": {
|
|
"type": "string"
|
|
},
|
|
"payload": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"attributes": [
|
|
{
|
|
"key": "User-Attribute",
|
|
"value": "some-value"
|
|
}
|
|
],
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"fileName": "myFile.txt",
|
|
"payload": "Y29udGVudCBvZiBmaWxl"
|
|
}
|
|
},
|
|
"Operation": {
|
|
"type": "string",
|
|
"enum": [
|
|
"GET",
|
|
"HEAD",
|
|
"PUT",
|
|
"DELETE",
|
|
"SEARCH",
|
|
"RANGE",
|
|
"RANGEHASH"
|
|
]
|
|
},
|
|
"Principal": {
|
|
"type": "string"
|
|
},
|
|
"Record": {
|
|
"type": "object",
|
|
"required": [
|
|
"action",
|
|
"operation",
|
|
"filters",
|
|
"targets"
|
|
],
|
|
"properties": {
|
|
"action": {
|
|
"$ref": "#/definitions/Action"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Filter"
|
|
}
|
|
},
|
|
"operation": {
|
|
"$ref": "#/definitions/Operation"
|
|
},
|
|
"targets": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Target"
|
|
}
|
|
}
|
|
},
|
|
"example": {
|
|
"action": "ALLOW",
|
|
"filters": null,
|
|
"operation": "GET",
|
|
"targets": [
|
|
{
|
|
"keys": null,
|
|
"role": "OTHERS"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"Role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"USER",
|
|
"SYSTEM",
|
|
"OTHERS"
|
|
]
|
|
},
|
|
"Rule": {
|
|
"type": "object",
|
|
"required": [
|
|
"verb"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"verb": {
|
|
"$ref": "#/definitions/Verb"
|
|
}
|
|
}
|
|
},
|
|
"SearchFilter": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"value",
|
|
"match"
|
|
],
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"match": {
|
|
"$ref": "#/definitions/SearchMatch"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SearchFilters": {
|
|
"type": "object",
|
|
"required": [
|
|
"filters"
|
|
],
|
|
"properties": {
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/SearchFilter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"SearchMatch": {
|
|
"type": "string",
|
|
"enum": [
|
|
"MatchStringEqual",
|
|
"MatchStringNotEqual",
|
|
"MatchNotPresent",
|
|
"MatchCommonPrefix"
|
|
]
|
|
},
|
|
"SuccessResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"success"
|
|
],
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"Target": {
|
|
"type": "object",
|
|
"required": [
|
|
"role",
|
|
"keys"
|
|
],
|
|
"properties": {
|
|
"keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"role": {
|
|
"$ref": "#/definitions/Role"
|
|
}
|
|
},
|
|
"example": {
|
|
"keys": [
|
|
"021dc56fc6d81d581ae7605a8e00e0e0bab6cbad566a924a527339475a97a8e38e"
|
|
],
|
|
"role": "USER"
|
|
}
|
|
},
|
|
"TokenResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"token"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"token": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/TokenType"
|
|
}
|
|
},
|
|
"example": [
|
|
{
|
|
"token": "sometoken-todo-add",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"token": "ChCpanIBJCpJuJz42KOmGMSnEhsKGTWquaX2Lq6GhhO4faOYkLD0f9WkXuYJlq4aBAhnGAMiIQJgFcIEghQB5lq3AJZOVswInwc1IGhlQ7NCUh4DFO3UATIECAEQAQ==",
|
|
"type": "container"
|
|
}
|
|
]
|
|
},
|
|
"TokenType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"object",
|
|
"container"
|
|
]
|
|
},
|
|
"Verb": {
|
|
"type": "string",
|
|
"enum": [
|
|
"PUT",
|
|
"DELETE",
|
|
"SETEACL"
|
|
]
|
|
}
|
|
},
|
|
"parameters": {
|
|
"containerId": {
|
|
"type": "string",
|
|
"description": "Base58 encoded container id",
|
|
"name": "containerId",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
"objectId": {
|
|
"type": "string",
|
|
"description": "Base58 encoded object id",
|
|
"name": "objectId",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
"signatureKeyParam": {
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
"signatureParam": {
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
"signatureScheme": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
}
|
|
},
|
|
"securityDefinitions": {
|
|
"BearerAuth": {
|
|
"description": "Bearer token body to provide with NeoFS request. Must have 'Bearer ' prefix.",
|
|
"type": "apiKey",
|
|
"name": "Authorization",
|
|
"in": "header"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
]
|
|
}`))
|
|
FlatSwaggerJSON = json.RawMessage([]byte(`{
|
|
"schemes": [
|
|
"http"
|
|
],
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "REST API NeoFS",
|
|
"title": "REST API NeoFS",
|
|
"version": "v1"
|
|
},
|
|
"host": "localhost:8090",
|
|
"basePath": "/v1",
|
|
"paths": {
|
|
"/auth": {
|
|
"post": {
|
|
"security": [],
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"summary": "Form bearer token to futher requests",
|
|
"operationId": "auth",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Owner Id (wallet address) that will sign the token",
|
|
"name": "X-Bearer-Owner-Id",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"default": 100,
|
|
"description": "Token lifetime in epoch",
|
|
"name": "X-Bearer-Lifetime",
|
|
"in": "header"
|
|
},
|
|
{
|
|
"description": "Bearer token",
|
|
"name": "tokens",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Bearer"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Base64 encoded stable binary marshaled bearer token",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/TokenResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/containers": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "Get list of containers",
|
|
"operationId": "listContainers",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded owner id",
|
|
"name": "ownerId",
|
|
"in": "query",
|
|
"required": true
|
|
},
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "The number of containers to skip before starting to collect the result set.",
|
|
"name": "offset",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"type": "integer",
|
|
"default": 100,
|
|
"description": "The numbers of containers to return.",
|
|
"name": "limit",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Containers info",
|
|
"schema": {
|
|
"$ref": "#/definitions/ContainerList"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"summary": "Create new container in NeoFS",
|
|
"operationId": "putContainer",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Provide this parameter to register container name in NNS service",
|
|
"name": "name-scope-global",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"description": "Container info",
|
|
"name": "container",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"basicAcl": {
|
|
"type": "string"
|
|
},
|
|
"containerName": {
|
|
"type": "string"
|
|
},
|
|
"placementPolicy": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"basicAcl": "public-read-write",
|
|
"containerName": "container",
|
|
"placementPolicy": "REP 3"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Address of uploaded objects",
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/containers/{containerId}": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "Get container by id",
|
|
"operationId": "getContainer",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Container info",
|
|
"schema": {
|
|
"$ref": "#/definitions/ContainerInfo"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Delete container by id",
|
|
"operationId": "deleteContainer",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful deletion",
|
|
"schema": {
|
|
"$ref": "#/definitions/SuccessResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded container id",
|
|
"name": "containerId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
]
|
|
},
|
|
"/containers/{containerId}/eacl": {
|
|
"get": {
|
|
"security": [],
|
|
"summary": "Get container EACL by id",
|
|
"operationId": "getContainerEACL",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Container EACL information",
|
|
"schema": {
|
|
"$ref": "#/definitions/Eacl"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"summary": "Set container EACL by id",
|
|
"operationId": "putContainerEACL",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"description": "EACL for container",
|
|
"name": "eacl",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/Eacl"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful EACL updating",
|
|
"schema": {
|
|
"$ref": "#/definitions/SuccessResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded container id",
|
|
"name": "containerId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
]
|
|
},
|
|
"/objects": {
|
|
"put": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"summary": "Upload object to NeoFS",
|
|
"operationId": "putObject",
|
|
"parameters": [
|
|
{
|
|
"description": "Object info to upload",
|
|
"name": "object",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/ObjectUpload"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Address of uploaded objects",
|
|
"schema": {
|
|
"$ref": "#/definitions/Address"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
}
|
|
]
|
|
},
|
|
"/objects/{containerId}/search": {
|
|
"post": {
|
|
"summary": "Search objects by filters",
|
|
"operationId": "searchObjects",
|
|
"parameters": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"default": 0,
|
|
"description": "The number of containers to skip before starting to collect the result set.",
|
|
"name": "offset",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"maximum": 10000,
|
|
"minimum": 1,
|
|
"type": "integer",
|
|
"default": 100,
|
|
"description": "The numbers of containers to return.",
|
|
"name": "limit",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"description": "Filters to search objects",
|
|
"name": "searchFilters",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/SearchFilters"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of objects",
|
|
"schema": {
|
|
"$ref": "#/definitions/ObjectList"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded container id",
|
|
"name": "containerId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
]
|
|
},
|
|
"/objects/{containerId}/{objectId}": {
|
|
"get": {
|
|
"summary": "Get object info by address",
|
|
"operationId": "getObjectInfo",
|
|
"parameters": [
|
|
{
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"name": "range-offset",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"minimum": 1,
|
|
"type": "integer",
|
|
"name": "range-length",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"maximum": 524288000,
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"default": 4194304,
|
|
"description": "Max payload size (in bytes) that can be included in the response.\nIf the actual size is greater than this params the payload won't be included in the response.\n",
|
|
"name": "max-payload-size",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Object info",
|
|
"schema": {
|
|
"$ref": "#/definitions/ObjectInfo"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Remove object from NeoFS",
|
|
"operationId": "deleteObject",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successful deletion",
|
|
"schema": {
|
|
"$ref": "#/definitions/SuccessResponse"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad request",
|
|
"schema": {
|
|
"$ref": "#/definitions/ErrorResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded container id",
|
|
"name": "containerId",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "Base58 encoded object id",
|
|
"name": "objectId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"definitions": {
|
|
"Action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ALLOW",
|
|
"DENY"
|
|
]
|
|
},
|
|
"Address": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"objectId"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"objectId": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"objectId": "8N3o7Dtr6T1xteCt6eRwhpmJ7JhME58Hyu1dvaswuTDd"
|
|
}
|
|
},
|
|
"Attribute": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Bearer": {
|
|
"type": "object",
|
|
"properties": {
|
|
"container": {
|
|
"$ref": "#/definitions/Rule"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"object": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Record"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ContainerInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"version",
|
|
"ownerId",
|
|
"basicAcl",
|
|
"placementPolicy",
|
|
"attributes"
|
|
],
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Attribute"
|
|
}
|
|
},
|
|
"basicAcl": {
|
|
"type": "string"
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"ownerId": {
|
|
"type": "string"
|
|
},
|
|
"placementPolicy": {
|
|
"type": "string"
|
|
},
|
|
"version": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"attribute": [
|
|
{
|
|
"key": "Timestamp",
|
|
"value": "1648810072"
|
|
},
|
|
{
|
|
"key": "Name",
|
|
"value": "container"
|
|
}
|
|
],
|
|
"basicAcl": "0x1fbf9fff",
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"ownerId": "NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM",
|
|
"placementPolicy": "REP 2",
|
|
"version": "2.11"
|
|
}
|
|
},
|
|
"ContainerList": {
|
|
"type": "object",
|
|
"required": [
|
|
"size",
|
|
"containers"
|
|
],
|
|
"properties": {
|
|
"containers": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ContainerInfo"
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"Eacl": {
|
|
"type": "object",
|
|
"required": [
|
|
"records"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string",
|
|
"readOnly": true
|
|
},
|
|
"records": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Record"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ErrorResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/ErrorType"
|
|
}
|
|
}
|
|
},
|
|
"ErrorType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"GW",
|
|
"API"
|
|
]
|
|
},
|
|
"Filter": {
|
|
"type": "object",
|
|
"required": [
|
|
"headerType",
|
|
"matchType",
|
|
"key",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"headerType": {
|
|
"$ref": "#/definitions/HeaderType"
|
|
},
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"matchType": {
|
|
"$ref": "#/definitions/MatchType"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"headerType": "OBJECT",
|
|
"key": "FileName",
|
|
"matchType": "STRING_NOT_EQUAL",
|
|
"value": "myfile"
|
|
}
|
|
},
|
|
"HeaderType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"REQUEST",
|
|
"OBJECT",
|
|
"SERVICE"
|
|
]
|
|
},
|
|
"MatchType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"STRING_EQUAL",
|
|
"STRING_NOT_EQUAL"
|
|
]
|
|
},
|
|
"ObjectBaseInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"address"
|
|
],
|
|
"properties": {
|
|
"address": {
|
|
"$ref": "#/definitions/Address"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"ObjectInfo": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"objectId",
|
|
"ownerId",
|
|
"attributes",
|
|
"objectSize",
|
|
"payloadSize"
|
|
],
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Attribute"
|
|
}
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"objectId": {
|
|
"type": "string"
|
|
},
|
|
"objectSize": {
|
|
"description": "Object full payload size",
|
|
"type": "integer"
|
|
},
|
|
"ownerId": {
|
|
"type": "string"
|
|
},
|
|
"payload": {
|
|
"description": "Base64 encoded object payload",
|
|
"type": "string"
|
|
},
|
|
"payloadSize": {
|
|
"description": "Payload size in response",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"example": {
|
|
"attribute": [
|
|
{
|
|
"key": "Timestamp",
|
|
"value": "1648810072"
|
|
},
|
|
{
|
|
"key": "Name",
|
|
"value": "object"
|
|
}
|
|
],
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"objectId": "8N3o7Dtr6T1xteCt6eRwhpmJ7JhME58Hyu1dvaswuTDd",
|
|
"ownerId": "NbUgTSFvPmsRxmGeWpuuGeJUoRoi6PErcM"
|
|
}
|
|
},
|
|
"ObjectList": {
|
|
"type": "object",
|
|
"required": [
|
|
"size",
|
|
"objects"
|
|
],
|
|
"properties": {
|
|
"objects": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/ObjectBaseInfo"
|
|
}
|
|
},
|
|
"size": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"ObjectUpload": {
|
|
"type": "object",
|
|
"required": [
|
|
"containerId",
|
|
"fileName"
|
|
],
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Attribute"
|
|
}
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"fileName": {
|
|
"type": "string"
|
|
},
|
|
"payload": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"example": {
|
|
"attributes": [
|
|
{
|
|
"key": "User-Attribute",
|
|
"value": "some-value"
|
|
}
|
|
],
|
|
"containerId": "5HZTn5qkRnmgSz9gSrw22CEdPPk6nQhkwf2Mgzyvkikv",
|
|
"fileName": "myFile.txt",
|
|
"payload": "Y29udGVudCBvZiBmaWxl"
|
|
}
|
|
},
|
|
"Operation": {
|
|
"type": "string",
|
|
"enum": [
|
|
"GET",
|
|
"HEAD",
|
|
"PUT",
|
|
"DELETE",
|
|
"SEARCH",
|
|
"RANGE",
|
|
"RANGEHASH"
|
|
]
|
|
},
|
|
"Principal": {
|
|
"type": "string"
|
|
},
|
|
"Record": {
|
|
"type": "object",
|
|
"required": [
|
|
"action",
|
|
"operation",
|
|
"filters",
|
|
"targets"
|
|
],
|
|
"properties": {
|
|
"action": {
|
|
"$ref": "#/definitions/Action"
|
|
},
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Filter"
|
|
}
|
|
},
|
|
"operation": {
|
|
"$ref": "#/definitions/Operation"
|
|
},
|
|
"targets": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/Target"
|
|
}
|
|
}
|
|
},
|
|
"example": {
|
|
"action": "ALLOW",
|
|
"filters": [],
|
|
"operation": "GET",
|
|
"targets": [
|
|
{
|
|
"keys": [],
|
|
"role": "OTHERS"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"Role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"USER",
|
|
"SYSTEM",
|
|
"OTHERS"
|
|
]
|
|
},
|
|
"Rule": {
|
|
"type": "object",
|
|
"required": [
|
|
"verb"
|
|
],
|
|
"properties": {
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"verb": {
|
|
"$ref": "#/definitions/Verb"
|
|
}
|
|
}
|
|
},
|
|
"SearchFilter": {
|
|
"type": "object",
|
|
"required": [
|
|
"key",
|
|
"value",
|
|
"match"
|
|
],
|
|
"properties": {
|
|
"key": {
|
|
"type": "string"
|
|
},
|
|
"match": {
|
|
"$ref": "#/definitions/SearchMatch"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"SearchFilters": {
|
|
"type": "object",
|
|
"required": [
|
|
"filters"
|
|
],
|
|
"properties": {
|
|
"filters": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/SearchFilter"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"SearchMatch": {
|
|
"type": "string",
|
|
"enum": [
|
|
"MatchStringEqual",
|
|
"MatchStringNotEqual",
|
|
"MatchNotPresent",
|
|
"MatchCommonPrefix"
|
|
]
|
|
},
|
|
"SuccessResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"success"
|
|
],
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"Target": {
|
|
"type": "object",
|
|
"required": [
|
|
"role",
|
|
"keys"
|
|
],
|
|
"properties": {
|
|
"keys": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"role": {
|
|
"$ref": "#/definitions/Role"
|
|
}
|
|
},
|
|
"example": {
|
|
"keys": [
|
|
"021dc56fc6d81d581ae7605a8e00e0e0bab6cbad566a924a527339475a97a8e38e"
|
|
],
|
|
"role": "USER"
|
|
}
|
|
},
|
|
"TokenResponse": {
|
|
"type": "object",
|
|
"required": [
|
|
"type",
|
|
"token"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"token": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/definitions/TokenType"
|
|
}
|
|
},
|
|
"example": [
|
|
{
|
|
"token": "sometoken-todo-add",
|
|
"type": "object"
|
|
},
|
|
{
|
|
"token": "ChCpanIBJCpJuJz42KOmGMSnEhsKGTWquaX2Lq6GhhO4faOYkLD0f9WkXuYJlq4aBAhnGAMiIQJgFcIEghQB5lq3AJZOVswInwc1IGhlQ7NCUh4DFO3UATIECAEQAQ==",
|
|
"type": "container"
|
|
}
|
|
]
|
|
},
|
|
"TokenType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"object",
|
|
"container"
|
|
]
|
|
},
|
|
"Verb": {
|
|
"type": "string",
|
|
"enum": [
|
|
"PUT",
|
|
"DELETE",
|
|
"SETEACL"
|
|
]
|
|
}
|
|
},
|
|
"parameters": {
|
|
"containerId": {
|
|
"type": "string",
|
|
"description": "Base58 encoded container id",
|
|
"name": "containerId",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
"objectId": {
|
|
"type": "string",
|
|
"description": "Base58 encoded object id",
|
|
"name": "objectId",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
"signatureKeyParam": {
|
|
"type": "string",
|
|
"description": "Hex encoded the public part of the key that signed the bearer token",
|
|
"name": "X-Bearer-Signature-Key",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
"signatureParam": {
|
|
"type": "string",
|
|
"description": "Base64 encoded signature for bearer token",
|
|
"name": "X-Bearer-Signature",
|
|
"in": "header",
|
|
"required": true
|
|
},
|
|
"signatureScheme": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Use wallect connect signature scheme or not",
|
|
"name": "walletConnect",
|
|
"in": "query"
|
|
}
|
|
},
|
|
"securityDefinitions": {
|
|
"BearerAuth": {
|
|
"description": "Bearer token body to provide with NeoFS request. Must have 'Bearer ' prefix.",
|
|
"type": "apiKey",
|
|
"name": "Authorization",
|
|
"in": "header"
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"BearerAuth": []
|
|
}
|
|
]
|
|
}`))
|
|
}
|