Trade Trust E BL
Mint, verify, and move a transferable record (eBL) through core-engine.
Hand back the signed record and get the mint transaction — still unsent; see this class's javadoc.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/ebl/complete-mint — hand back the signed record and get the
mint transaction. beneficiary and holder default to from server-side.
Must hold MINTER_ROLE on the registry.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/complete-mint HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 143
{
"preparationId": "text",
"signedVerifiableCredential": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"from": "text",
"beneficiary": "text",
"holder": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"verifiableCredential": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"tokenId": "text",
"unsignedMintTx": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}
}Mint a transferable record in one call: prepare-mint -> core-engine signs -> complete-mint. One step still to do: sign and broadcast the returned unsignedMintTx. Sends the issuer's private key to core-engine — see {@link com.myeg.z2.tradetrust.dto.req.MultikeyDto com.myeg.z2.tradetrust.dto.req.MultikeyDto}.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/ebl/mint — the same build as {@link EblPrepareMintReqDto EblPrepareMintReqDto},
plus the issuer's key pair for delegated signing and the minting address. One call, but
from must still sign and broadcast the returned unsignedMintTx — the token does
not exist until that is mined.
This sends the issuer's private key to core-engine. See {@link MultikeyDto MultikeyDto}.
Must hold MINTER_ROLE on the registry.
Initial owner of title to the goods (Title Escrow beneficiary). Defaults to from.
Initial holder / possessor. Defaults to from.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/mint HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 457
{
"issuerDid": "text",
"credentialSubject": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"tokenRegistry": "text",
"chainId": 1,
"chain": "text",
"context": [
"text"
],
"expirationDate": "text",
"renderMethod": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"qrCode": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"from": "text",
"beneficiary": "text",
"holder": "text",
"keyPair": {
"id": "text",
"type": "text",
"controller": "text",
"publicKeyMultibase": "text",
"secretKeyMultibase": "text",
"@context": "text"
}
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"verifiableCredential": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"tokenId": "text",
"unsignedMintTx": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}
}Deploy a brand-new Token Registry — where an eBL flow starts, since prepare-mint and mint both require a tokenRegistry and there is no default.
Unsigned like every other write: the paying address signs and broadcasts it, and needs gas. Afterwards read the new registry's address from /onboard-issuer/registry — it is not in the receipt's contractAddress.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/ebl/onboard-issuer — build the transaction that deploys a
brand-new eBL Token Registry.
This is where an eBL flow starts. tokenRegistry is required on prepare-mint and
mint and core-engine keeps no server-wide default, so without a registry of your own there
is nothing to mint into.
Like every other eBL write this returns an unsigned transaction: admin
(or whoever you choose to pay) signs and broadcasts it, so that address needs gas first. Deployment
is permissionless — the registry's admin comes from an encoded parameter rather than the sender —
so the paying address and the admin need not be the same.
The new registry's address is not in the transaction receipt's contractAddress
field. The registry is deployed by the platform's shared deployer contract, not by this
transaction directly, so that field is null. Once the transaction succeeds, read the address from
GET /tradetrust/ebl/onboard-issuer/registry?hash=....
The registry's ERC-721 collection name, e.g. "MYEG Bill of Lading".
The registry's ERC-721 symbol, e.g. "MYEGBL".
Becomes the new registry's admin, holding DEFAULT_ADMIN_ROLE, MINTER_ROLE,
RESTORER_ROLE and ACCEPTER_ROLE — so this is the address that will be allowed
to mint. Typically the issuer's own operational address.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/onboard-issuer HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 46
{
"name": "text",
"symbol": "text",
"admin": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}The address of the registry an onboard-issuer transaction deployed, decoded from the receipt's Deployment event. Poll while PENDING, exactly as with /tx/status.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
GET /z2/tradetrust/ebl/onboard-issuer/registry?hash=text HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"transactionHash": "text",
"status": "SUCCESS",
"registry": "text"
}
}Build the unsigned transferable record and its signing spec. The caller signs, then calls complete-mint.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/ebl/prepare-mint — build the unsigned transferable record
and its signing spec. issuerDid, credentialSubject and tokenRegistry are
required; core-engine removed its server-wide default registry (a tokenId is only unique
within one registry contract).
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/prepare-mint HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 274
{
"issuerDid": "text",
"credentialSubject": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"tokenRegistry": "text",
"chainId": 1,
"chain": "text",
"context": [
"text"
],
"expirationDate": "text",
"renderMethod": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"qrCode": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"preparationId": "text",
"unsignedVerifiableCredential": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"signingSpec": {
"mandatoryPointers": [
"text"
],
"cryptoSuite": "text",
"expectedIssuerDid": "text"
}
}
}Document integrity and on-chain state. Takes no tokenRegistry — unlike every other eBL route, it reads the registry and token id from inside the submitted credential. Read valid AND trusted — never valid alone.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/credentials/verify — check signature, issuer binding and
(if declared) revocation. Open on core-engine's side, but this service still requires its own
caller auth like every other route (no addition to SecurityConfig.PUBLIC_PATHS).
trustedIssuers is optional; when supplied, the response's trusted field
reports whether the credential's issuer is on it.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/verify HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 89
{
"verifiableCredential": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"trustedIssuers": [
"text"
]
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"valid": true,
"issuer": "text",
"trusted": true,
"onChain": {
"minted": true,
"status": "ACTIVE",
"registry": "text",
"tokenId": "text",
"titleEscrow": "text",
"beneficiary": "text",
"holder": "text"
},
"checks": [
{
"type": "text",
"status": "text",
"reason": "text"
}
]
}
}The issuer finalizes a returned record; it is burned and retired.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
The two fields every eBL write that takes no extra parameter needs: surrender,
accept-surrender, reject-surrender, reject-transfer-holder,
reject-transfer-beneficiary, reject-transfer-owners. Extended by the writes that
need more — see {@link EblTransferHolderReqDto EblTransferHolderReqDto}, {@link EblNewBeneficiaryReqDto EblNewBeneficiaryReqDto},
{@link EblTransferOwnersReqDto EblTransferOwnersReqDto}.
tokenId is not here — every eBL write takes it as a path variable, not a body field.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/accept-surrender HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"from": "text",
"tokenRegistry": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}The record's full transfer history, oldest first.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
GET /z2/tradetrust/ebl/{tokenId}/endorsement-chain?tokenRegistry=text HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"tokenId": "text",
"chain": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
]
}
}The beneficiary nominates who may take title next — step 1 of the two-step title transfer.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request body shape shared by POST /tradetrust/ebl/{tokenId/transfer-beneficiary}
(irreversible once broadcast) and POST /tradetrust/ebl/{tokenId/nominate} (step 1 of the
two-step title transfer) — both are exactly newBeneficiary + the base action fields.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/nominate HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 62
{
"from": "text",
"tokenRegistry": "text",
"newBeneficiary": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}The Title Escrow currently owning the token (or the registry, once surrendered).
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
GET /z2/tradetrust/ebl/{tokenId}/owner?tokenRegistry=text HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"tokenId": "text",
"owner": "text"
}
}The issuer returns a surrendered record to the last holder, active again.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
The two fields every eBL write that takes no extra parameter needs: surrender,
accept-surrender, reject-surrender, reject-transfer-holder,
reject-transfer-beneficiary, reject-transfer-owners. Extended by the writes that
need more — see {@link EblTransferHolderReqDto EblTransferHolderReqDto}, {@link EblNewBeneficiaryReqDto EblNewBeneficiaryReqDto},
{@link EblTransferOwnersReqDto EblTransferOwnersReqDto}.
tokenId is not here — every eBL write takes it as a path variable, not a body field.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/reject-surrender HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"from": "text",
"tokenRegistry": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Decline an incoming beneficiary transfer.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
The two fields every eBL write that takes no extra parameter needs: surrender,
accept-surrender, reject-surrender, reject-transfer-holder,
reject-transfer-beneficiary, reject-transfer-owners. Extended by the writes that
need more — see {@link EblTransferHolderReqDto EblTransferHolderReqDto}, {@link EblNewBeneficiaryReqDto EblNewBeneficiaryReqDto},
{@link EblTransferOwnersReqDto EblTransferOwnersReqDto}.
tokenId is not here — every eBL write takes it as a path variable, not a body field.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/reject-transfer-beneficiary HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"from": "text",
"tokenRegistry": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Decline an incoming holder transfer. Not the same as {@link com.myeg.z2.tradetrust.controller.EblController#rejectSurrender #rejectSurrender} — unrelated flows.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
The two fields every eBL write that takes no extra parameter needs: surrender,
accept-surrender, reject-surrender, reject-transfer-holder,
reject-transfer-beneficiary, reject-transfer-owners. Extended by the writes that
need more — see {@link EblTransferHolderReqDto EblTransferHolderReqDto}, {@link EblNewBeneficiaryReqDto EblNewBeneficiaryReqDto},
{@link EblTransferOwnersReqDto EblTransferOwnersReqDto}.
tokenId is not here — every eBL write takes it as a path variable, not a body field.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/reject-transfer-holder HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"from": "text",
"tokenRegistry": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Decline an incoming combined (owners) transfer.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
The two fields every eBL write that takes no extra parameter needs: surrender,
accept-surrender, reject-surrender, reject-transfer-holder,
reject-transfer-beneficiary, reject-transfer-owners. Extended by the writes that
need more — see {@link EblTransferHolderReqDto EblTransferHolderReqDto}, {@link EblNewBeneficiaryReqDto EblNewBeneficiaryReqDto},
{@link EblTransferOwnersReqDto EblTransferOwnersReqDto}.
tokenId is not here — every eBL write takes it as a path variable, not a body field.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/reject-transfer-owners HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"from": "text",
"tokenRegistry": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}The holder returns the record to the issuer — step 1 of 3 in the end-of-life flow.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
The two fields every eBL write that takes no extra parameter needs: surrender,
accept-surrender, reject-surrender, reject-transfer-holder,
reject-transfer-beneficiary, reject-transfer-owners. Extended by the writes that
need more — see {@link EblTransferHolderReqDto EblTransferHolderReqDto}, {@link EblNewBeneficiaryReqDto EblNewBeneficiaryReqDto},
{@link EblTransferOwnersReqDto EblTransferOwnersReqDto}.
tokenId is not here — every eBL write takes it as a path variable, not a body field.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/surrender HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"from": "text",
"tokenRegistry": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Transfer title to the goods. Irreversible once the returned transaction is broadcast.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request body shape shared by POST /tradetrust/ebl/{tokenId/transfer-beneficiary}
(irreversible once broadcast) and POST /tradetrust/ebl/{tokenId/nominate} (step 1 of the
two-step title transfer) — both are exactly newBeneficiary + the base action fields.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/transfer-beneficiary HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 62
{
"from": "text",
"tokenRegistry": "text",
"newBeneficiary": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Hand possession of the record to another party. Irreversible once the returned transaction is broadcast.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/ebl/{tokenId/transfer-holder} — irreversible once broadcast.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/transfer-holder HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 57
{
"from": "text",
"tokenRegistry": "text",
"newHolder": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Move beneficiary and holder together, atomically, in one transaction.
AWS API Gateway key, required only on the api-sandbox and api-v2 servers. It is checked by the gateway, before the request reaches this service, so it does not substitute for the bearer token - those two headers are read by different layers. Omit it when port-forwarding to a pod.
OAuth2 bearer token from the shared BaaS auth server.
Every endpoint in this subset requires one. Note the security filter runs BEFORE routing, so an unauthenticated request to a path that does not exist also answers 401, not 404 - a 404 is only visible to an authenticated caller.
Request for POST /tradetrust/ebl/{tokenId/transfer-owners} — moves beneficiary and
holder together, atomically, in one transaction.
OK
Standard BaaS response envelope. Mirrors the shape used across the microservices so callers get a consistent contract on L2 as on L1.
POST /z2/tradetrust/ebl/{tokenId}/transfer-owners HTTP/1.1
Host: api-sandbox.zetrix.com
X-API-Key: YOUR_API_KEY
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 81
{
"from": "text",
"tokenRegistry": "text",
"newBeneficiary": "text",
"newHolder": "text"
}OK
{
"success": true,
"errorCode": "text",
"message": "text",
"data": {
"to": "text",
"data": "text",
"value": "text",
"chainId": 1
}
}Last updated