---
title: "Get eIDAS signature proof"
method: GET
path: "/leases/{lease_id}/signature/proof"
tags: ["Signatures", "Leases"]
---

# Get eIDAS signature proof

`GET /leases/{lease_id}/signature/proof`

## Request

- Base URL: `https://api.faireplace.com/api`
- URL: `https://api.faireplace.com/api/leases/{lease_id}/signature/proof`
- Auth: HTTP bearer

Retrieves the eIDAS-compliant signature proof certificate for a signed lease.

The proof contains:
- **Document information**: hashes, media IDs, page count
- **Signer evidence**: identity, OTP validation timestamps, IP addresses, cryptographic details
- **Audit trail**: chronological event log of the entire signing process
- **Compliance info**: eIDAS level, signature format (PAdES), ETSI standard, hash algorithm

## Proof statuses
- `NOT_AVAILABLE`: Proof not yet generated
- `GENERATING`: Proof is being generated
- `AVAILABLE`: Proof is ready (includes `pdf_url` and `json_url`)
- `ERROR`: Proof generation failed

## Path parameters

- `lease_id` string, uuid, required

## Response `200`

Signature proof retrieved

- SignatureProofResponse
  - `status` 'NOT_AVAILABLE' | 'GENERATING' | 'AVAILABLE' | 'ERROR': Status of the signature proof generation
  - `proof` SignatureProofDto
    - `version` string
    - `proof_id` string
    - `generated_at` string, date-time
    - `document` ProofDocumentDto
      - `document_signature_id` string
      - `lease_id` string, nullable
      - `original_document_hash` string, nullable
      - `signed_document_hash` string, nullable
      - `original_media_id` string, nullable
      - `signed_media_id` string, nullable
      - `page_count` integer, nullable
      - `created_at` string, nullable
      - `completed_at` string, nullable
    - `signers` SignerEvidenceDto[]
      - `signer_type` string
      - `identity` object
        - `email` string
        - `phone` string
        - `first_name` string, nullable
        - `last_name` string, nullable
      - `process` object
        - `notification_sent_at` string, nullable
        - `otp_requested_at` string, nullable
        - `otp_sent_at` string, nullable
        - `otp_validated_at` string, nullable
        - `signature_completed_at` string, nullable
        - `ip_address` string, nullable
        - `user_agent` string, nullable
        - `country_code` string, nullable
      - `cryptographic` object
        - `signature_hash` string, nullable
        - `dss_session_id` string, nullable
        - `dss_signature_id` string, nullable
        - `certificate_issuer` string, nullable
    - `audit_trail` AuditEventDto[]
      - `timestamp` string, date-time
      - `event_type` string
      - `actor_type` string
      - `description` string
      - `ip_address` string, nullable
    - `compliance` ComplianceInfoDto: What the signed file actually carries. Neither field is a constant: both are derived from the file at the moment the proof is generated, so the proof states what it can defend rather than what was aimed for.
      - `eidas_level` 'ADVANCED' | 'SIMPLE': Derived from the four conditions of eIDAS Article 26. `ADVANCED` requires every signer to have validated their one-time code and to carry their own signature hash, plus a sealed document whose later modification is detectable. Anything short of that is `SIMPLE`, which Article 25.1 still recognises as legally effective.
      - `signature_format` 'PAdES-B-LTA' | 'PAdES-B-T' | 'PAdES-B-B': The PAdES level the file really carries, per ETSI EN 319 142-1. Note that `PAdES-B-LTV` is Adobe vocabulary and is not a level of the standard: it is never returned. The nominal outcome is `PAdES-B-LTA`. It degrades when a dependency is unavailable at signing time, and the proof says so rather than over-promising.
      - `etsi_standard` string: ETSI standard reference
      - `hash_algorithm` string: Hash algorithm used (e.g., SHA-256)
      - `retention_years` integer: Document retention period in years
  - `message` string, nullable
  - `pdf_url` string, nullable: URL to download the proof as PDF
  - `json_url` string, nullable: URL to download the proof as JSON

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `500`: Internal Server Error

---

[API](https://skmtc.dev/faireplace/apis/faireplace-property-management-api.md) · [All operations](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/revisions/69de39762919?raw)
