Skip to content

Check a new storage on several servers

POST
/api/managed-storage/availability/preflight
curl --request POST \
--url https://opfield.example.com/api/managed-storage/availability/preflight \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "nodeIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "witness": { "relayIds": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ], "nodeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }, "durability": "synchronous", "manual": true, "nodeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "folderId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "publishS3": true, "publishedPort": 1 }'

What creating the storage on these servers would do: the mode (automatic with witnesses, else manual), lease voters and witnesses, the measured round trip between the servers, the default durability and what an unplanned failover can lose, blockers and warnings. Needs storage:create on every server. Needs the current plan with multi-node availability (Business).

JSON request body

Media typeapplication/json
object
nodeIds
required
Array<string>
>= 1 items <= 5 items
witness
object
relayIds
Array<string>
<= 5 items
nodeId
string format: uuid
durability
string | null
Allowed values: synchronous asynchronous
manual
boolean
nodeId
string format: uuid
folderId
string | null format: uuid
publishS3
boolean
publishedPort
integer
>= 1 <= 65535

Successful response

Media typeapplication/json
object
data
required
object
mode
required

Automatic | manual

string
voters
required
Array<string>
witnesses
required
Array<object>
object
kind
required

Relay | node

string
id
required
string
name
required
string
candidates
required

Every host that may be a witness for these servers, not only the ones picked

Array<object>
object
kind
required
string
id
required
string
name
required
string
durabilityFixed
required

The durability the engine always uses, or null

string | null
rttP50Ms
required
number | null
defaultDurability
required

Synchronous | asynchronous

string
durability
required

Synchronous | asynchronous

string
lossWindowText
required
string
restartNeeded
required
boolean
policyLeaseHours
required
number | null
missingForAutomatic
required
string | null
blockers
required
Array<object>
object
code
required
string
message
required
string
warnings
required
Array<string>
Example
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Example resource",
"createdAt": "2024-01-01T12:00:00.000Z",
"updatedAt": "2024-01-01T12:30:00.000Z"
}
}

Bad request

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"details": [
{
"path": [
"name"
],
"message": "Required"
}
]
}

Authentication required

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "UNAUTHORIZED",
"message": "Authentication required"
}

Forbidden

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "FORBIDDEN",
"message": "Insufficient permissions"
}

Not found

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "NOT_FOUND",
"message": "Resource not found"
}

Conflict

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "CONFLICT",
"message": "Resource already exists"
}

Unprocessable entity

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "UNPROCESSABLE_ENTITY",
"message": "Request could not be processed"
}

Internal server error

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}