mirror of
https://github.com/luxfi/openapi.git
synced 2026-10-30 15:23:31 +00:00
The .network host was retired 2026-07-27 and no longer resolves at all (a request to it now returns nothing, not an error), so every reference to it named an address that cannot answer. The brand host is .cloud, matching kms.zoo.cloud and the rest of the white-label convention. Left alone deliberately, because rewriting them would invert what they say: the LLM.md line that RECORDS the retirement, the e2e spec that ASSERTS kms.lux.network must not resolve, and the recorded applies + cluster backups, which are faithful accounts of what was applied and are not config. Co-authored-by: Hanzo Dev <[email protected]>
137 lines
4.3 KiB
YAML
137 lines
4.3 KiB
YAML
openapi: '3.1.0'
|
|
info:
|
|
title: Keystore API
|
|
description: |
|
|
Local keystore. Off by default in production deployments. Enabled
|
|
via `--api-keystore-enabled=true`. The keystore stores user-named
|
|
secp256k1 private keys encrypted at rest with a user-supplied
|
|
password.
|
|
|
|
**Production keys belong in KMS** (`kms.lux.cloud`), not in the
|
|
node's local keystore. The keystore is provided for development,
|
|
test, and single-node operator workflows.
|
|
|
|
All methods are JSON-RPC 2.0. Mount point: `/v1/keystore`.
|
|
|
|
Canonical implementation: `~/work/lux/node/service/keystore/service.go`.
|
|
version: '1.0.0'
|
|
contact:
|
|
name: Lux Industries
|
|
url: https://lux.network
|
|
|
|
servers:
|
|
- url: https://api.lux.network/v1
|
|
- url: https://api-test.lux.network/v1
|
|
- url: https://api-dev.lux.network/v1
|
|
|
|
paths:
|
|
/v1/keystore:
|
|
post:
|
|
summary: Keystore JSON-RPC
|
|
operationId: keystore.rpc
|
|
description: |
|
|
Single JSON-RPC endpoint. `method` field selects the operation.
|
|
Canonical impl:
|
|
`~/work/lux/node/service/keystore/service.go`.
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
oneOf:
|
|
- $ref: '#/components/schemas/CreateUserRequest'
|
|
- $ref: '#/components/schemas/DeleteUserRequest'
|
|
- $ref: '#/components/schemas/ListUsersRequest'
|
|
- $ref: '#/components/schemas/ImportUserRequest'
|
|
- $ref: '#/components/schemas/ExportUserRequest'
|
|
responses:
|
|
'200':
|
|
description: JSON-RPC envelope.
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/JsonRpcResponse'
|
|
|
|
components:
|
|
schemas:
|
|
|
|
JsonRpcResponse:
|
|
type: object
|
|
required: [jsonrpc, id, result]
|
|
properties:
|
|
jsonrpc: { type: string, enum: ['2.0'] }
|
|
id: { oneOf: [{type: string}, {type: integer}] }
|
|
result: {}
|
|
|
|
UserPass:
|
|
type: object
|
|
required: [username, password]
|
|
properties:
|
|
username:
|
|
type: string
|
|
minLength: 1
|
|
password:
|
|
type: string
|
|
minLength: 1
|
|
description: |
|
|
Symmetric password used to derive the at-rest encryption
|
|
key. The keystore stores `argon2id(password, salt)` for
|
|
verification; the password itself is never persisted.
|
|
|
|
CreateUserRequest:
|
|
type: object
|
|
required: [jsonrpc, id, method, params]
|
|
properties:
|
|
jsonrpc: { type: string, enum: ['2.0'] }
|
|
id: { oneOf: [{type: string}, {type: integer}] }
|
|
method: { type: string, enum: ['keystore.createUser'] }
|
|
params: { $ref: '#/components/schemas/UserPass' }
|
|
description: |
|
|
Canonical impl: `service/keystore/service.go:CreateUser`.
|
|
|
|
DeleteUserRequest:
|
|
type: object
|
|
required: [jsonrpc, id, method, params]
|
|
properties:
|
|
jsonrpc: { type: string, enum: ['2.0'] }
|
|
id: { oneOf: [{type: string}, {type: integer}] }
|
|
method: { type: string, enum: ['keystore.deleteUser'] }
|
|
params: { $ref: '#/components/schemas/UserPass' }
|
|
|
|
ListUsersRequest:
|
|
type: object
|
|
required: [jsonrpc, id, method]
|
|
properties:
|
|
jsonrpc: { type: string, enum: ['2.0'] }
|
|
id: { oneOf: [{type: string}, {type: integer}] }
|
|
method: { type: string, enum: ['keystore.listUsers'] }
|
|
params:
|
|
type: object
|
|
maxProperties: 0
|
|
|
|
ImportUserRequest:
|
|
type: object
|
|
required: [jsonrpc, id, method, params]
|
|
properties:
|
|
jsonrpc: { type: string, enum: ['2.0'] }
|
|
id: { oneOf: [{type: string}, {type: integer}] }
|
|
method: { type: string, enum: ['keystore.importUser'] }
|
|
params:
|
|
type: object
|
|
required: [username, password, user]
|
|
properties:
|
|
username: { type: string }
|
|
password: { type: string }
|
|
user:
|
|
type: string
|
|
description: hex-encoded exported user blob.
|
|
|
|
ExportUserRequest:
|
|
type: object
|
|
required: [jsonrpc, id, method, params]
|
|
properties:
|
|
jsonrpc: { type: string, enum: ['2.0'] }
|
|
id: { oneOf: [{type: string}, {type: integer}] }
|
|
method: { type: string, enum: ['keystore.exportUser'] }
|
|
params: { $ref: '#/components/schemas/UserPass' }
|