List condition reports
List all condition reports for a lease, with optional filters by type and status.
Permissions required: LeasesRead
path Parameters
lease_idquery Parameters
report_typestatusList condition reports › Responses
List of condition reports
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlsigned_document_urlcreated_atupdated_atCreate a condition report
Create a new condition report (état des lieux) for a lease — either entry or exit.
French law context:
- Loi ALUR art. 3-2 — Mandatory at entry and exit, established contradictorily.
- Décret 2016-382 — Defines required content: room-by-room description, structural elements, equipment, meters, keys.
- Art. 22 loi 89-462 — Without exit report, deposit deductions cannot be justified.
The report is created with DRAFT status and rooms are pre-populated from the estate's existing rooms.
Permissions required: LeasesWrite
path Parameters
lease_idCreate a condition report › Request Body
report_typeType of condition report
report_dateDate the report is conducted
conducted_byName of the person conducting the report
conducted_by_typeRole of the person conducting the report
general_notesGeneral observations about the property
Create a condition report › Responses
Condition report created with pre-populated rooms
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlFilled PDF URL (from generate-pdf)
document_signature_idFK to document_signatures (from initiate-signature)
signed_document_urlSigned PDF URL (from finalize-signature)
created_atupdated_atCompare entry vs exit reports
Returns a structured diff between the entry and exit condition reports for the lease. Computes element-by-element condition changes, wear coefficients (décret 2016-1104), key diffs, and a summary indicating deposit deduction justification.
Used by: POST /leases/{id}/deposit/return to calculate justified deductions (art. 22 loi 89-462).
Permissions required: LeasesRead
path Parameters
lease_idquery Parameters
entry_report_idSpecific entry report ID to compare. If omitted, uses the latest SIGNED/COMPLETED entry report.
exit_report_idSpecific exit report ID to compare. If omitted, uses the latest SIGNED/COMPLETED exit report.
Compare entry vs exit reports › Responses
Structured comparison between entry and exit reports
entry_report_idexit_report_idMeter reading diffs — one entry per lease_meter_id found in either report
Key handover diffs — one entry per estate_key_id found in either report
Get condition report details
Returns the full condition report including room conditions, element conditions, meter snapshots, and key snapshots.
Permissions required: LeasesRead
path Parameters
lease_idreport_idGet condition report details › Responses
Full condition report
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlFilled PDF URL (from generate-pdf)
document_signature_idFK to document_signatures (from initiate-signature)
signed_document_urlSigned PDF URL (from finalize-signature)
created_atupdated_atUpdate condition report metadata
Update metadata of a condition report. Only allowed when status is DRAFT.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idUpdate condition report metadata › Request Body
report_dateconducted_byconducted_by_typegeneral_notesUpdate condition report metadata › Responses
Updated condition report
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlFilled PDF URL (from generate-pdf)
document_signature_idFK to document_signatures (from initiate-signature)
signed_document_urlSigned PDF URL (from finalize-signature)
created_atupdated_atMark condition report as completed
Transitions the report from DRAFT to COMPLETED, locking all observations.
Once completed, room conditions, meter readings, and key handovers cannot be modified.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idMark condition report as completed › Responses
Report marked as completed
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlFilled PDF URL (from generate-pdf)
document_signature_idFK to document_signatures (from initiate-signature)
signed_document_urlSigned PDF URL (from finalize-signature)
created_atupdated_atBatch upsert room element conditions
Record or update structural element conditions for a specific room in the condition report. Uses batch upsert — all elements for the room are submitted at once.
Element types cover the mandatory structural categories from décret 2016-382: floors, walls, ceiling, doors, windows, electrical, plumbing, heating.
Only allowed when the report is in DRAFT status.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idroom_idBatch upsert room element conditions › Responses
Room conditions saved
idroom_idgeneral_notescreated_atupdated_atRecord meter snapshots
Record meter readings as dated snapshots. Does not update the current meter value — uses the snapshot pattern to capture the state at the time of the condition report.
References existing LeaseMeter entities via lease_meter_id.
Only allowed when the report is in DRAFT status.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idRecord meter snapshots › Responses
Meter snapshots recorded
idlease_meter_idreading_valuephoto_media_idMedia ID of meter reading photo
notescreated_atRecord key handover snapshots
Record key delivery/return as dated snapshots. Does not update the current key status — uses the snapshot pattern to capture the handover at the time of the condition report.
References existing EstateKey entities via estate_key_id.
Missing keys at exit (key_diffs.missing > 0) constitute a justified deposit deduction.
Only allowed when the report is in DRAFT status.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idRecord key handover snapshots › Responses
Key snapshots recorded
idestate_key_idquantity_deliveredcondition_notescreated_atGenerate condition report PDF
Generate a filled condition report PDF via AnnexGenerationService.generate_condition_report_pdf(),
which extends the existing generate_edl_annex() method by injecting recorded element conditions,
meter snapshots, and key snapshots into the Typst template (etat_des_lieux.typ).
Equipment and inventory data are auto-captured from current state via EquipmentPort and
RoomInventoryPort — no separate endpoints needed.
Meter readings are resolved via the lease_meter → meter → meter.type chain to map to the
template's meter_readings: {electricity, gas, cold_water, hot_water} contract.
The generated PDF follows décret 2016-382 format requirements.
Note: This produces a filled PDF (from recorded observations). The existing system annex
"etat_des_lieux" (via download_lease_annex) continues to produce a blank PDF for on-site use.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idGenerate condition report PDF › Responses
PDF generated, document_url updated
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlFilled PDF URL (from generate-pdf)
document_signature_idFK to document_signatures (from initiate-signature)
signed_document_urlSigned PDF URL (from finalize-signature)
created_atupdated_atInitiate eIDAS signature
Initiate the contradictory electronic signature process for the condition report.
Prerequisites:
- Report must be in
COMPLETEDstatus (observations locked) document_urlmust be set (PDF generated via endpoint #11)
Flow (reuses existing signature system):
- Uploads the filled PDF to Media system (security_level =
Critical, entity_type =ConditionReport) - Creates a
DocumentSignaturerecord withdocument_type = "CONDITION_REPORT" - Creates
SignatureRequestfor the owner (Proprietaire) and each tenant (Locataire) - Sends signature requests to DO Global (external eIDAS provider)
- Publishes notification events (same pattern as lease/amendment signatures)
- Stores
document_signature_idon the condition report
Each party signs via OTP (same flow as lease signatures).
Legal context: Art. 3-2 loi ALUR — L'état des lieux est établi contradictoirement. eIDAS art. 25 — La signature électronique avancée constitue une preuve recevable.
Permissions required: LeasesWrite
path Parameters
lease_idreport_idInitiate eIDAS signature › Request Body
initiator_idUUID of the person initiating the signature (owner or agent)
initiator_signer_typeSigner type of the initiator (defaults to PROPRIETAIRE)
Initiate eIDAS signature › Responses
Signature process initiated
document_signature_idmedia_idPDF uploaded to media system (Critical security level)
statusFinalize signature
Finalize the signature process after all parties have signed.
Flow:
- Verifies all
SignatureRequestrecords are inCompletedstatus - Retrieves the signed PDF (
signed_media_id) from theDocumentSignature - Updates the condition report:
signed_document_url, status →SIGNED - Generates eIDAS proof archive (JSON + PDF) if configured
Permissions required: LeasesWrite
path Parameters
lease_idreport_idFinalize signature › Responses
Signature finalized, report status → SIGNED
idlease_idreport_typereport_datestatusconducted_byconducted_by_typegeneral_notesdocument_urlFilled PDF URL (from generate-pdf)
document_signature_idFK to document_signatures (from initiate-signature)
signed_document_urlSigned PDF URL (from finalize-signature)
created_atupdated_at