This repository has been archived on 2024-09-11. You can view files and clone it, but cannot push or open issues or pull requests.
frostfs-rest-gw/gen/restapi/embedded_spec.go

2277 lines
53 KiB
Go
Raw Normal View History

// 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": []
}
]
}`))
}