Connected marketplace accounts
const url = 'https://api.flotera.com/api/v1/marketplaces';const options = { method: 'GET', headers: {cookie: '__Host-erm_session=<__Host-erm_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.flotera.com/api/v1/marketplaces \ --cookie __Host-erm_session=<__Host-erm_session>One entry per connected marketplace. The API key itself is never returned in any form: only a digest, so the panel can tell “the same key” from “a new key” without ever holding the value.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Marketplace accounts.
object
object
Supported marketplace. The database constrains the same two values, so a third one is a migration rather than a new string.
invalid_key is set only when the marketplace rejected the key. A network failure, a 5xx or a missing permission group leave the status alone — otherwise the customer would be told to reconnect a marketplace that is working.
How the marketplace identifies the account owner.
Hash of the stored key. Lets the panel tell “the same key” from “a new key” without ever holding the value. The key itself is never returned by any endpoint, in any form.
RFC 3339 UTC with microsecond precision, or null.
Why the last sync failed. Survives until the next success, because it is the only explanation the customer gets for a stalled sync.
RFC 3339 UTC with microsecond precision, or null.
CLORE held in Proof of Holding by this account. The holding cuts the marketplace’s base share in steps, so what a MACHINE is charged depends on this fact about the ACCOUNT. Null means UNREAD, not zero. Zero is a measured “nothing held”, and the full share follows from it; null leaves open that the share is half of what is shown. A reader that treats them alike quotes the owner someone else’s price for their own machine. Only one number leaves the account snapshot, never the snapshot itself — the owner’s wallets live there too. Always null on Vast, which has no such mechanism.
Example
{ "accounts": [ { "marketplace": "vast", "status": "connected" } ]}Missing/invalid credentials (code=unauthorized).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Authenticated but not permitted. code=forbidden — role/scope mismatch; code=feature_not_entitled — the plan does not include the capability; code=account_frozen — the account is frozen and this operation is declared x-ermeon-frozen: deny. The three are deliberately distinct: only the last one is fixed by a top-up (13 §5.6).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}A dependency the endpoint needs is not configured or is temporarily unavailable (code=unavailable). The rest of the API keeps working — an absent external integration must not take the service down.
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}