Grizzly Key Management Platform 0.1.0
Grizzly Key Management Platform
Endpoints
GET /assets/{id}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
path | string | No |
DELETE /assets/{id}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
path | string | No |
POST /assets/search
Request body
{
"apikeyId": "string",
"accountId": "string",
"keyringId": "string",
"parents": [
"string"
],
"start": 0,
"end": 0,
"data": {},
"page": 0,
"limit": 0
}
Schema of the request body
{
"type": "object",
"properties": {
"apikeyId": {
"type": "string",
"description": "The API Key ID"
},
"accountId": {
"type": "string",
"description": "The Account ID ID"
},
"keyringId": {
"type": "string",
"description": "The KeyRing ID"
},
"parents": {
"type": "array",
"items": {
"type": "string"
},
"description": "Assigned parent Assets"
},
"start": {
"type": "integer",
"description": "The start time"
},
"end": {
"type": "integer",
"description": "The end time"
},
"data": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"page": {
"type": "integer",
"description": "Current page (1-based)"
},
"limit": {
"type": "integer",
"description": "Items per page"
}
}
}
KeyRings
GET /ks/hash/{hash}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
hash |
path | string | No |
Response 200 OK
{
"ringId": "string",
"keyId": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"ringId": {
"type": "string"
},
"keyId": {
"type": "string"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /ks/header/{header}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
header |
path | string | No |
Response 200 OK
{
"valid": true,
"version": 0,
"hasSignedAsset": true,
"hash": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"valid": {
"type": "boolean"
},
"version": {
"type": "integer"
},
"hasSignedAsset": {
"type": "boolean"
},
"hash": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
POST /ks/decrypt
Request body
{
"hash": "string",
"header": "string"
}
Schema of the request body
{
"type": "object",
"properties": {
"hash": {
"type": "string"
},
"header": {
"type": "string"
}
}
}
Response 200 OK
{
"ringId": "string",
"ringname": "string",
"key": {
"type": "aes256",
"id": "string",
"props": {},
"keyData": {
"encrypted": {
"key": {
"value": "string",
"encoding": null
}
},
"iv": "string"
}
},
"asset": {
"valid": true,
"id": "string",
"message": "string",
"data": {}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"ringId": {
"type": "string",
"description": "The KeyRing ID"
},
"ringname": {
"type": "string",
"description": "The KeyRing name"
},
"key": {
"$ref": "#/components/schemas/ks.key"
},
"asset": {
"$ref": "#/components/schemas/ks.signedasset"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 422 Unprocessable Content
{
"ringId": "string",
"ringname": "string",
"key": {
"type": "aes256",
"id": "string",
"props": {},
"keyData": {
"encrypted": {
"key": {
"value": "string",
"encoding": null
}
},
"iv": "string"
}
},
"asset": {
"valid": true,
"id": "string",
"message": "string",
"data": {}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"ringId": {
"type": "string",
"description": "The KeyRing ID"
},
"ringname": {
"type": "string",
"description": "The KeyRing name"
},
"key": {
"$ref": "#/components/schemas/ks.key"
},
"asset": {
"$ref": "#/components/schemas/ks.signedasset"
}
}
}
POST /ks/encrypt
Request body
{
"ringname": "string",
"asset": {
"parents": [
"string"
],
"assetId": "string",
"data": {}
}
}
Schema of the request body
{
"type": "object",
"properties": {
"ringname": {
"type": "string",
"description": "The Keyring name"
},
"asset": {
"type": "object",
"properties": {
"parents": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional. Assign Assets as Parents"
},
"assetId": {
"type": "string",
"description": "If provided, this is the Asset that will be updated. Pass this along for updating existing Assets."
},
"data": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [],
"additionalProperties": true,
"description": "The Asset data"
}
},
"required": [
"ringname"
]
}
Response 200 OK
{
"key": {
"type": "aes256",
"id": "string",
"props": {},
"keyData": {
"encrypted": {
"key": {
"value": "string",
"encoding": null
}
},
"iv": "string"
}
},
"ringId": "string",
"hash": "string",
"header": "string",
"asset": {}
}
Schema of the response body
{
"type": "object",
"properties": {
"key": {
"$ref": "#/components/schemas/ks.key",
"description": "The Key to use for encryption"
},
"ringId": {
"type": "string",
"description": "The KeyRing ID"
},
"hash": {
"type": "string",
"description": "The unique hash"
},
"header": {
"type": "string",
"description": "The full header"
},
"asset": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true,
"description": "Asset information if one was created"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
POST /ks/rotate
Request body
{
"ringname": "string",
"algo": "aes256"
}
Schema of the request body
{
"type": "object",
"properties": {
"ringname": {
"type": "string",
"description": "The Keyring name"
},
"algo": {
"type": "string",
"enum": [
"aes256"
],
"description": "The Algorithm to use"
}
},
"required": [
"ringname"
]
}
Response 200 OK
{
"key": {
"type": "aes256",
"id": "string",
"props": {},
"keyData": {
"encrypted": {
"key": {
"value": "string",
"encoding": null
}
},
"iv": "string"
}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"key": {
"$ref": "#/components/schemas/ks.key"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 500 Internal Server Error
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
POST /ks/keyrings
Request body
{
"name": "string",
"algo": "aes256",
"publicKey": "string",
"props": {},
"keyProps": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The KeyRing name"
},
"algo": {
"type": "string",
"enum": [
"aes256"
],
"description": "The Algorithm"
},
"publicKey": {
"type": "string",
"description": "The Public Key"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"keyProps": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"name"
]
}
Response 200 OK
{
"ring": {
"id": "string",
"name": "string",
"displayName": "string",
"activeKey": "string",
"activeAlgorithm": null,
"createdAt": "string",
"updatedAt": "string",
"props": {},
"publicKey": "string"
},
"key": {
"type": "aes256",
"id": "string",
"props": {},
"keyData": {
"encrypted": {
"key": {
"value": "string",
"encoding": null
}
},
"iv": "string"
}
},
"privateKey": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"ring": {
"$ref": "#/components/schemas/ks.keyring",
"description": "KeyRing details"
},
"key": {
"$ref": "#/components/schemas/ks.key",
"description": "The currently Active Key"
},
"privateKey": {
"type": "string",
"description": "A base64 encoded Private Key. This will only be returned if a Public Key was not provided"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 500 Internal Server Error
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /ks/keyrings
Response 200 OK
{
"rings": [
{
"id": "string",
"name": "string",
"displayName": "string",
"activeKey": "string",
"activeAlgorithm": null,
"createdAt": "string",
"updatedAt": "string",
"props": {},
"publicKey": "string"
}
]
}
Schema of the response body
{
"type": "object",
"properties": {
"rings": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ks.keyring"
}
}
}
}
DELETE /ks/keyrings
Response 200 OK
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /ks/keyrings/{ringname}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
query | string | No | If set to 'true', the provided KeyRing name will be treated as the KeyRing ID | |
ringname |
path | string | No | The KeyRing name |
Response 200 OK
{
"ring": {
"id": "string",
"name": "string",
"displayName": "string",
"activeKey": "string",
"activeAlgorithm": null,
"createdAt": "string",
"updatedAt": "string",
"props": {},
"publicKey": "string"
}
}
Schema of the response body
{
"type": "object",
"properties": {
"ring": {
"$ref": "#/components/schemas/ks.keyring"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /ks/config
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
ringname |
query | string | No | The KeyRing name |
Response 200 OK
{
"config": {
"props": {},
"key": {
"props": {}
},
"algos": {
"aes256": {
"maxEncryptCount": 10.12
}
}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"config": {
"$ref": "#/components/schemas/ks.keyringconfig"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
PUT /ks/config
Request body
{
"ringanme": "string",
"config": {
"props": {},
"key": {
"props": {}
},
"algos": {
"aes256": {
"maxEncryptCount": 10.12
}
}
}
}
Schema of the request body
{
"type": "object",
"properties": {
"ringanme": {
"type": "string",
"description": "The KeyRing name"
},
"config": {
"$ref": "#/components/schemas/ks.keyringconfig"
}
},
"required": [
"ringname",
"config"
]
}
Response 200 OK
{
"config": {
"props": {},
"key": {
"props": {}
},
"algos": {
"aes256": {
"maxEncryptCount": 10.12
}
}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"config": {
"$ref": "#/components/schemas/ks.keyringconfig"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 500 Internal Server Error
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
DELETE /ks/keyrings/{name}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
name |
path | string | No | The KeyRing name |
Response 200 OK
{
"name": "string",
"id": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"id": {
"type": "string"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /ks/keyrings/{ringname}/keys
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
query | string | No | If set to 'true' will treat the ringname as the KeyRing ID | |
ringname |
path | string | No | The KeyRing name |
Response 200 OK
{
"keys": [
{
"type": null,
"props": {},
"id": "string"
}
]
}
Schema of the response body
{
"type": "object",
"properties": {
"keys": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"enum": [
"aes256"
]
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"id": {
"type": "string"
}
}
}
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /ks/keyrings/{ringname}/keys/{keyId}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
query | string | No | If set to 'true', the provided KeyRing name will be treated as the KeyRing ID | |
keyId |
path | string | No | The Key ID | |
ringname |
path | string | No | The KeyRing name |
Response 200 OK
{
"type": "aes256",
"id": "string",
"props": {},
"keyData": {
"encrypted": {
"key": {
"value": "string",
"encoding": null
}
},
"iv": "string"
}
}
Schema of the response body
{
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/ks.algorithm",
"description": "The Algorithm"
},
"id": {
"type": "string",
"description": "The Key ID"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true,
"description": "Any unique data stored on the Key"
},
"keyData": {
"$ref": "#/components/schemas/ks.keydataencrypted",
"description": "The encrypted Key Data"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Users
POST /auth/validate
Request body
{
"key": "string",
"activity": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"activity": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"key"
]
}
Response 200 OK
{
"valid": true
}
Schema of the response body
{
"type": "object",
"properties": {
"valid": {
"type": "boolean"
}
},
"additionalProperties": true
}
POST /auth/user/invite
Request body
{
"username": "string",
"email": "string",
"firstName": "string",
"lastName": "string",
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"username": {
"type": "string"
},
"email": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"username",
"firstName",
"lastName",
"email"
]
}
Response 200 OK
{
"loginUrl": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"loginUrl": {
"type": "string"
}
}
}
GET /auth/user/invite-validate
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
token |
query | string | No |
Response 200 OK
{
"state": null,
"user": {
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"state": {
"enum": [
"success"
]
},
"user": {
"$ref": "#/components/schemas/auth.user"
}
}
}
Response 401 Unauthorized
{
"state": null
}
Schema of the response body
{
"type": "object",
"properties": {
"state": {
"enum": [
"expired",
"invalid"
]
}
}
}
POST /auth/user/invite-complete
Request body
{
"token": "string",
"password": "string"
}
Schema of the request body
{
"type": "object",
"properties": {
"token": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"token",
"password"
]
}
Response 200 OK
{
"user": {
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
},
"accesstoken": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/auth.user"
},
"accesstoken": {
"type": "string"
}
}
}
Response 400 Bad Request
{
"state": null,
"results": {
"isValid": true,
"details": {
"minLength": 10.12,
"newPasswordLength": 10.12,
"minUppercase": 10.12,
"newPasswordUppercase": 10.12,
"minLowercase": 10.12,
"newPasswordLowercase": 10.12,
"minSpecialChar": 10.12,
"newPasswordSpecialChar": 10.12,
"minNumber": 10.12,
"newPasswordNumber": 10.12
}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"state": {
"enum": [
"malformed-password"
]
},
"results": {
"$ref": "#/components/schemas/auth.password.validation",
"description": "The details on how the password is incorrect"
}
}
}
Response 401 Unauthorized
{
"state": null
}
Schema of the response body
{
"type": "object",
"properties": {
"state": {
"enum": [
"invalid",
"expired"
]
}
}
}
POST /auth/basic/login
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
email |
query | string | No |
Request body
{
"username": "string",
"password": "string"
}
Schema of the request body
{
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"username",
"password"
]
}
Response 200 OK
{
"user": {
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
},
"accessToken": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/auth.user"
},
"accessToken": {
"type": "string"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /auth/basic/refresh
POST /auth/basic/logout
POST /auth/basic/reset-password-start
Request body
{
"email": "string"
}
Schema of the request body
{
"type": "object",
"properties": {
"email": {
"type": "string"
}
},
"required": [
"email"
]
}
Response 200 OK
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
POST /auth/basic/reset-password-complete
Request body
{
"token": "string",
"password": "string"
}
Schema of the request body
{
"type": "object",
"properties": {
"token": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"token",
"password"
]
}
Response 200 OK
Schema of the response body
{
"type": "object",
"properties": {}
}
Response 400 Bad Request
Schema of the response body
{
"type": "object",
"properties": {}
}
GET /auth/users/{username}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
email |
query | string | No | ||
username |
path | string | No | The username or email if email is set to true |
Response 200 OK
{
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The User ID"
},
"username": {
"type": "string",
"description": "The unique user name"
},
"firstName": {
"type": "string",
"description": "The User's first name"
},
"lastName": {
"type": "string",
"description": "The User's last name"
},
"displayName": {
"type": "string",
"description": "The User's display name"
},
"keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of all API Key IDs owned by the user"
},
"email": {
"type": "string",
"description": "The User's email"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true,
"description": "Any unique props stored on the User"
}
}
}
Response 500 Internal Server Error
Schema of the response body
{
"type": "object",
"properties": {}
}
PATCH /auth/users/{username}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
username |
path | string | No |
Request body
{
"email": "string",
"firstName": "string",
"lastName": "string",
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"email": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
Response 200 OK
{
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The User ID"
},
"username": {
"type": "string",
"description": "The unique user name"
},
"firstName": {
"type": "string",
"description": "The User's first name"
},
"lastName": {
"type": "string",
"description": "The User's last name"
},
"displayName": {
"type": "string",
"description": "The User's display name"
},
"keys": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of all API Key IDs owned by the user"
},
"email": {
"type": "string",
"description": "The User's email"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true,
"description": "Any unique props stored on the User"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
DELETE /auth/users/{username}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
query | string | No | 'true' = treats username as a User ID, otherwise use the User name | |
username |
path | string | No |
Response 200 OK
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /auth/users
Response 200 OK
[
{
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
}
]
Schema of the response body
{
"type": "array",
"items": {
"$ref": "#/components/schemas/auth.user"
}
}
POST /auth/users
Request body
{
"username": "string",
"email": "string",
"displayName": "string",
"firstName": "string",
"lastName": "string",
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"username": {
"type": "string"
},
"email": {
"type": "string"
},
"displayName": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"username",
"email",
"firstName",
"lastName"
]
}
Response 200 OK
{
"user": {
"id": "string",
"username": "string",
"firstName": "string",
"lastName": "string",
"displayName": "string",
"keys": [
"string"
],
"email": "string",
"props": {}
},
"password": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/auth.user"
},
"password": {
"type": "string"
}
}
}
Response 400 Bad Request
{
"message": "string",
"errors": {}
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"errors": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
Accounts
POST /auth/accounts
Request body
{
"uid": "string",
"notes": "string",
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"notes": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"uid"
]
}
Response 200 OK
{
"id": "string",
"uid": "string",
"notes": "string",
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uid": {
"type": "string",
"description": "The Account UID"
},
"notes": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
GET /auth/accounts
Response 200 OK
{
"accounts": [
{
"id": "string",
"uid": "string",
"notes": "string",
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
]
}
Schema of the response body
{
"type": "object",
"properties": {
"accounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/auth.account"
}
}
}
}
GET /auth/accounts/{id}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
path | string | No | ||
uid |
query | string | No | If set to 'true', treat the id as a uid |
Response 200 OK
{
"id": "string",
"uid": "string",
"notes": "string",
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uid": {
"type": "string",
"description": "The Account UID"
},
"notes": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
PATCH /auth/accounts/{id}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
path | string | No |
Request body
{
"uid": "string",
"notes": "string",
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"uid": {
"type": "string"
},
"notes": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
Response 200 OK
{
"id": "string",
"uid": "string",
"notes": "string",
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uid": {
"type": "string",
"description": "The Account UID"
},
"notes": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
DELETE /auth/accounts/{id}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
path | string | No | ||
uid |
query | string | No | If set to "true", treat id as the uid |
Response 200 OK
{
"id": "string",
"uid": "string",
"notes": "string",
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"uid": {
"type": "string",
"description": "The Account UID"
},
"notes": {
"type": "string"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /auth/accounts/{accountId}/apikeys
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
accountId |
path | string | No | ||
uid |
query | string | No | If set to "true", treat id as the uid |
Response 200 OK
{
"apikeys": [
{
"keyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
]
}
Schema of the response body
{
"type": "object",
"properties": {
"apikeys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/auth.safeapikey"
}
}
}
}
API Keys
GET /auth/apikey
Response 200 OK
{
"keys": [
{
"keyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
]
}
Schema of the response body
{
"type": "object",
"properties": {
"keys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/auth.safeapikey"
}
}
}
}
POST /auth/apikey
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
uid |
query | string | No | If set to 'true', will treat the accountId field as the Account UID |
Request body
{
"accountId": "string",
"flags": {},
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"accountId": {
"type": "string"
},
"flags": {
"type": "object",
"properties": {},
"description": "The permissions for this API Key"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"accountId"
]
}
Response 200 OK
{
"key": "string",
"keyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"keyid": {
"type": "string"
},
"active": {
"type": "boolean"
},
"references": {
"$ref": "#/components/schemas/auth.apikeyref"
},
"flags": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
PUT /auth/apikey
Request body
{
"op": "delete",
"key": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"delete",
"merge",
"replace"
]
},
"key": {
"type": "string"
},
"active": {
"type": "boolean"
},
"references": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
}
}
},
"flags": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"op",
"key"
]
}
Response 200 OK
{
"key": "string",
"keyid": "string",
"op": null,
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {}
}
Schema of the response body
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "If the key is provided, it will be returned"
},
"keyid": {
"type": "string"
},
"op": {
"enum": [
"delete",
"merge",
"replace"
],
"description": "The operationt o perform"
},
"active": {
"type": "boolean"
},
"references": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
}
}
},
"flags": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
GET /auth/apikey/{apikeyid}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
apikeyid |
path | string | No | The API Key ID |
Response 200 OK
{
"keyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"keyid": {
"type": "string"
},
"active": {
"type": "boolean"
},
"references": {
"$ref": "#/components/schemas/auth.apikeyref"
},
"flags": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
PUT /auth/apikeyid
Request body
{
"op": "delete",
"apikeyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"delete",
"merge",
"replace"
]
},
"apikeyid": {
"type": "string"
},
"active": {
"type": "boolean"
},
"references": {
"type": "object",
"properties": {
"accountId": {
"type": "string"
}
}
},
"flags": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"op",
"apikeyid"
]
}
DELETE /auth/apikey/{apikey}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
apikey |
path | string | No | The API Key |
Response 200 OK
Schema of the response body
{
"type": "object",
"properties": {}
}
GET /auth/apikey/{apikeyid}/props
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
apikeyid |
path | string | No | The API Key ID |
Response 200 OK
{
"keyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"keyid": {
"type": "string"
},
"active": {
"type": "boolean"
},
"references": {
"$ref": "#/components/schemas/auth.apikeyref"
},
"flags": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
}
Response 404 Not Found
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Search
GET /auth/search/keyring/{keyringname}/apikey
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
keyringname |
path | string | No | The KeyRing name |
Response 200 OK
{
"apikeys": [
{
"keyid": "string",
"active": true,
"references": {
"accountId": "string"
},
"flags": {},
"props": {},
"createdAt": "string",
"updatedAt": "string"
}
]
}
Schema of the response body
{
"type": "object",
"properties": {
"apikeys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/auth.safeapikey"
}
}
}
}
POST /auth/search/activity
Request body
{
"accountUid": "string",
"accountId": "string",
"action": "string",
"ring": "string",
"start": 0,
"end": 0,
"keyid": "string",
"limit": 0,
"valid": true,
"props": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"accountUid": {
"type": "string",
"description": "The Account UID"
},
"accountId": {
"type": "string",
"description": "The Account ID"
},
"action": {
"type": "string",
"description": "The Activity Action"
},
"ring": {
"type": "string",
"description": "The Key Ring name"
},
"start": {
"type": "integer",
"description": "The start index"
},
"end": {
"type": "integer",
"description": "The end index"
},
"keyid": {
"type": "string"
},
"limit": {
"type": "integer",
"description": "The max number of items to return"
},
"valid": {
"type": "boolean",
"description": "Whether or nto the the Activity was granted or denied"
},
"props": {
"type": "object",
"properties": {},
"description": "Search for activities based on any props that are set"
}
}
}
Response 200 OK
[
{
"id": "string",
"keyid": "string",
"createdAt": 0,
"props": {}
}
]
Schema of the response body
{
"type": "array",
"items": {
"$ref": "#/components/schemas/auth.activity"
}
}
Activity
GET /auth/activity/{id}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
path | string | No | The Activity ID |
Response 200 OK
{
"id": "string",
"keyid": "string",
"createdAt": 0,
"props": {}
}
Schema of the response body
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"keyid": {
"type": "string"
},
"createdAt": {
"type": "integer",
"description": "Epoch UTC time"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
}
}
Asym Service
POST /asym/keyrings
Request body
{
"name": "string",
"algo": "aes256",
"props": {},
"keyProps": {}
}
Schema of the request body
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"algo": {
"type": "string",
"enum": [
"aes256"
]
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"keyProps": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
}
},
"required": [
"name"
]
}
Response 200 OK
{
"ring": {
"id": "string",
"name": "string",
"displayName": "string",
"activeKey": "string",
"activeAlgorithm": null,
"publicKey": "string",
"createdAt": "string",
"updatedAt": "string"
},
"key": {
"type": null,
"id": "string",
"props": {},
"keyData": {
"key": "string"
}
},
"privateKey": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"ring": {
"$ref": "#/components/schemas/asym.keyring"
},
"key": {
"$ref": "#/components/schemas/asym.key"
},
"privateKey": {
"type": "string",
"description": "Base64 encoded Private Key that has been generated"
}
}
}
GET /asym/keyrings/{ringname}/keys/{keyId}
Input parameters
| Parameter | In | Type | Default | Nullable | Description |
|---|---|---|---|---|---|
id |
query | string | No | If set to 'true', the ringname will be treated as the KeyRing ID | |
keyId |
path | string | No | The Key ID | |
ringname |
path | string | No | The KeyRIng name |
Response 200 OK
{
"type": null,
"id": "string",
"props": {},
"keyData": {
"key": "string"
}
}
Schema of the response body
{
"type": "object",
"properties": {
"type": {
"enum": [
"AES256"
],
"description": "The Algorithm this Key is used for"
},
"id": {
"type": "string",
"description": "The Key ID"
},
"props": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true,
"description": "Any custom properties on this Key"
},
"keyData": {
"$ref": "#/components/schemas/asym.keydata",
"description": "The Actual Key Data"
}
}
}
Response 400 Bad Request
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Response 500 Internal Server Error
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
POST /asym/rotate
Request body
{
"ringname": "string",
"algo": "aes256"
}
Schema of the request body
{
"type": "object",
"properties": {
"ringname": {
"type": "string",
"description": "The KeyRing name"
},
"algo": {
"type": "string",
"enum": [
"aes256"
]
}
},
"required": [
"ringname"
]
}
Response 200 OK
{
"key": {
"type": null,
"id": "string",
"props": {},
"keyData": {
"key": "string"
}
}
}
Schema of the response body
{
"type": "object",
"properties": {
"key": {
"$ref": "#/components/schemas/asym.key"
}
}
}
Response 500 Internal Server Error
{
"message": "string"
}
Schema of the response body
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
Schemas
asym.key
| Name | Type |
|---|---|
id |
string |
keyData |
asym.keydata |
props |
|
type |
asym.keydata
| Name | Type |
|---|---|
key |
string |
asym.keyring
| Name | Type |
|---|---|
activeAlgorithm |
|
activeKey |
string |
createdAt |
string |
displayName |
string |
id |
string |
name |
string |
publicKey |
string |
updatedAt |
string |
auth.account
| Name | Type |
|---|---|
createdAt |
string |
id |
string |
notes |
string |
props |
|
uid |
string |
updatedAt |
string |
auth.activity
| Name | Type |
|---|---|
createdAt |
integer |
id |
string |
keyid |
string |
props |
auth.apikey
| Name | Type |
|---|---|
active |
boolean |
createdAt |
string |
flags |
|
key |
string |
keyid |
string |
props |
|
references |
auth.apikeyref |
updatedAt |
string |
auth.apikeyref
| Name | Type |
|---|---|
accountId |
string |
auth.password.validation
| Name | Type |
|---|---|
details |
Properties: minLength, newPasswordLength, minUppercase, newPasswordUppercase, minLowercase, newPasswordLowercase, minSpecialChar, newPasswordSpecialChar, minNumber, newPasswordNumber |
isValid |
boolean |
auth.safeapikey
| Name | Type |
|---|---|
active |
boolean |
createdAt |
string |
flags |
|
keyid |
string |
props |
|
references |
auth.apikeyref |
updatedAt |
string |
auth.user
| Name | Type |
|---|---|
displayName |
string |
email |
string |
firstName |
string |
id |
string |
keys |
Array<string> |
lastName |
string |
props |
|
username |
string |
ks.algorithm
Type: string
ks.key
| Name | Type |
|---|---|
id |
string |
keyData |
ks.keydataencrypted |
props |
|
type |
ks.algorithm |
ks.keydata
| Name | Type |
|---|---|
key |
string |
ks.keydataencrypted
| Name | Type |
|---|---|
encrypted |
Properties: key |
iv |
string |
ks.keyring
| Name | Type |
|---|---|
activeAlgorithm |
|
activeKey |
string |
createdAt |
string |
displayName |
string |
id |
string |
name |
string |
props |
|
publicKey |
string |
updatedAt |
string |
ks.keyringconfig
| Name | Type |
|---|---|
algos |
Properties: aes256 |
key |
Properties: props |
props |
ks.signedasset
| Name | Type |
|---|---|
data |
|
id |
string |
message |
string |
valid |
boolean |
Security schemes
| Name | Type | Scheme | Description |
|---|---|---|---|
| BearerAuth | http | bearer |
More documentation
Grizzly Platform Documentation