Guest Signature
Public token-based guest signature flow (no login): view the session, download the PDF, request an OTP, and sign. The guest token is carried in the URL path.
View a guest signature session
Returns the information a guest signer needs to review and sign a lease, from a public token-based link (no login required).
Authentication
This endpoint is public: the only credential is the guest token carried in the URL path. The token is a UUID v4 that is sha256-hashed server-side and is single-use once the signature is applied.
Privacy
The returned projection is a strict allow-list. It never exposes the
signer's phone number or email, nor any internal IDs. Only the OTP
delivery channel (sms / email) is surfaced.
Anti-oracle behaviour
All responses (success and errors) are padded to a constant minimum
latency, and an unknown token returns the same generic 404 as a token
that did not match — so timing and messages cannot be used to probe for
valid tokens.
Example
Code
Response:
Code
path Parameters
tokenGuest session token (clear UUID v4 from the email link).
View a guest signature session › Responses
Guest signature session retrieved.
lease_labelHuman-readable label of the lease being signed.
document_urlURL to stream the (unsigned/preview) PDF. Points to the
/public/guest-signature/{token}/pdf proxy endpoint and carries the
clear token in its path.
Identity of the guest signer — only what is needed for display and the legal mention.
Other signers of the same lease (minimal info).
expires_atExpiration date of the guest signature session.
otp_channelChannel used to deliver the OTP code. Only the nature of the channel is exposed — never the phone number or email itself.
Legal mandatary disclosure (present only when the signer acts on behalf of another party).
Download the guest signature PDF
Streams the (unsigned/preview) PDF for the guest signer to review before signing. Public, token-based (no login).
Why a backend proxy
The PDF is stored encrypted with SSE-C; a browser cannot send the SSE-C headers from an iframe. The backend therefore fetches and decrypts the document, then streams the clear bytes. When previous signatures already exist, the already-signed PDF is served (so each signer consents to the real document).
Embedding
The response sets Content-Disposition: inline and relaxes framing
headers (frame-ancestors allow-list) so the PDF can be embedded in the
FairePlace frontend.
Example
Code
path Parameters
tokenGuest session token (clear UUID v4 from the email link).
Download the guest signature PDF › Responses
PDF document (binary stream).
Request an OTP for the guest signature
Triggers delivery of a one-time password to the guest signer. The backend resolves the tenant and the delivery channel server-side and relays the request to the signature orchestrator.
Public, token-based (no login). The request takes no body.
Privacy
The response only returns the delivery channel (sms / email) —
never the phone number or email used.
Example
Code
Response (202 Accepted):
Code
path Parameters
tokenGuest session token (clear UUID v4 from the email link).
Request an OTP for the guest signature › Responses
OTP delivery accepted.
channelChannel used to deliver the OTP code. Only the nature of the channel is exposed — never the phone number or email itself.
Submit OTP and apply the guest signature
Validates the OTP code and applies the handwritten signature to the document. Public, token-based (no login).
On success the session token is consumed (single-use): any later
call with the same token returns 410 Gone.
Privacy
The returned receipt is non-PII: it carries only signed_at plus an
optional evidence_id / completion_url.
Example
Code
Response:
Code
path Parameters
tokenGuest session token (clear UUID v4 from the email link).
Submit OTP and apply the guest signature › Request Body
otp_codeOTP code received via the channel returned by request-otp.
signature_image_base64Base64-encoded handwritten signature image (PNG/JPEG recommended). Validated server-side for size and format before being relayed to the signature orchestrator.
Submit OTP and apply the guest signature › Responses
Signature applied successfully.
signed_atServer timestamp at which the signature was applied.
evidence_idEvidence identifier returned by the signature orchestrator (if any).
completion_urlURL the signer can be redirected to after completion (if any).