Endpoints for adding a property (the on-ramp). A record can be started before an account exists, and what a read returns depends on who is asking:
- Owner reads. A request carrying the owner's signed-in session returns the full on-ramp record, including
email,recipients, andcollectedFields(the owner's answers to the property questions). - All other reads. Any other request for the same record returns a redacted view: the property's location and parcel data,
media,status, andsteps(with signing links and signer details removed), plus the booleanshasEmailandhasRecipientsin place of the values.collectedFieldsis absent. - Claiming a logged-out start. A start made without a session that creates a record nobody owns yet returns a one-time
sessionId. The server stores only a hash, and the secret is bound to the record it was issued for. To bind the record to the signed-in owner, send the secret as theX-On-Ramp-Sessionheader on the first authenticatedPATCHof that record, or on aPOSTto the record'sclaimoperation. A repeat logged-out start on the same unclaimed record rotates the secret only when it presents the current one inX-On-Ramp-Session; without it, the start returns the redacted view, writes nothing, and returns nosessionId. An authenticated start on an existing unclaimed record without the header also returns the redacted view and writes nothing. A start on a record that already has an owner returns the redacted view and nosessionId. - Claiming by token id.
POST /on-ramp/{network}/{contract}/{tokenId}/claimbinds an unclaimed record to the signed-in owner, with the owner's verified email and wallet address in the body. A record on the current trust agreement is assigned with the same token id. An unclaimed record on an older trust agreement is retired and replaced by a fresh record for the same parcel on the current agreement, and the response carries the new token id (the old token id reads as superseded and the GraphQLpremintSuccessorquery follows it to the live record). A record created from a mailed QR code also needs its claim secret inX-On-Ramp-Session. Claiming the same record again from the same account returns it unchanged; a record already claimed by someone else is refused with409 already_claimed, a QR record without its secret with403 possession_required, a record whose process has moved past the first steps (or has signed documents, a paid fee, or a live order) with422 needs_admin, and a record that does not exist with404 not_found. The GraphQLclaimStatefield on a token reportsUNCLAIMEDorCLAIMEDto any reader, and never who claimed it. - Authenticated starts. A start made with a signed-in session binds the owner from the session's verified credentials and returns no
sessionId.