Electronic lease signing.
These endpoints allow you to:
- Initiate a signature process for a lease
- List contracts pending signature
- Request a signature (send OTP)
- Validate an OTP and apply the signature
- Track signature status
List leases pending signature for the tenant
Retrieves the list of leases where the user is a tenant and where a signature is pending on their part.
Filtering criteria
- The lease must have an initiated signature document
- The document status must not be
COMPLETED - There must be a signature request of type
TENANTwith a non-COMPLETEDstatus
Required permissions
lessee:leases:read
List leases pending signature for the tenant › Responses
Leases pending signature list
idUnique lease identifier
estate_idRented property unit ID
lease_type_idLease type ID
statusLease status
versionLease version (incremented with each amendment)
start_dateLease start date
rent_amountLease rent amount (in EUR). Automatically synchronized with the associated Estate's rent_amount.
rent_frequencyRent payment frequency
is_subject_to_rent_evolution_decreeSubject to rent evolution decree at re-letting
is_subject_to_reference_rent_capSubject to increased reference rent by prefectural decree
payment_dayMonthly payment day (1-31)
payment_termsPayment terms
payment_methodPayment method
created_atCreation date
updated_atLast modification date
template_idTemplate ID used to generate the lease
agent_idAgent ID (real estate agent)
reference_numberLease reference number
end_dateLease end date
deposit_amountSecurity deposit amount
revision_index_typeRent revision index type
last_revision_dateDate of the last rent revision
next_revision_dateDate of the next rent revision
usage_typePremises usage type
furniture_list_idFurniture list ID (for furnished leases)
notesInternal notes
reference_rent_per_m2Reference rent in EUR/m²
reference_rent_increased_per_m2Increased reference rent in EUR/m²
base_rent_amountBase rent (equal to increased reference rent if supplement)
rent_complement_amountRent supplement
rent_complement_justificationRent supplement justification
previous_tenant_last_rentPrevious tenant's last rent
previous_tenant_last_payment_datePrevious tenant's last payment date
previous_tenant_last_revision_datePrevious tenant's last revision date
rent_revision_dateRent revision date
irl_reference_quarterIRL reference quarter (e.g., Q1 2024)
irl_reference_valueIRL reference index value
rent_regulation_applied_atRegulation application date
rent_regulation_zone_typeRegulation zone type
rent_regulation_compliance_statusRegulation compliance status
rent_regulation_last_checkDate of last compliance check
charge_settlement_modeCharge settlement mode
rent_increase_for_workRent increase amount due to landlord's work
rent_increase_work_descriptionDescription of work done by the landlord
rent_increase_work_costTotal cost of work done by the landlord
rent_increase_work_completion_dateWork completion date
rent_increase_legal_basisLegal basis (e.g., art. 17-2 law 1989)
rent_increase_calculation_methodCalculation method used
Supporting documents (invoices, quotes) - JSON format
rent_increase_start_dateStart date of the rent increase application
rent_increase_end_dateEnd date of the rent increase application
rent_increase_duration_monthsApplication duration in months
rent_decrease_for_tenant_workRent decrease amount due to tenant's required work
rent_decrease_work_descriptionDescription of work to be done by the tenant
rent_decrease_work_estimated_costEstimated cost of work to be borne by the tenant
rent_decrease_work_deadlineDeadline to complete the work
rent_decrease_work_specificationsTechnical specifications of the work
rent_decrease_work_authorization_requiredPrior authorization required
rent_decrease_restitution_clauseRestitution clause at end of lease
Documents (quotes, specifications) - JSON format
rent_decrease_start_dateStart date of the rent decrease application
rent_decrease_end_dateEnd date of the rent decrease application
rent_decrease_duration_monthsApplication duration in months
solidarity_clauseSolidarity clause between co-tenants
termination_clauseTermination clause (termination conditions)
visit_clauseClause for visits to re-let or sell
furniture_provision_clauseClause regarding provided furniture
pet_clausePet clause
insurance_clauseTenant home insurance clause
maintenance_clauseAnnual appliance maintenance clause
damage_clauseTenant damage clause
regularization_waiver_clauseCharge regularization waiver clause
rent_free_clauseRent-free clause
custom_clauseCustom clause (free-form)
rent_free_start_dateRent-free period start date
rent_free_end_dateRent-free period end date
rent_free_amountRent-free amount (0 = fully free, >0 = reduced rent)
tenant_fees_cap_visit_dossier_lease_per_m2Fee cap for visits/file processing/lease drafting (EUR/m²)
tenant_fees_cap_inventory_per_m2Fee cap for move-in inspection (EUR/m²)
landlord_fees_visit_dossier_leaseFees for visits/file processing/lease drafting
landlord_fees_visit_dossier_lease_descriptionDetails of services performed
landlord_fees_inventory_entryMove-in inspection fees
landlord_fees_inventory_entry_descriptionMove-in inspection service details
landlord_fees_otherOther services
landlord_fees_other_descriptionDetails of other services and conditions
tenant_fees_visit_dossier_leaseFees for visits/file processing/lease drafting
tenant_fees_visit_dossier_lease_descriptionDetails of services performed
tenant_fees_inventory_entryMove-in inspection fees
tenant_fees_inventory_entry_descriptionMove-in inspection service details
tenant_fees_otherOther fees
tenant_fees_other_descriptionDetails of other services
fees_calculation_dateFee calculation date
fees_regulation_complianceRegulatory compliance
fees_agency_nameAgency/professional name
fees_agency_registration_numberProfessional registration number
student_school_nameEducational institution name (student lease only)
student_enrollment_yearAcademic year (student lease only)
student_certificate_providedEnrollment certificate provided (student lease only)
student_levelEducation level (student lease only)
mobility_reasonMobility reason (mobility lease only)
mobility_reason_otherReason details if 'autre' (mobility lease only)
initial_duration_monthsInitial duration in months (mobility lease only, between 1 and 10 months)
extended_duration_monthsDuration after extension in months (mobility lease only, maximum 10 months total)
lease_extension_infoExtension amendment information (mobility lease only)
seasonal_rental_purposeSeasonal stay reason (seasonal lease only, max duration 90 days). Common values: vacation, business trip, spa treatment, tourism, other.
seasonal_purpose_detailsAdditional reason details if 'other' selected (seasonal lease only)
seasonal_guest_countNumber of guests accommodated in the property (seasonal lease only, minimum 1 person)
seasonal_cleaning_includedIndicates whether end-of-stay cleaning is included in the rent (seasonal lease only)
seasonal_cleaning_feeEnd-of-stay cleaning fee if not included in the rent (seasonal lease only, in EUR)
seasonal_tourist_tax_includedIndicates whether the tourist tax is included in the rent (seasonal lease only)
seasonal_tourist_tax_amountTourist tax amount per person per night (seasonal lease only, in EUR)
seasonal_services_includedServices included in the seasonal rental (wifi, household linen, parking, etc.)
seasonal_energy_modeEnergy billing mode for the seasonal rental
seasonal_cancellation_policySpecific cancellation policy defined by the landlord (conditions, deadlines, potential penalties)
seasonal_declaration_numberCity hall declaration number (Cerfa n°14004) - Legally required unless the property is the landlord's primary residence (Tourism Code L.324-1-1)
commercial_business_nameTenant company business name (commercial lease only, required per Article L145-1)
commercial_legal_formCompany legal form (SARL, SAS, EURL, etc.)
commercial_siret^\d{14}$14-digit SIRET number (required for commercial lease)
commercial_rcsRCS registration (e.g., RCS Paris 123 456 789)
commercial_activityDescription of the authorized commercial activity (premises purpose, Article L145-1). Determines despecialization rights.
commercial_activity_code_apeAPE/NAF activity code (e.g., 47.11F)
commercial_triennial_exit_year_3Notification deadline for triennial termination at year 3 (3-6-9 rule, Article L145-5). The tenant must notify 6 months before this date.
commercial_triennial_exit_year_6Notification deadline for triennial termination at year 6 (3-6-9 rule, Article L145-5)
commercial_triennial_exit_year_9Notification deadline for triennial termination at year 9 (3-6-9 rule, Article L145-5)
commercial_notice_period_monthsTermination notice period in months (minimum 6 months per Article L145-12)
commercial_ilc_base_valueCommercial Rent Index (ILC) reference value at lease start (for triennial revision per Articles L145-33 to L145-38)
commercial_ilc_base_dateILC reference date (quarter) (e.g., 2024-10-01 for Q4 2024)
commercial_next_revision_dateNext triennial rent revision date based on ILC
commercial_rent_ceiling_enabledRent variation capping at +/-10% per 3-year period (Article L145-38)
History of granted partial despecializations (related or complementary activities, Article L145-47)
commercial_despecialization_fullFull despecialization (complete change of activity, Articles L145-48 and L145-49, requires judicial procedure)
Joint and several guarantors for the commercial lease (Article 2298 of the Civil Code)
commercial_insurance_policyInsurance policy number for rental risks and professional liability (required per Article L145-7)
Get signature status of a lease for the tenant
Retrieves the signature status of a specific lease for the authenticated tenant.
Returns:
- The signature document status (
READY,SIGNING,COMPLETED,FAILED,ARCHIVED) - The signed media ID (
signed_media_id) if the document is signed, allowing retrieval of the signed PDF URL - The details of all associated signature requests
- Information about the signers and their status
Required permissions
lessee:leases:read
path Parameters
idLease ID
Get signature status of a lease for the tenant › Responses
Signature status retrieved successfully
lease_idLease ID
document_signature_idSignature document ID
statusSignature document status
signed_media_idSigned PDF media ID (available after full signature completion)
Signature requests list
Sign a lease as a tenant
Allows the authenticated tenant to sign a lease by validating the OTP received via SMS/email.
Signing process
- The user must have received an OTP via SMS or email
- The OTP is validated via the DO Global service
- The signature is applied to the PDF document
- The signature request status is updated
Security validations
- Verifies that the user is indeed a tenant of the lease
- Verifies that the
person_idderived from the JWT matches the lease signers - Validates the OTP before applying the signature
Required permissions
lessee:leases:sign
path Parameters
idLease ID to sign
Sign a lease as a tenant › Request Body
document_signature_idSignature document ID to sign
otpOTP code received via SMS or email
Sign a lease as a tenant › Responses
Signature initiated successfully (asynchronous processing)
successIndicates whether the request was accepted
messageConfirmation message
document_signature_idSignature document ID
signed_media_idSigned PDF media ID (available after processing)
signed_pdf_urlSigned PDF URL (available after processing)
Download the signed lease (PDF)
Downloads the signed lease PDF, only if the document has been fully signed by all signers.
Required conditions
- The signature document must have the status
COMPLETED - All signature requests must have the status
COMPLETED - The user must be a tenant of the lease
Response format
- Content-Type:
application/pdf - Content-Disposition:
attachment; filename="lease-{id}.pdf" - The file may be encrypted (SSE-C) depending on the security level
Required permissions
lessee:leases:download
path Parameters
idLease ID
Download the signed lease (PDF) › Responses
Signed lease PDF
Initiate electronic signature (global level)
Initiates the electronic signature process for a lease.
Signer identification
The system automatically identifies the initiating signer via:
- The
auth_user_idextracted from the JWT (claimsub) - Matching with an
owner_idorlessee_idin the database - The signer type (owner or tenant) is determined automatically
Verification at individual signer level
The system now verifies at the individual signer level rather than at the global document level:
- If you have already signed: you cannot restart (error 409)
- If the document is fully signed: you cannot restart (error 409)
- If a signature is in progress for you: you must wait (error 409)
- If another signer has signed: you can continue the process (partial restart allowed)
Partial restart
If only one signer has signed, the other signer can initiate a new signature. This allows continuing the process even if one signer has already completed their signature.
Generates the PDF, creates signature requests for all signers (owner + tenants).
Initiate electronic signature (global level) › Request Body
lease_idLease ID to be signed
Initiate electronic signature (global level) › Responses
Signature initiated successfully
document_signature_idUnique ID of the signature process
event_idUnique event ID for traceability
pdf_urlAbsolute URL of the PDF document to sign
media_idReference to the media table (PDF document)
List of created signature requests
statusStatus of the document signature process
Get signature status (global route - deprecated)
Retrieves the current status of an electronic signature process.
Note: This global route requires a lease_id as a query parameter.
It is recommended to use the specific route /leases/{lease_id}/signature/status instead.
query Parameters
lease_idLease ID
Get signature status (global route - deprecated) › Responses
Status retrieved successfully
lease_idLease ID
document_signature_idSignature process ID
Signature state from DO Global (dynamic structure)
Status of a specific document
Retrieves the detailed status of a signature process by its ID (global route)
path Parameters
document_signature_idSignature process ID
Status of a specific document › Responses
Status retrieved successfully
document_signature_idSignature process ID
event_idUnique ID for traceability
pdf_urlPDF document URL
media_idReference to the media table
List of signature requests
statusStatus of the document signature process
List all contracts pending signature
Retrieves the paginated list of all contracts pending signature for the tenant.
Access
This endpoint is for users with the "owner" role in the tenant.
It returns all contracts where at least one signer has a PENDING or SIGNING status.
Automatic filtering
- Only contracts from the authenticated user's tenant are returned (multi-tenant isolation)
- Contracts with
COMPLETED,EXPIRED, orCANCELLEDstatus are excluded - Only contracts with at least one pending signer are returned
Returned information
For each contract, you receive:
- Document information (ID, lease, status, dates, URLs)
- Complete list of all signers with their individual statuses
- The URL of the PDF document to sign
- The URL of the signed PDF (if available)
Pagination
Use limit and offset to paginate results.
The total_count field indicates the total number of matching contracts.
query Parameters
limitMaximum number of results per page (default: 50, max: 100)
offsetNumber of results to skip for pagination (default: 0)
List all contracts pending signature › Responses
Pending contracts list retrieved successfully
List of contracts pending signature (for the current page)
total_countTotal number of pending contracts (all combined, before pagination)
limitMaximum number of results per page (value used for the request)
offsetNumber of skipped results (pagination offset used)
Signature contract details
Retrieves the complete details of a signature contract, including all signers and their statuses
path Parameters
document_signature_idSignature process ID
Signature contract details › Responses
Details retrieved successfully
document_signature_idlease_idmedia_idReference to the media table
statusStatus of the document signature process
initiator_typeSigner type
initiator_idInitiator ID
event_idUnique ID for traceability
created_atexpires_atdocument_urlsigned_pdf_urlarchive_urlURL of the archived PDF with electronic timestamping
Request a signature (send OTP) - Global route
Requests a signer's signature by sending an OTP code via SMS. The person_id (owner_id or lessee_id) is automatically resolved from the JWT (auth_user_id). Minimal structure: document_signature_id and signature_data.signature_image.
Request a signature (send OTP) - Global route › Request Body
document_signature_idUnique identifier of the signature process.
Obtained during initiation via /signature/initiate.
Handwritten signature data
Request a signature (send OTP) - Global route › Responses
OTP sent successfully
Process a signature event
Processes a signature request event received from the notifier function (used by webhooks)
Process a signature event › Request Body
Base event for Scaleway Topics
document_signature_idSignature process ID
lease_idLease ID
Signer information
document_urlURL of the PDF document to sign
signature_urlURL to access the signature
expires_atSignature request expiration date
Process a signature event › Responses
Event processed successfully
statusevent_idThe processed event ID
document_signature_idlease_idsigner_emailsigner_typeSigner type
Initiate signature for a specific lease
Initiates the electronic signature process directly from the context of a lease.
Signer identification
The system automatically identifies the initiating signer via:
- The
auth_user_idextracted from the JWT (claimsub) - Matching with an
owner_idorlessee_idin the database - The signer type (owner or tenant) is determined automatically
Verification at individual signer level
The system now verifies at the individual signer level rather than at the global document level:
- If you have already signed: you cannot restart (error 409)
- If the document is fully signed: you cannot restart (error 409)
- If a signature is in progress for you: you must wait (error 409)
- If another signer has signed: you can continue the process (partial restart allowed)
Partial restart
If only one signer has signed, the other signer can initiate a new signature. This allows continuing the process even if one signer has already completed their signature.
PDF generation
Generates the PDF, creates signature requests for all signers (owner + tenants).
path Parameters
lease_idLease ID
Initiate signature for a specific lease › Responses
Signature initiated successfully
document_signature_idUnique ID of the signature process
event_idUnique event ID for traceability
pdf_urlAbsolute URL of the PDF document to sign
media_idReference to the media table (PDF document)
List of created signature requests
statusStatus of the document signature process
Signature status of a lease
Retrieves the signature status for this specific lease. This route fetches the latest document_signature for the lease and queries DO Global to obtain the current state of the signature.
path Parameters
lease_idLease ID
Signature status of a lease › Responses
Status retrieved successfully
lease_idLease ID
document_signature_idSignature process ID
Signature state from DO Global (dynamic structure)
Status of a specific signature document
Retrieves the detailed status of a signature process by its ID in the context of a lease
path Parameters
lease_idLease ID
document_signature_idSignature process ID
Status of a specific signature document › Responses
Status retrieved successfully
document_signature_idSignature process ID
event_idUnique ID for traceability
pdf_urlPDF document URL
media_idReference to the media table
List of signature requests
statusStatus of the document signature process
Request a signature - Send an OTP via SMS
Initiates the signature process for the authenticated user by sending an OTP code via SMS.
Signature flow
- The user captures their signature image (handwritten drawing)
- The image is encoded in base64 and sent with this endpoint
- The system identifies the user via their JWT and verifies they are a signer of the lease
- A 6-digit OTP code is sent via SMS to the registered phone number
- The code expires after 5 minutes
User identification
The system automatically identifies the user as a signer via:
- The
auth_user_idextracted from the JWT (claimsub) - Matching with an
owner_idorlessee_idin the database
Prerequisites
- The user must be authenticated and be a signer of the lease
- The signature process must have been initiated (
/signature/initiate) - The signer must have a valid registered phone number
Signature image
The image must be:
- Encoded in base64
- PNG or JPEG format recommended
- Reasonable size (< 500KB after encoding)
path Parameters
lease_idUUID identifier of the lease
Request a signature - Send an OTP via SMS › Request Body
document_signature_idUnique identifier of the signature process.
Obtained during initiation via /signature/initiate.
Handwritten signature data
Request a signature - Send an OTP via SMS › Responses
OTP code sent successfully via SMS
successIndicates whether the sending was successful
messageConfirmation message
expires_atOTP code expiration date (typically 5 minutes)
phone_hintPhone number hint (partially masked)
Validate OTP and apply electronic signature
Validates the OTP code received via SMS and applies the electronic signature to the PDF document.
Validation flow
- The user enters the 6-digit OTP code received via SMS
- The system verifies that the code is valid and not expired
- If valid, the signature (previously captured image) is applied to the PDF
- The signer's status changes to
COMPLETED - If all signers have signed, the final document is generated
User identification
The system automatically identifies the user as a signer via:
- The
auth_user_idextracted from the JWT (claimsub) - Matching with an
owner_idorlessee_idin the database - Verification that this user is indeed a signer of the lease
OTP code expiration
The OTP code expires after 5 minutes. If the code has expired, the user must
request a new code via /signature/request.
Final document
When all signers have validated their signature:
- The signed PDF is generated with all signatures
- The signed PDF URL is returned in
signed_pdf_url - The document status changes to
COMPLETED - A notification is sent to all signers
path Parameters
lease_idUUID identifier of the lease
Validate OTP and apply electronic signature › Request Body
document_signature_idUnique identifier of the signature process. Must match the one used during the signature request.
otp^\d{6}$ · required6-digit OTP code received via SMS.
Format: Exactly 6 digits (0-9) Validity: 5 minutes after sending Attempts: Maximum 3 attempts before temporary lockout
Validate OTP and apply electronic signature › Responses
Signature applied successfully
successIndicates whether the signature was applied
messageConfirmation message
document_signature_idSignature process ID
signer_statusNew signer status
document_statusOverall document status after this signature
remaining_signersNumber of remaining signers
signed_pdf_urlSigned PDF URL (available only if all signers have signed)
Process a signature event for a lease
Processes a signature request event received from the notifier function in the context of a specific lease
path Parameters
lease_idLease ID
Process a signature event for a lease › Request Body
Base event for Scaleway Topics
document_signature_idSignature process ID
lease_idLease ID
Signer information
document_urlURL of the PDF document to sign
signature_urlURL to access the signature
expires_atSignature request expiration date
Process a signature event for a lease › Responses
Event processed successfully
statusevent_idThe processed event ID
document_signature_idlease_idsigner_emailsigner_typeSigner type
Cancel a signature request
Cancels an ongoing signature request and resets the lease to DRAFT status.
This operation allows re-initiating a signature after cancellation.
Action performed
This operation performs the following steps:
- Marks the document as
CANCELLEDin DO Global (signature orchestrator) - Marks all signers as
CANCELLEDin DO Global - Marks the document as
FAILEDin the database (allows re-initiation) - Marks all ongoing signature requests as
FAILED(Pending, OtpSent, Signing) - Resets the lease to
DRAFTstatus
Re-initiation possible
After a cancellation, you can re-initiate a new signature via /signature/initiate.
The system detects that the previous document is in FAILED status and allows re-initiation.
Difference with reset
Unlike /reset, this operation:
- Preserves history: Documents and signature requests remain in the database with
FAILEDstatus - Marks as failed: The status is changed to
FAILEDin the DB (andCANCELLEDin DO Global) - Allows auditing: Previous attempts remain visible for traceability
- Allows re-initiation: A new signature process can be initiated immediately
Use cases
Use this operation when:
- You have detected an error in the contract before sending
- You want to correct the document and re-initiate
- You need to preserve the history of attempts
- The tenant is not responding and you want to re-initiate after correction
Prerequisites
- The lease must be in
PENDING_SIGNATUREstatus - A signature document must exist
- The user must have the
LeasesWritepermission
path Parameters
lease_idLease ID
Cancel a signature request › Responses
Signature cancelled successfully
successIndicates whether the cancellation succeeded
messageConfirmation message
document_signature_idCancelled signature document ID
Fully reset a signature
Completely resets all signatures for a lease by deleting all traces. This operation allows starting from scratch without keeping any history.
Action performed
This operation performs the following steps:
- Deletes the signature document in DO Global (signature orchestrator)
- Deletes all signature requests in the database
- Deletes the signature document in the database
- Resets the lease to
DRAFTstatus
Consequences
- All signature data is deleted (no history retained)
- The lease can be re-initiated for a new signature
- Previously generated PDFs remain in the media system but are no longer linked
- No trace of the previous attempt is retained
Difference with cancel
Unlike /cancel, this operation:
- Completely deletes: All data is deleted (no retention)
- No history: No trace of the previous attempt
- Start from scratch: As if no signature was ever initiated
Use cases
Use this operation when:
- The tenant is not responding after several days and you want to start from scratch
- You need to completely delete an erroneous attempt
- You want a new signature process without history
- A major contract change requires a new document
Prerequisites
- The lease must be in
PENDING_SIGNATUREstatus - The user must have the
LeasesWritepermission
path Parameters
lease_idLease ID
Fully reset a signature › Responses
Signature reset successfully
successIndicates whether the reset succeeded
messageConfirmation message
Resend signature request for a signer
Resends the signature request for a specific signer (owner or tenant).
Action performed
This operation:
- Resets the signer's status to
PENDING - Resets notification counters
- Sends a new INITIAL notification (SMS/Email) to the signer
- Allows a new signature attempt for this signer only
Use cases
- A signer did not receive the initial notification
- A signer needs a new link to sign
- Reset after a signature error for a single signer
Prerequisites
- The lease must be in
PENDING_SIGNATUREstatus - A signature document must exist
- The specified signer must exist in the signature requests
- The user must have the
LeasesWritepermission
Note
This operation only affects the specified signer. Other signers retain their current status.
path Parameters
lease_idLease ID
signer_typeSigner type for which to resend the request
Signer type
Resend signature request for a signer › Responses
Signature request resent successfully
successIndicates whether the resend succeeded
messageConfirmation message
signer_typeSigner type
resend_countTotal number of resends performed for this signer (including this request)
remaining_resendsNumber of remaining allowed resends (maximum 5 total)