This directory contains client libraries for the MCIAS REST API. All language implementations expose this API: ``` Client(server_url, [ca_cert_path], [token]) login(username, password, [totp_code]) → (token, expires_at) logout() → void renew_token() → (token, expires_at) validate_token(token) → {valid, sub, roles, expires_at} get_public_key() → {kty, crv, x} health() → void # raises/errors on 5xx create_account(username, account_type, [password]) → account list_accounts() → [account] get_account(id) → account update_account(id, [status]) → account delete_account(id) → void get_roles(account_id) → [role] set_roles(account_id, roles) → void issue_service_token(account_id) → (token, expires_at) revoke_token(jti) → void get_pg_creds(account_id) → pg_creds set_pg_creds(account_id, host, port, database, username, password) → void ``` | Name | HTTP Status | Meaning | |---|---|---| | `MciasAuthError` | 401 | Token missing, invalid, or expired | | `MciasForbiddenError` | 403 | Insufficient role | | `MciasNotFoundError` | 404 | Resource does not exist | | `MciasInputError` | 400 | Malformed request | | `MciasConflictError` | 409 | Conflict (e.g. duplicate username) | | `MciasServerError` | 5xx | Unexpected server error | `testdata/` contains canonical JSON response fixtures shared across language tests. - `go/` — Go module `git.wntrmute.dev/kyle/mcias/clients/go` - `rust/` — Rust crate `mcias-client` - `lisp/` — ASDF system `mcias-client` - `python/` — Python package `mcias_client`