HYBRID-CHAINDEVELOPERS
DOCUMENTATIONv2
POST

Governance

Create safe

/api/v2/governance/safes
AUTHENTICATIONBearer token · governance:writeAUTHORITATIVE OWNERgovernance-serviceCONTRACT AUTHORITYCapability registry · plannedSTATUSPlanned · not executable
PLANNING CONTRACT · NOT CALLABLE

This page describes intended capability and integration boundaries so people and agents can prepare safely. Do not send this request or register it as an executable tool. Wait until the capability registry marks it implemented-contract, then re-fetch the deployed OpenAPI document and build the request from that machine contract.

PURPOSE + BUSINESS CONTEXT

Planned capability: create a governed safe with explicit owners and signature threshold.

WHEN THIS CALL IS USEFUL

Do not call or register this operation as an executable agent tool yet. Use this page to plan the future safe workflow; enable it only after the status becomes implemented-contract and the exact operation appears in deployed OpenAPI.

OUTCOME · Planned · Create or advance

What changes

None today: this route is not executable. Its intended behavior is: no executable public safe owner exists. A future promotion would create one versioned PENDING_MEMBER_ACCEPTANCE policy and evidence record without binding wallet, contract, access, settlement, trading, publisher, ingress, market-status, or traffic authority.

WHY IT MATTERS

  • Lets people and agents prepare for safe without falsely presenting roadmap scope as a live capability.
  • Gives people and agents a contract-backed way to advance safe.
  • Keeps deliberation, approval evidence, authority assignment, and threshold-signing participation explicit and auditable.

ISOLATION + AUTHORITY

Tenant, workspace, proposal, voter, authority assignment, quorum, custody participant, and signing-session boundaries remain separate. A proposal, recorded decision, assigned role, or ceremony request does not by itself activate a contract, produce a threshold signature, move value, or grant publisher, matching, or trading authority. This planning record grants no runtime authority, and only deployed OpenAPI can define an executable public contract.

BEFORE YOU CALL

  • First confirm that this operation is marked implemented-contract and exists in the currently deployed OpenAPI document; until then, no production request is valid.
  • Its capability-registry profile is provisional integration guidance, not an executable request schema.
  • Authenticate at the documented boundary: bearer+scope.
  • Treat the proposed name (body), purpose (body), network_id (body), members (body), threshold (body), step_up_token (body) as planning input only; re-generate the request from deployed OpenAPI before making a call.
  • Use one Idempotency-Key only for retries of the same byte-equivalent logical mutation.
  • Resolve the current proposal or assignment version, eligible authority, quorum rule, and purpose-bound policy before relying on this result.

WHAT TO DO NEXT

  • Keep this operation disabled in clients, agents, SDKs, and workflow automation while it remains planned-contract.
  • Use the stated owner, lifecycle, authority boundary, and provisional safe profile to prepare requirements and conformance tests without sending a request.
  • Monitor the capability registry for implemented-contract, then re-fetch deployed OpenAPI and validate its exact security, parameters, schemas, responses, and agent metadata before enabling the integration.

AGENT GUIDANCE

  • Never call this planned contract, include it in an executable tool registry, or infer runtime availability from this readable page.
  • Its capability-registry profile is provisional integration guidance, not an executable request schema.
  • Use safe only for the purpose and lifecycle stage described by this operation; do not treat it as authority for an adjacent action.
  • Treat the proposed name (body), purpose (body), network_id (body), members (body), threshold (body), step_up_token (body) as planning input only; re-generate the request from deployed OpenAPI before making a call.
  • Keep proposal creation, review, decision recording, quorum satisfaction, authority assignment, ceremony request, participant signing, execution, and finality as separate lifecycle facts.
  • After a timeout or conflict, read authoritative state before deciding whether an equivalent retry is safe.
  • When implementation lands, discard generated requests based on this planning record and rebuild them from the deployed OpenAPI operation.
MACHINE CONTRACT

This operation is a non-executable planning contract. Its capability-registry record defines the intended owner, parameters, responses, and integration boundary until an implemented Rust OpenAPI operation replaces it.

EXTENDED INTEGRATION GUIDANCE

Readable request and response reference

Examples describe the reviewed planning contract and remain non-executable until promoted into OpenAPI.

PARAMETERS

Headers, path, query, and body

NAMELOCATIONPRESENCETYPE / RULES / PURPOSE
AuthorizationheaderRequired

Bearer tokenCredential containing the governance:write scope.EXAMPLEBearer hc_live_…

Idempotency-KeyheaderRequired

ASCII string · 1–128Caller-generated key reused for every retry of the same logical mutation.EXAMPLEsafe-treasury-policy-council-20260901

Content-TypeheaderRequired

application/jsonSigned mutations accept canonical JSON only.EXAMPLEapplication/json

Content-DigestheaderRequired

RFC 9530 SHA-256 digestDigest of the exact transmitted body bytes.EXAMPLEsha-256=:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=:

Signature-InputheaderRequired

RFC 9421 signature parametersCovers @method, @path, content-digest, content-type, and idempotency-key; includes keyid, nonce, created, and expires.EXAMPLEsig1=("@method" "@path" "content-digest" "content-type" "idempotency-key");created=1786582800;expires=1786583100;nonce="01J…";keyid="machine-prod"

SignatureheaderRequired

Ed25519 HTTP Message SignatureSignature made by an active public key registered to the authenticated client.EXAMPLEsig1=:base64-signature:

namebodyRequired

string · 2–120Owner-visible safe name. Display metadata grants no authority.EXAMPLETreasury policy council

purposebodyRequired

string · 8–500Substantive purpose limitation retained with creation and policy-change evidence.EXAMPLEApprove governed treasury policy changes

network_idbodyRequired

hybrid-devnet | hybrid-testnet | hybrid-mainnetSingle immutable network boundary for the safe and every future binding.EXAMPLEhybrid-testnet

membersbodyRequired

member object[] · 2–32 uniqueComplete initial member set. Each object requires member_id and active signing_key_id; label is optional display metadata. Private keys and recovery material are forbidden.EXAMPLE[{"member_id":"profile-01JMEMBER01","signing_key_id":"hck_member_01","label":"Treasury lead"},{"member_id":"profile-01JMEMBER02","signing_key_id":"hck_member_02","label":"Risk reviewer"}]

thresholdbodyRequired

integer · 1–member countDistinct eligible member approvals required by a future governed proposal.EXAMPLE2

proposal_ttl_secondsbodyOptional

integer · 300–604800Optional proposal approval window; defaults to 86400 seconds.EXAMPLE86400

execution_delay_secondsbodyOptional

integer · 0–604800Optional delay after proposal approval before a separately authorized domain action could become eligible; defaults to 0.EXAMPLE3600

step_up_tokenbodyRequired

one-use purpose-bound tokenFresh GOVERNANCE_SAFE_CREATE authorization bound to the administrator session and canonical request.EXAMPLEhcsu_…

REQUEST

JSON body example

{
  "name": "Treasury policy council",
  "purpose": "Approve governed treasury policy changes",
  "network_id": "hybrid-testnet",
  "members": [
    {
      "member_id": "profile-01JMEMBER01",
      "signing_key_id": "hck_member_01",
      "label": "Treasury lead"
    },
    {
      "member_id": "profile-01JMEMBER02",
      "signing_key_id": "hck_member_02",
      "label": "Risk reviewer"
    }
  ],
  "threshold": 2,
  "proposal_ttl_seconds": 86400,
  "execution_delay_seconds": 3600,
  "step_up_token": "hcsu_…"
}

RESPONSES

Status and payload examples

501Profiled planning contract only; no authoritative public V2 safe owner exists and the operation is absent from live OpenAPI.Not executable · JSON RESPONSE+
{
  "code": "planned_contract",
  "message": "Governance safe creation is not available through V2."
}
INTEGRATION DECISIONplanned_contract
CALLER ACTION
Do not send this request or register it as an executable agent tool. Use the implemented alternatives linked by the module guide.
RETRY SAFETY
Do not retry on a timer. Re-fetch production OpenAPI and proceed only after this exact operation appears there.
STATE RECONCILIATION
No runtime state exists to reconcile for this planning contract. Continue from workspace governance proposals, approvals, signing handoffs, policy versions, and execution evidence through an implemented operation.
ESCALATE WHEN
Escalate when signer eligibility, threshold evidence, proposal version, or downstream execution state remains inconsistent after a fresh governance read.

OPERATIONAL NOTES

Security and lifecycle guarantees

  • Do not call this planning route. A promoted 201 would create a versioned PENDING_MEMBER_ACCEPTANCE policy and evidence record, not an active authority.
  • Every member must be an eligible principal with an active registered public signing-key identifier. Never submit private keys, seeds, passwords, recovery material, or bearer secrets; the future owner must verify key possession and explicit member acceptance.
  • The threshold must remain satisfiable. Retain the future safe identifier, version, policy commitment, member-acceptance posture, and evidence identifiers rather than inferring activation from creation.
  • Creation does not execute a transaction, move value, alter a wallet, bind contract authority, approve a proposal, or change settlement, trading, matching, publisher, ingress, market status, or traffic. Any future binding requires a separate typed owning-domain ceremony.
DOCUMENTATION STATUS

This planned contract now defines its public parameters, authorization boundary, replay behavior, responses, and authoritative owner. It remains non-executable until its owner adapter and conformance tests are promoted into the Rust gateway.

Return to the V2 directory