HYBRID-CHAINDEVELOPERS
DOCUMENTATIONv2
POST

Digital assets

Mint asset

/api/v2/assets/{asset_uuid}/mints
AUTHENTICATIONBearer token · assets:supplyAUTHORITATIVE OWNERasset-registry-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 mint operation within the asset's cap and authority policy.

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 mint asset 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 mutation exists. A future success would atomically increase total supply and the resolved recipient holding and append mint evidence; it would not infer payment, publish the asset, list it, or move any unrelated value.

WHY IT MATTERS

  • Lets people and agents prepare for mint asset without falsely presenting roadmap scope as a live capability.
  • Gives people and agents a contract-backed way to advance mint asset.
  • Lets clients verify asset identity and provenance without treating display metadata or portfolio visibility as issuance or trading authority.

ISOLATION + AUTHORITY

Issuer, collection, asset, mint, proof, owner, network, supply, metadata, custody, marketplace, and trading boundaries remain distinct. Reading an asset or proof cannot issue, mint, transfer, list, value, or trade it; current trading and matching controls remain frozen unless separately approved. 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 asset_uuid (path), recipient_reference (body), quantity (body), expected_asset_version (body), expected_total_supply (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 canonical asset or collection identifier, issuer, network, lifecycle, supply, and required proof freshness.

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 mint asset 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 mint asset only for the purpose and lifecycle stage described by this operation; do not treat it as authority for an adjacent action.
  • Treat the proposed asset_uuid (path), recipient_reference (body), quantity (body), expected_asset_version (body), expected_total_supply (body), step_up_token (body) as planning input only; re-generate the request from deployed OpenAPI before making a call.
  • Distinguish declared metadata, issuer identity, collection membership, mint evidence, supply state, ownership or custody, market listing, price, transfer, and finality.
  • 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 assets:supply scope.EXAMPLEBearer hc_live_…

Idempotency-KeyheaderRequired

ASCII string · 1–128Caller-generated key reused for every retry of the same logical mutation.EXAMPLElaunch-treasury-v1-001

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:

asset_uuidpathRequired

issuer-scoped asset identifierAsset whose governed supply is increased.EXAMPLEasset-01

recipient_referencebodyRequired

owner-safe wallet or holding referenceOpaque recipient resolved by the authoritative asset owner; never a raw profile or database selector.EXAMPLErecipient-wallet-01

quantitybodyRequired

positive exact decimal stringQuantity to issue without floating-point conversion and within asset precision.EXAMPLE25.00000000

expected_asset_versionbodyRequired

integer · ≥1Current asset version for optimistic concurrency.EXAMPLE7

expected_total_supplybodyRequired

non-negative exact decimal stringLast-read total supply; stale or cap-exceeding issuance fails closed.EXAMPLE1000.00000000

commerce_order_referencebodyOptional

identifierOptional authoritative Commerce order reference; must be paired with its commitment.EXAMPLEcommerce-order-01

commerce_order_commitmentbodyOptional

64-character hexadecimal SHA-256 digestCommitment to the exact Commerce order; required with commerce_order_reference.EXAMPLEdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd

step_up_tokenbodyRequired

purpose-bound tokenFresh ASSET_MINT authorization bound to exact asset, recipient, quantity, supply, and evidence.EXAMPLEhcsu_…

REQUEST

JSON body example

{
  "recipient_reference": "recipient-wallet-01",
  "quantity": "25.00000000",
  "expected_asset_version": 7,
  "expected_total_supply": "1000.00000000",
  "commerce_order_reference": "commerce-order-01",
  "commerce_order_commitment": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
  "step_up_token": "hcsu_…"
}

RESPONSES

Status and payload examples

201Supply and recipient holding atomically increased; authority and evidence commitments returned.Not executable · JSON RESPONSE+
{
  "mint_uuid": "mint-01",
  "asset_uuid": "asset-01",
  "recipient_reference": "recipient-wallet-01",
  "quantity": "25.00000000",
  "total_supply": "1025.00000000",
  "recipient_balance": "25.00000000",
  "authority_commitment": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
  "evidence_commitment": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
INTEGRATION DECISION
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
200Equivalent completed mint replayed without duplicate supply.Not executable · JSON RESPONSE+
{
  "mint_uuid": "mint-01",
  "idempotent": true,
  "supply_issued_again": false
}
INTEGRATION DECISION
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
400A field, optional Commerce pair, signed header, step-up token, or idempotency key is malformed.Not executable · JSON RESPONSE+
{
  "code": "invalid_asset_mint",
  "message": "A field, optional Commerce pair, signed header, step-up token, or idempotency key is malformed."
}
INTEGRATION DECISIONinvalid_asset_mint
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
401The bearer credential is invalid.Not executable · JSON RESPONSE+
{
  "code": "invalid_credentials",
  "message": "The bearer credential is invalid."
}
INTEGRATION DECISIONinvalid_credentials
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
403The principal lacks assets:supply, mint authority, or fresh step-up.Not executable · JSON RESPONSE+
{
  "code": "asset_mint_forbidden",
  "message": "The principal lacks assets:supply, mint authority, or fresh step-up."
}
INTEGRATION DECISIONasset_mint_forbidden
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
404The asset, recipient, authority, or Commerce order was not found.Not executable · JSON RESPONSE+
{
  "code": "asset_mint_resource_not_found",
  "message": "The asset, recipient, authority, or Commerce order was not found."
}
INTEGRATION DECISIONasset_mint_resource_not_found
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
409Version or supply is stale, the cap would be exceeded, recipient or lifecycle is ineligible, Commerce terms differ, or idempotency conflicts.Not executable · JSON RESPONSE+
{
  "code": "asset_mint_conflict",
  "message": "Version or supply is stale, the cap would be exceeded, recipient or lifecycle is ineligible, Commerce terms differ, or idempotency conflicts."
}
INTEGRATION DECISIONasset_mint_conflict
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
422Precision, cap, compliance, authority, recipient, network, or evidence policy rejected minting.Not executable · JSON RESPONSE+
{
  "code": "asset_mint_rejected",
  "message": "Precision, cap, compliance, authority, recipient, network, or evidence policy rejected minting."
}
INTEGRATION DECISIONasset_mint_rejected
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.
503Registry, holdings, Commerce, accounting, evidence, or atomic ownership is unavailable; supply is unchanged.Not executable · JSON RESPONSE+
{
  "code": "asset_mint_unavailable",
  "message": "Registry, holdings, Commerce, accounting, evidence, or atomic ownership is unavailable; supply is unchanged."
}
INTEGRATION DECISIONasset_mint_unavailable
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 market-scoped catalog, order, trade, position, collateral, and settlement projections while Python remains authoritative through an implemented operation.
ESCALATE WHEN
Escalate any ambiguous order or settlement outcome while preserving suspension and Python authority; never enable ingress, publishing, allowlists, markets, or traffic as recovery.

OPERATIONAL NOTES

Security and lifecycle guarantees

  • Reviewed planning contract: do not call until the exact operation appears in live production OpenAPI.
  • Keep quantity and expected_total_supply as decimal strings. The owner must lock asset and holding rows and enforce precision, cap, and non-duplication atomically.
  • recipient_reference is resolved inside the authoritative owner. Never submit profile IDs, database keys, private keys, seeds, MPC shares, signing nonces, or custody credentials.
  • Commerce linkage is an all-or-none reference and commitment pair. Caller-authored paid, amount, currency, recipient, or completion fields grant no authority.
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