YouSign Document Analysis API

Analyze a document and extract structured data.

OpenAPI Specification

yousign-document-analysis-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  contact:
    email: contact@yousign.com
    name: Support
    url: https://yousign.com/contact
  description: Build the best experience of digital signature through your own platform. Increase your conversion rates, leverage your data and reduce your costs with Yousign API.
  license:
    name: proprietary
    url: https://yousign.com/terms
  title: Public Api v3 Applicant Document Analysis API
  version: '3.0'
servers:
- description: Sandbox URL
  url: https://api-sandbox.yousign.app/v3
- description: Production URL
  url: https://api.yousign.app/v3
security:
- bearerAuth: []
tags:
- description: Analyze a document and extract structured data.
  name: Document Analysis
paths:
  /document_analyses:
    get:
      description: 'Returns the list of all Document Analyses within your organization.

        You can limit the number of items returned by using filters and pagination.

        Consult our [guide](https://developers.yousign.com/docs/document-analysis) for more details and examples.

        '
      operationId: get-document_analyses
      parameters:
      - description: After cursor (pagination)
        in: query
        name: after
        required: false
        schema:
          minLength: 1
          type: string
      - description: The limit of items count to retrieve.
        in: query
        name: limit
        required: false
        schema:
          default: 100
          maximum: 100
          minimum: 1
          type: integer
      - description: 'Filter by `status`. Allowed operators: `eq`.

          Example: `status[eq]=done`

          '
        example:
          eq:
          - done
        explode: true
        in: query
        name: status
        required: false
        schema:
          description: Filter by status.
          minProperties: 1
          type: object
        style: deepObject
      - description: 'Filter by `type`. Allowed operators: `eq`.

          Example: `type[eq]=social_security`

          '
        example:
          eq:
          - social_security
        explode: true
        in: query
        name: type
        required: false
        schema:
          description: Filter by type.
          minProperties: 1
          type: object
        style: deepObject
      - description: 'Filter by `workspace_id`. Allowed operators: `eq`.

          Example: `workspace_id[eq]=9b6ed2f3-244f-487a-baa1-bbe4f51c8748`

          '
        example:
          eq:
          - 9b6ed2f3-244f-487a-baa1-bbe4f51c8748
        explode: true
        in: query
        name: workspace_id
        required: false
        schema:
          description: Filter by workspace_id.
          minProperties: 1
          type: object
        style: deepObject
      - description: 'Filter by `workflow_session_id`. Allowed operators: `eq`.

          Example: `workflow_session_id[eq]=18a5e211-ff33-48e2-810c-a0397b558611`

          '
        example:
          eq:
          - 18a5e211-ff33-48e2-810c-a0397b558611
        explode: true
        in: query
        name: workflow_session_id
        required: false
        schema:
          description: Filter by workflow_session_id.
          minProperties: 1
          type: object
        style: deepObject
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get_document_analyses_200_response'
          description: OK
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Access unauthorized
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Access forbidden
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '405':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodNotAllowed'
          description: This method is not allowed
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
            Retry-After:
              $ref: '#/components/headers/retry-after'
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests, please try again later.
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
            Retry-After:
              $ref: '#/components/headers/retry-after'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
      summary: List Document Analyses
      tags:
      - Document Analysis
    post:
      description: "Initiate a new Document Analysis to extract data from a given document type.\n\nRelated guide: [Document Analysis](https://developers.yousign.com/docs/document-analysis)\n\n**ℹ️ This endpoint accepts two request body formats — pick the one that matches your use case:**\n- \U0001F4C1 `multipart/form-data` — upload a binary file containing the document to analyse.\n- \U0001F4DD `application/json` — reference an existing Workflow Session Applicant by ID.\n\n**\U0001F50E Analysis type (`analysis_type`)**\n- `extraction: true` (default): data is extracted from the document. A document `type` is **required**. Optionally set `fraud_level` to `advanced` to also run fraud detection (not supported for `tax_notice`).\n- `extraction: false` (fraud-only): no data extraction. `type` must be omitted and `fraud_level` must be `advanced`.\n\nOn `multipart/form-data`, `analysis_type` is sent as form fields (`analysis_type[extraction]`, `analysis_type[fraud_level]`) and `extraction` is a string (`\"true\"`/`\"false\"`).\n\n**\U0001F513 Endpoint access**\n- Environments: `production`, `sandbox`\n- API key scopes: `organization`, `workspace`\n- Plans: `pro`, `scale`\n- Add-ons (for production access):\n  - For extraction only `Document Analysis`\n  - For Fraud Detection and Extraction `Document Trust Advanced`\n"
      operationId: post-document_analyses
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateDocumentAnalysisFromApplicant'
          multipart/form-data:
            encoding:
              checks:
                explode: true
                style: deepObject
              analysis_type:
                explode: true
                style: deepObject
            schema:
              $ref: '#/components/schemas/InitiateDocumentAnalysisFromMultipart'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/post_document_analyses_201_response'
          description: OK
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad request
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Access unauthorized
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Access forbidden
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Resource not found
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '405':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodNotAllowed'
          description: This method is not allowed
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
            Retry-After:
              $ref: '#/components/headers/retry-after'
        '415':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnsupportedMediaTypeResponse'
          description: UnsupportedMediaType
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsResponse'
          description: Too Many Requests, please try again later.
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
            Retry-After:
              $ref: '#/components/headers/retry-after'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/rateLimit-limit'
            X-RateLimit-Limit-Hour:
              $ref: '#/components/headers/rateLimit-limit-hour'
            X-RateLimit-Limit-Minute:
              $ref: '#/components/headers/rateLimit-limit-minute'
            RateLimit-Remaining:
              $ref: '#/components/headers/rateLimit-remaining'
            X-RateLimit-Remaining-Hour:
              $ref: '#/components/headers/rateLimit-remaining-hour'
            X-RateLimit-Remaining-Minute:
              $ref: '#/components/headers/rateLimit-remaining-minute'
            RateLimit-Reset:
              $ref: '#/components/headers/rateLimit-reset'
      summary: Initiate a new Document Analysis
      tags:
      - Document Analysis
      x-readme:
        explorer-enabled: false
  /document_analyses/{documentAnalysisId}:
    get:
      description: Get the detailed results of a Document Analysis.
      operationId: get-document_analyses-id
      parameters:
      - description: Document Analysis Id
        in: path
        name: documentAnalysisId
        required: true
        schema:
          $ref: '#/components/schemas/UUID'
      responses:
        '200':
          content:
            application/json:
              examples:
                social_security:
                  summary: Social Security
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: null
                    data_anonymized: false
                    applicant_id: null
                    type: social_security
                    extracted_from_document:
                      social_security_number: '1234567890123'
                      first_name: John
                      last_name: Doe
                      full_name: John Doe
                      document_type: Carte vitale
                    checks:
                      full_name:
                        extracted: John Doe
                        expected: John Doe
                        match_level: exact
                company_certificate:
                  summary: Company Certificate
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: null
                    data_anonymized: false
                    applicant_id: null
                    type: company_certificate
                    extracted_from_document:
                      verification_number: '1234567890123'
                      company_name: Acme
                      company_number: '1234567890'
                      registered_address: 1 rue de la paix, 75000 Paris
                      issuance_date: '2025-01-01'
                      legal_representatives:
                      - type: natural_person
                        first_name: John
                        last_name: Doe
                        full_name: John Doe
                        function: Président
                        company_name: null
                        company_number: null
                      - type: legal_person
                        first_name: null
                        last_name: null
                        full_name: null
                        company_name: Acme Studio
                        company_number: 0987654321
                        function: Dirigeant
                      document_type: KBIS
                    checks:
                      legal_representatives:
                      - full_name:
                          extracted: John Doe
                          expected: John Doe
                          match_level: exact
                business_registration_certificate:
                  summary: Business Registration Certificate
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: null
                    data_anonymized: false
                    applicant_id: null
                    type: business_registration_certificate
                    extracted_from_document:
                      issuance_date: '2025-01-01'
                      company_description:
                        active: true
                        legal_form: Entreprise individuelle
                        company_name: null
                        company_number: 123 4567 890
                        headquarter_company_number: 123 4567 890 12345
                        first_name: John
                        last_name: Doe
                        full_name: John Doe
                      branch_description:
                        active: true
                        branch_company_number: 123 4567 890 12345
                        address: 1 rue de la paix, 75000 Paris
                        city: Paris
                        postal_code: '75000'
                      document_type: Avis de situation
                    checks:
                      full_name:
                        extracted: John Doe
                        expected: John Doe
                        match_level: exact
                driver_licence:
                  summary: Driver Licence
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: null
                    data_anonymized: false
                    applicant_id: null
                    type: driver_licence
                    extracted_from_document:
                      first_name: John
                      last_name: Doe
                      full_name: John Doe
                      born_on: '1990-01-15'
                      expired_on: '2030-12-31'
                      license_type:
                      - B
                      - A1
                      document_type: Permis de conduire français (nouveau format)
                    checks:
                      full_name:
                        extracted: John Doe
                        expected: John Doe
                        match_level: exact
                rne_certificate:
                  summary: RNE Certificate
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: null
                    data_anonymized: false
                    applicant_id: null
                    type: rne_certificate
                    extracted_from_document:
                      company_name: ACME Corp
                      company_number: '123456789'
                      registered_address: 1 rue de la paix, 75000 Paris
                      issuance_date: '2024-01-15'
                      legal_representatives:
                      - type: natural_person
                        first_name: John
                        last_name: Doe
                        full_name: John Doe
                        function: President
                        company_name: null
                        company_number: null
                      - type: legal_person
                        first_name: null
                        last_name: null
                        full_name: null
                        company_name: ACME Studio
                        company_number: 0987654321
                        function: Statutory Auditor
                      document_type: Attestation RNE
                    checks:
                      legal_representatives:
                      - full_name:
                          extracted: John Doe
                          expected: John Doe
                          match_level: exact
                temporary_vehicle_registration_document:
                  summary: Temporary Vehicle Registration Document (IT)
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: IT
                    data_anonymized: false
                    applicant_id: null
                    type: temporary_vehicle_registration_document
                    extracted_from_document:
                      vehicle_category: M1
                      vehicle_license_number: DH000SJ
                      vehicle_identification_number: ZFA19900001244827
                      vehicle_purpose: PROPRIO
                      vehicle_first_registration_year: '2018'
                      vehicle_owner_information:
                        vehicle_owner_full_name: DOE JOHN
                        vehicle_owner_birth_date: '1985-06-15'
                        vehicle_owner_address: VIA ROMA 10, 00100 ROMA RM
                      other_details: Veicolo ad uso privato
                      issuance_date: '2024-03-15'
                      document_reason: PASSAGGIO DI PROPRIETA
                      document_recipient_information:
                        document_recipient_full_name: DOE JOHN
                        document_recipient_address: VIA ROMA 10, 00100 ROMA RM
                        document_recipient_birth_date: '1985-06-15'
                        document_recipient_birth_city: ROMA
                    checks:
                      vehicle_owner:
                        owner_name:
                          extracted: DOE JOHN
                          expected: Doe John
                          match_level: exact
                vehicle_registration_document_fr:
                  summary: French Vehicle Registration Document
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440000
                    workspace_id: 9a93d3b5-fb3b-4abf-9e70-26315b33506c
                    workflow_session_id: null
                    previous_attempt_id: null
                    created_at: '2024-01-18T22:59:00+00:00'
                    updated_at: '2024-01-18T22:59:00+00:00'
                    status: done
                    status_codes: []
                    country_code: FR
                    data_anonymized: false
                    applicant_id: null
                    type: vehicle_registration_document
                    extracted_from_document:
                      licence_plate_number: AB-123-CD
                      first_registration_date: '2020-01-15'
                      owner_information:
                        owner_full_name: John Doe
                        owner_address: 1 rue de la Paix, 75001 Paris
                        owner_type: natural_person
                      co_owner_information: []
                      vehicle_information:
                        vehicle_brand: Renault
                        vehicle_version: null
                        vehicle_model: Clio
                      vehicle_identification_number: VF1AB000012345678
                      vehicle_max_weight: 1800
                      vehicle_motor_information:
                        vehicle_fuel_type: Essence
                        vehicle_fiscal_power: 6
                        vehicle_max_power: 96
                        vehicle_power: 74
                      document_number: 2020AB12345
                      issuance_date: '2020-01-20'
                      vehicle_next_inspection_date: '2024-01-20'
                      mrz_line_1:

# --- truncated at 32 KB (149 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/yousign/refs/heads/main/openapi/yousign-document-analysis-api-openapi.yml