> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veridox.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get File Analysis

> Retrieve comprehensive analysis results and risk assessment for a specific file.

Retrieve comprehensive analysis results for a specific file, including signed download URLs for the original file, thumbnail, PDF analysis report, and detailed logs. The file must belong to a case owned by the authenticated user.

## Analysis Engines

The Veridox platform runs multiple analysis engines to provide a complete forensic view:

* **Context Analysis**: Extracts metadata and classifies the document type.
* **Image Metadata**: Analyses EXIF/JFIF data for indicators of tampering or source verification.
* **Tampering Detection**: Uses advanced computer vision to identify pixel-level anomalies and digital edits.
* **AI Summary**: Provides a high-level, human-readable summary of the combined findings.

## Highlights

The `highlights` field contains a plain list of key findings summarising the most significant indicators from the analysis. It is omitted from the response when the analysis did not produce any highlights.

## Module Evidence

Each module in `full_analysis.modules` reports its findings together with the evidence supporting them:

* **`findings`** — structured findings, each with an `alert_type`, a `severity` (`Informational`, `Low`, `Medium`, or `High`), a `description`, a `severity_justification`, an `evidence` list, and `evidence_refs`.
* **`search_evidence`** (object or `null`) — the search and grounding queries run for the module, with their `results` and any `failures`.
* **`verification_evidence`** (object or `null`) — reserved for registry verification checks; currently always `null`.

A finding's `evidence_refs` are IDs that resolve back into the module's evidence: IDs like `q1.0` match a `result_id` in `search_evidence.results`, and IDs like `v1` match a `check_id` in `verification_evidence.checks`. The top-level `full_analysis.search_evidence_summary` is a cross-module roll-up of the same queries and results, keyed by `module_id`.

<Info>`search_evidence_summary` and a query's `answer` field may be `null`, and are absent on analyses produced before these fields existed. Treat both as optional.</Info>

## Best Practices

1. **URL Expiration**: Download URLs for assets (original file, PDF report, logs) are time-limited for security. Ensure you download or display them promptly after retrieval.
2. **Wait for Completion**: This endpoint provides the most value after a file's `analysis_status` has reached `settled`.
3. **Security**: Never expose the signed download URLs in client-side code or public environments.


## OpenAPI

````yaml GET /files/{fileId}/analysis
openapi: 3.1.0
info:
  title: Veridox Core API
  description: Veridox Core Platform API
  version: 0.0.1
  contact: {}
servers:
  - url: https://api.uk.veridox.ai
    description: Live (UK)
  - url: https://api.ca.veridox.ai
    description: Live (CA)
security: []
tags:
  - name: Status
    description: System status and health check endpoints
  - name: Cases
    description: Case and case file management
  - name: Organisations
    description: Organisation management
  - name: Document Requests
    description: Document request management
  - name: Search
    description: Search functionality
  - name: Admin
    description: Administrative endpoints
paths:
  /files/{fileId}/analysis:
    get:
      tags:
        - Case Files
      summary: Get file analysis details
      description: >-
        Returns comprehensive analysis results for a specific file, including
        signed download URLs for the file and thumbnail (if available). The file
        must be owned by the authenticated user. SAS URLs expire after a
        configured time period (60 minutes for files, 30 minutes for
        thumbnails).
      operationId: CaseFilesController_getFileAnalysis
      parameters:
        - name: fileId
          required: true
          in: path
          description: File ID
          schema:
            type: string
      responses:
        '200':
          description: File analysis retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileAnalysisDetailResponseDto'
        '401':
          description: Unauthorized (invalid or missing authentication token)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
        '404':
          description: File not found or not owned by user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
        '429':
          description: Too many requests (rate limit exceeded)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDto'
      security:
        - api-key: []
components:
  schemas:
    FileAnalysisDetailResponseDto:
      type: object
      properties:
        file_id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$
          x-nestjs_zod-uses-3-point-1-syntax: true
        case_id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$
          x-nestjs_zod-uses-3-point-1-syntax: true
        label:
          anyOf:
            - type: string
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        mime_type:
          anyOf:
            - type: string
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        file_download_url:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        file_download_url_expires_at:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        thumbnail_url:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        pdf_report_url:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        log_output_url:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        ela_overlay_url:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        reverse_search:
          anyOf:
            - type: object
              properties:
                matches:
                  anyOf:
                    - {}
                    - type: 'null'
                total:
                  type: number
              required:
                - matches
                - total
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        file_info:
          anyOf:
            - type: object
              properties:
                md5:
                  anyOf:
                    - type: string
                    - type: 'null'
                metadata:
                  anyOf:
                    - type: object
                      propertyNames:
                        type: string
                      additionalProperties: {}
                    - type: 'null'
              required:
                - md5
                - metadata
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        analysis_status:
          type: string
          enum:
            - waiting_for_upload
            - processing
            - settled
          x-nestjs_zod-uses-3-point-1-syntax: true
        analysis_outcome:
          anyOf:
            - type: string
              enum:
                - success
                - failed
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        current_analysis_phase:
          anyOf:
            - type: string
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        current_risk_score:
          anyOf:
            - type: string
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        highlights:
          type: array
          items:
            type: string
          x-nestjs_zod-uses-3-point-1-syntax: true
        caveats:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              severity:
                type: string
                enum:
                  - info
                  - warn
                  - critical
              title:
                type: string
              message:
                type: string
              scope:
                type: string
                enum:
                  - document
                  - finding
              affected_modules:
                anyOf:
                  - type: array
                    items:
                      type: string
                  - type: 'null'
              affected_findings:
                anyOf:
                  - type: array
                    items:
                      type: string
                  - type: 'null'
            required:
              - type
              - severity
              - title
              - message
              - scope
          x-nestjs_zod-uses-3-point-1-syntax: true
        analysis_results:
          anyOf:
            - type: object
              properties:
                context_analysis:
                  anyOf:
                    - type: object
                      properties:
                        mime_type:
                          anyOf:
                            - type: string
                            - type: 'null'
                        format_classification:
                          anyOf:
                            - type: string
                            - type: 'null'
                        file_category:
                          anyOf:
                            - type: string
                            - type: 'null'
                        summary:
                          anyOf:
                            - type: string
                            - type: 'null'
                        classifications:
                          type: array
                          items:
                            type: object
                            properties:
                              category:
                                type: string
                              custom_guess:
                                type: string
                            required:
                              - category
                        contains_embedded_images:
                          type: boolean
                        key_details:
                          type: object
                          properties:
                            persons:
                              type: array
                              items:
                                type: string
                            organisations:
                              type: array
                              items:
                                type: string
                            locations:
                              type: array
                              items:
                                type: string
                            dates:
                              type: array
                              items:
                                type: string
                            reference_numbers:
                              type: array
                              items:
                                type: string
                          required:
                            - persons
                            - organisations
                            - locations
                            - dates
                            - reference_numbers
                        c2pa_detected:
                          type: boolean
                        metadata_tags:
                          type: object
                          propertyNames:
                            type: string
                          additionalProperties: {}
                        metadata_tags_count:
                          type: number
                      required:
                        - mime_type
                        - format_classification
                        - file_category
                        - summary
                        - classifications
                        - contains_embedded_images
                        - key_details
                        - c2pa_detected
                        - metadata_tags
                        - metadata_tags_count
                    - type: 'null'
                image_metadata:
                  anyOf:
                    - type: object
                      properties:
                        risk_score:
                          anyOf:
                            - type: string
                            - type: 'null'
                        summary:
                          anyOf:
                            - type: string
                            - type: 'null'
                        findings:
                          type: array
                          items:
                            type: object
                            properties:
                              alert_type:
                                type: string
                              description:
                                type: string
                              severity:
                                type: string
                              evidence:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    source:
                                      type: string
                                    tag_or_assertion:
                                      type: string
                                    value:
                                      type: string
                                    explanation:
                                      type: string
                                  required:
                                    - source
                                    - tag_or_assertion
                                    - value
                                    - explanation
                            required:
                              - alert_type
                              - description
                              - severity
                              - evidence
                        c2pa_detected:
                          type: boolean
                        metadata_tags:
                          type: object
                          propertyNames:
                            type: string
                          additionalProperties: {}
                        metadata_tags_count:
                          type: number
                      required:
                        - risk_score
                        - summary
                        - findings
                        - c2pa_detected
                        - metadata_tags
                        - metadata_tags_count
                    - type: 'null'
                document_metadata:
                  anyOf:
                    - type: object
                      properties:
                        risk_score:
                          anyOf:
                            - type: string
                            - type: 'null'
                        summary:
                          anyOf:
                            - type: string
                            - type: 'null'
                        findings:
                          type: array
                          items: {}
                        metadata_tags:
                          type: object
                          propertyNames:
                            type: string
                          additionalProperties: {}
                        metadata_tags_count:
                          type: number
                      required:
                        - risk_score
                        - summary
                        - findings
                        - metadata_tags
                        - metadata_tags_count
                    - type: 'null'
                image_tampering:
                  anyOf:
                    - type: object
                      properties:
                        confidence_map_url:
                          anyOf:
                            - type: string
                              format: uri
                            - type: 'null'
                        local_map_url:
                          anyOf:
                            - type: string
                              format: uri
                            - type: 'null'
                        findings:
                          type: array
                          items: {}
                        risk_score:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - confidence_map_url
                        - local_map_url
                        - findings
                        - risk_score
                    - type: 'null'
                document_consistency:
                  anyOf:
                    - type: object
                      properties:
                        annotated_pdf_url:
                          anyOf:
                            - type: string
                              format: uri
                            - type: 'null'
                      required:
                        - annotated_pdf_url
                    - type: 'null'
                ela:
                  anyOf:
                    - type: object
                      properties:
                        overlay_url:
                          anyOf:
                            - type: string
                              format: uri
                            - type: 'null'
                        findings:
                          type: array
                          items: {}
                        risk_score:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - overlay_url
                        - findings
                        - risk_score
                    - type: 'null'
                noise:
                  anyOf:
                    - type: object
                      properties:
                        overlay_url:
                          anyOf:
                            - type: string
                              format: uri
                            - type: 'null'
                        findings:
                          type: array
                          items: {}
                        risk_score:
                          anyOf:
                            - type: string
                            - type: 'null'
                      required:
                        - overlay_url
                        - findings
                        - risk_score
                    - type: 'null'
                reverse_search:
                  anyOf:
                    - type: object
                      properties:
                        results:
                          type: array
                          items: {}
                      required:
                        - results
                    - type: 'null'
                full_analysis:
                  anyOf:
                    - type: object
                      properties:
                        overall_risk_score:
                          anyOf:
                            - type: string
                            - type: 'null'
                        summary:
                          anyOf:
                            - type: string
                            - type: 'null'
                        findings:
                          type: array
                          items:
                            type: object
                            properties:
                              category:
                                type: string
                              heading:
                                type: string
                              description:
                                type: string
                              supporting_evidence:
                                type: array
                                items:
                                  type: string
                              alert_type:
                                anyOf:
                                  - type: string
                                  - type: 'null'
                            required:
                              - category
                              - heading
                              - description
                              - supporting_evidence
                        observations:
                          type: array
                          items:
                            type: string
                        risk_assessments:
                          type: array
                          items:
                            type: object
                            properties:
                              target:
                                type: string
                              risk_level:
                                type: string
                              summary:
                                type: string
                              justification:
                                type: string
                            required:
                              - target
                              - risk_level
                              - summary
                              - justification
                        suggested_actions:
                          type: array
                          items:
                            type: object
                            properties:
                              action:
                                type: string
                              justification:
                                type: string
                            required:
                              - action
                              - justification
                        audit_trail:
                          type: array
                          items:
                            type: string
                        search_evidence_summary:
                          anyOf:
                            - type: object
                              properties:
                                total_queries:
                                  type: number
                                total_results:
                                  type: number
                                per_module:
                                  type: object
                                  propertyNames:
                                    type: string
                                  additionalProperties:
                                    type: object
                                    properties:
                                      queries:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            query_id:
                                              type: string
                                            query_text:
                                              type: string
                                            answer:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                          required:
                                            - query_id
                                            - query_text
                                      results:
                                        type: array
                                        items:
                                          type: object
                                          properties:
                                            result_id:
                                              type: string
                                            query_id:
                                              type: string
                                            url:
                                              type: string
                                            title:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                            snippet:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                            published_date:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                            last_updated:
                                              anyOf:
                                                - type: string
                                                - type: 'null'
                                          required:
                                            - result_id
                                            - query_id
                                            - url
                                            - title
                                            - snippet
                                            - published_date
                                            - last_updated
                                      cited_result_ids:
                                        type: array
                                        items:
                                          type: string
                                    required:
                                      - queries
                                      - results
                                      - cited_result_ids
                              required:
                                - total_queries
                                - total_results
                                - per_module
                            - type: 'null'
                      required:
                        - overall_risk_score
                        - summary
                        - findings
                        - observations
                        - risk_assessments
                        - suggested_actions
                        - audit_trail
                        - search_evidence_summary
                    - type: 'null'
                modules:
                  type: array
                  items:
                    type: object
                    properties:
                      module_id:
                        type: string
                      module_name:
                        type: string
                      findings:
                        type: array
                        items:
                          type: object
                          properties:
                            alert_type:
                              type: string
                            alert_type_name:
                              type: string
                            custom_alert_type:
                              anyOf:
                                - type: string
                                - type: 'null'
                            found:
                              type: boolean
                            severity:
                              type: string
                              enum:
                                - Informational
                                - Low
                                - Medium
                                - High
                            severity_justification:
                              type: string
                            description:
                              type: string
                            evidence:
                              type: array
                              items:
                                type: object
                                properties:
                                  source:
                                    type: string
                                  detail:
                                    type: string
                                  explanation:
                                    type: string
                                required:
                                  - source
                                  - detail
                                  - explanation
                            evidence_refs:
                              type: array
                              items:
                                type: string
                          required:
                            - alert_type
                            - alert_type_name
                            - found
                            - severity
                            - severity_justification
                            - description
                            - evidence
                            - evidence_refs
                      search_evidence:
                        anyOf:
                          - type: object
                            properties:
                              queries:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    query_id:
                                      type: string
                                    query_text:
                                      type: string
                                    answer:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                  required:
                                    - query_id
                                    - query_text
                              results:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    result_id:
                                      type: string
                                    query_id:
                                      type: string
                                    url:
                                      type: string
                                    title:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    snippet:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    published_date:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    last_updated:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                  required:
                                    - result_id
                                    - query_id
                                    - url
                                    - title
                                    - snippet
                                    - published_date
                                    - last_updated
                              failures:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    query_id:
                                      type: string
                                    error:
                                      type: string
                                    status_code:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    rate_limited:
                                      type: boolean
                                  required:
                                    - query_id
                                    - error
                                    - status_code
                                    - rate_limited
                              elapsed_ms:
                                type: number
                              request_count:
                                type: number
                            required:
                              - queries
                              - results
                              - failures
                              - elapsed_ms
                              - request_count
                          - type: 'null'
                      verification_evidence:
                        anyOf:
                          - type: object
                            properties:
                              checks:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    check_id:
                                      type: string
                                    provider:
                                      type: string
                                    check_type:
                                      type: string
                                    subject:
                                      type: string
                                    country_code:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    is_valid:
                                      anyOf:
                                        - type: boolean
                                        - type: 'null'
                                    canonical_name:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    canonical_address:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    checked_at:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                    raw_response:
                                      type: object
                                      propertyNames:
                                        type: string
                                      additionalProperties: {}
                                    error:
                                      anyOf:
                                        - type: string
                                        - type: 'null'
                                  required:
                                    - check_id
                                    - provider
                                    - check_type
                                    - subject
                                    - country_code
                                    - is_valid
                                    - canonical_name
                                    - canonical_address
                                    - checked_at
                                    - raw_response
                                    - error
                            required:
                              - checks
                          - type: 'null'
                    required:
                      - module_id
                      - module_name
                      - findings
                      - search_evidence
                      - verification_evidence
              required:
                - full_analysis
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        case_context_at_analysis:
          anyOf:
            - type: string
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        user_risk_confirmations:
          type: array
          items:
            type: object
            properties:
              reason:
                anyOf:
                  - type: string
                  - type: 'null'
              changed_at:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
              changed_by:
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$
              risk_score:
                type: string
                enum:
                  - informational
                  - low
                  - medium
                  - high
            required:
              - reason
              - changed_at
              - changed_by
              - risk_score
          x-nestjs_zod-uses-3-point-1-syntax: true
        created_at:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          x-nestjs_zod-uses-3-point-1-syntax: true
        uploaded_at:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        analysis_completed_at:
          anyOf:
            - type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            - type: 'null'
          x-nestjs_zod-uses-3-point-1-syntax: true
          x-nestjs_zod-empty-type: true
        team_id:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          x-nestjs_zod-uses-3-point-1-syntax: true
        team_name:
          type: string
          x-nestjs_zod-uses-3-point-1-syntax: true
      required:
        - file_id
        - case_id
        - label
        - mime_type
        - file_download_url
        - file_download_url_expires_at
        - thumbnail_url
        - pdf_report_url
        - log_output_url
        - ela_overlay_url
        - reverse_search
        - file_info
        - analysis_status
        - analysis_outcome
        - current_analysis_phase
        - current_risk_score
        - analysis_results
        - case_context_at_analysis
        - user_risk_confirmations
        - created_at
        - uploaded_at
        - analysis_completed_at
    ErrorDto:
      type: object
      properties:
        error_code:
          type: string
          description: Machine-readable error code for programmatic handling
          examples:
            - request.cases.file.missing-risk-score
            - request.authentication.invalid-token
            - request.forbidden
            - request.cases.case.not-found
            - request.cases.case.already-locked
        error_message:
          type: string
          description: Human-readable error message explaining what went wrong
          example: >-
            User tried to perform an invalid operation on a file without a risk
            score.
        error_details:
          type: object
          example:
            field: email_address
      required:
        - error_code
        - error_message
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key

````