FishyKeys API (1.0)

Download OpenAPI specification:Download

The FishyKeys API for key management

key_management

The FishyKeys server handles master key operations

create_master_key key_management

Create a new master key and split it into shares

Request Body schema: application/json
admin_password
required
string

Admin password for key management

admin_username
required
string

Admin username for key management

min_shares
required
integer <int64>

Minimum number of shares required to reconstruct the key

total_shares
required
integer <int64>

Total number of shares to create

Responses

Request samples

Content type
application/json
{
  • "admin_password": "admin_password123!",
  • "admin_username": "admin",
  • "min_shares": 3,
  • "total_shares": 5
}

Response samples

Content type
application/json
{
  • "admin_username": "admin",
  • "shares": [
    ]
}

delete_share key_management

Delete a share from the key management system

Request Body schema: application/json
index
required
integer <int64>

The index of the share to delete

Responses

Request samples

Content type
application/json
{
  • "index": 1
}

add_share key_management

Add a share to unlock the master key

Request Body schema: application/json
share
required
string

One of the shares need to unlock the master key

Responses

Request samples

Content type
application/json
{
  • "share": "EXAMPLEA5ZKwDn8Zotr3B+d+F+UzrcJ1Yhl2rU0"
}

Response samples

Content type
application/json
{
  • "index": 4413501202617170000,
  • "unlocked": true
}

get_key_status key_management

Get the current status of the master key

Responses

Response samples

Content type
application/json
{
  • "current_shares": 3571465081279942700,
  • "is_locked": false,
  • "min_shares": 6887987368142989000,
  • "total_shares": 2167945761760457500
}

roles

Roles service manages roles

list roles roles

List all roles

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

create role roles

Create a new role

Request Body schema: application/json
color
required
string^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

Color of the role

name
required
string non-empty

Name or the role

Responses

Request samples

Content type
application/json
{
  • "color": "#33FF57",
  • "name": "team_sre"
}

Response samples

Content type
application/json
{
  • "color": "#33FF57",
  • "id": 2,
  • "name": "team_sre"
}

assign role to user roles

Assign a role to a user

Request Body schema: application/json
role_id
required
integer <int64>

ID of the role to assign to the user

user_id
required
integer <int64>

ID of the user to assign the role to

Responses

Request samples

Content type
application/json
{
  • "role_id": 1,
  • "user_id": 2
}

unassign role to user roles

Unassign a role to a user

Request Body schema: application/json
role_id
required
integer <int64>

ID of the role to assign to the user

user_id
required
integer <int64>

ID of the user to assign the role to

Responses

Request samples

Content type
application/json
{
  • "role_id": 1,
  • "user_id": 2
}

delete role roles

Delete a role byd id

path Parameters
id
required
integer <int64>
Example: 2

ID of the role to delete

Responses

secrets

User service manages user accounts and authentication

list secrets secrets

Retrieve all secrets you have access to

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

update secret secrets

Update a secret

Request Body schema: application/json
authorized_roles
required
Array of integers <int64> [ items <int64 > ]

Role IDs authorized to access the secret

authorized_users
required
Array of integers <int64> [ items <int64 > ]

Users IDs authorized to access the secret

path
required
string >= 2 characters

Base64 encoded secret's path

value
required
string non-empty

The secret value

Responses

Request samples

Content type
application/json
{
  • "authorized_roles": [
    ],
  • "authorized_users": [
    ],
  • "path": "L2N1c3RvbWVycy9nb29nbGUvYXBpX2tleQ==",
  • "value": "SECRET_API_KEY123"
}

create secret secrets

Create a secret

Request Body schema: application/json
authorized_roles
required
Array of integers <int64> [ items <int64 > ]

Role IDs authorized to access the secret

authorized_users
required
Array of integers <int64> [ items <int64 > ]

Users IDs authorized to access the secret

path
required
string >= 2 characters

Base64 encoded secret's path

value
required
string non-empty

The secret value

Responses

Request samples

Content type
application/json
{
  • "authorized_roles": [
    ],
  • "authorized_users": [
    ],
  • "path": "L2N1c3RvbWVycy9nb29nbGUvYXBpX2tleQ==",
  • "value": "SECRET_API_KEY123"
}

get secret secrets

Retrieve a secret's information

path Parameters
path
required
string >= 2 characters
Example: L2N1c3RvbWVycy9nb29nbGUvYXBpX2tleQ==

Base64 encoded secret's path

Responses

Response samples

Content type
application/json
{
  • "authorized_roles": [
    ],
  • "authorized_users": [
    ],
  • "created_at": "2025-06-30T12:00:00Z",
  • "owner": {
    },
  • "path": "customers/google/api_key",
  • "updated_at": "2025-06-30T15:00:00Z"
}

get secret value secrets

Retrieve a secret value

path Parameters
path
required
string >= 2 characters
Example: L2N1c3RvbWVycy9nb29nbGUvYXBpX2tleQ==

Base64 encoded secret's path

Responses

Response samples

Content type
application/json
{
  • "path": "customers/google/api_key",
  • "value": "SECRET_API_KEY"
}

users

User service manages user accounts and authentication

list users users

List all users

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

create user users

Create a new user

Request Body schema: application/json
password
required
string

Password (hashed or plain depending on implementation)

username
required
string >= 3 characters

Username of the new user

Responses

Request samples

Content type
application/json
{
  • "password": "s3cr3t",
  • "username": "alice"
}

Response samples

Content type
application/json
{
  • "id": 2,
  • "username": "alice"
}

auth user users

Authenticate a user with username and password

Request Body schema: application/json
password
required
string

Password

username
required
string

Username

Responses

Request samples

Content type
application/json
{
  • "password": "s3cr3t",
  • "username": "alice"
}

Response samples

Content type
application/json
{
  • "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  • "username": "alice"
}

get operator token users

Retrieve a JWT token that doesn't expire for operator use, corresponding to your user

Responses

Response samples

Content type
application/json
{
  • "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  • "username": "alice"
}

delete user users

Delete a user by username

path Parameters
username
required
string >= 3 characters
Example: alice

Username of the user to delete

Responses