This endpoint initiates the process of transferring both the holder and beneficiary roles associated with a document managed under a Title Escrow smart contract. The operation constructs an unsigned blockchain transaction that updates ownership and prepares it for user authentication and signing.
The workflow begins by extracting key metadata from the submitted document file. The document embeds a target hash that uniquely identifies the token on-chain. Using this identifier along with the provided registry address, the system retrieves the corresponding Title Escrow contract instance and determines its current state.
The caller's wallet information is loaded using the credentials included in the request header. This wallet address is used to validate that the caller is the current beneficiary of the Title Escrow contract. The operation cannot proceed if the caller does not meet the ownership criteria.
Additional validations ensure the beneficiary nominee address is not equal to the current beneficiary and that there is no existing nominee already set on the contract. If either condition is violated, the transfer request is rejected.
The remarks provided in the request are transformed into a structured and encoded format which is stored within the transaction payload. These remarks may provide contextual or referential metadata for the new ownership arrangement.
NAfter encoding, the system estimates the required gas for successful execution and constructs an unsigned transaction object. A transaction hash is produced from this unsigned transaction.
This transaction hash is used to create a signing challenge, and all contextual data—including the challenge, unsigned transaction, token information, ownership details, and associated metadata—is saved into a secure server-managed session.
The endpoint returns a redirect URL that leads to an external signing interface. The user must open this URL to authenticate and complete the signing operation needed to finalize the ownership transfer on-chain.
File Upload Format (Base64 Data URI)
For endpoints that accept file inputs, files must be submitted as a Base64-encoded Data URI string in the document field.
Format
data:<mimeType>;name=<filename>;base64,<base64EncodedContent>
Example
json
{ "document": "data:application/octet-stream;name=BL-0xd7.tt;base64,ewogICJAY29udGV4dCI6IFsKICAgICJodHRwcz..." }
This API returns a URL with sessionId.
Use GET /auth/session-response?sessionId=<sessionId> to retrieve the session result.
