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

# Obtener historial corporativo conciliado

> Retorna el historial de actas de una empresa, conciliado entre las tres fuentes que lo conocen, con una fila por acta y la trazabilidad de qué fuente aportó cada dato.

Ninguna fuente ve la empresa completa, y por eso el historial es el cruce:

- **`siger`** — el folio mercantil. Es el registro de lo que se inscribió: fechas de inscripción, formas precodificadas y el acto tal como quedó asentado. No ve las actas que nunca se inscribieron, y empieza cuando la empresa se digitalizó.
- **`client_file`** — los documentos que el cliente subió. Prueba que el acta existe y que la tienen, nunca lo que se acordó en ella.
- **`background`** — los antecedentes que el fedatario narra al inicio de cada acta. Es la única fuente que ve actas que nadie subió y que el registro nunca inscribió, que suelen ser la mayoría de la historia de una empresa.

Cada acta declara en `sources` qué fuentes la conocen. Un acta que solo trae `["background"]` existe porque otra acta la cita: llega con `cited_by` y con `evidence`, la cita textual que lo sostiene, y nunca se presenta como un hecho sin respaldo.

**Se calcula al momento de la consulta**, de forma determinística sobre los datos que ya están en la verificación. No hay copia almacenada, así que la respuesta nunca queda obsoleta — y si los datos son parciales, `coverage` lo dice en vez de que el resultado parezca completo.

**Las tres fechas de un acta** se distinguen porque se confunden con facilidad: `assembly_date` es cuándo se reunió la asamblea, `instrument_date` cuándo un fedatario la protocolizó y `registration_date` cuándo se inscribió el acta en el Registro público de comercio. `timeline_date` es la llave de orden, con precedencia declarada: instrumento, luego inscripción, luego asamblea. Cuando dos fuentes dan valores distintos para la misma fecha gana el expediente, luego el folio y al final los antecedentes: el expediente tiene el documento en mano, mientras que el folio y los antecedentes solo reportan una lectura de él. Si una misma fuente reporta el acta dos veces —un instrumento inscrito en dos folios— se toma la más antigua, solo para ordenarla.

**Esta versión no reporta discrepancias entre fuentes.** El valor elegido se entrega sin decir que otra fuente decía algo distinto. Cuando dos antecedentes fechan la misma acta de forma diferente, las dos citas quedan visibles en `evidence`, que es donde la diferencia se puede leer directamente.

**`coverage` declara hasta dónde vemos**, nunca que el historial esté completo. `combined.no_acta_after` es la fecha del acta más reciente del expediente: un cambio posterior a esa fecha no sería visible ni aunque hubiera ocurrido.

**`document_check`** es un conteo objetivo, sin ranking. Qué documento faltante importa es política de cada cliente, no una conclusión nuestra: el acta entrega `sources`, `changes[].event_type` y `proof_document`, y quien la lee aplica su propio criterio. La lista de faltantes se deriva del historial mismo, filtrando las actas cuyo `sources` no incluye `client_file`.




## OpenAPI

````yaml /api-reference/openapi.yaml get /v2/verifications/{verification-id}/corporate-history
openapi: 3.0.0
info:
  title: Coleccion de API KYB MX
  description: >
    La Colección de API KYB MX proporciona puntos finales para crear y gestionar
    verificaciones de empresas en México. La verificación de empresas implica
    validar la información proporcionada por un cliente comercial, incluyendo
    documentos y fuentes de datos, para asegurar su legitimidad y precisión.


    Cada verificación de empresa puede incluir múltiples ítems, como Actas
    Constitutivas, Constancias de Situación Fiscal, Identificaciones Personales
    y Comprobantes de Domicilio. Trebol maneja automáticamente la clasificación
    de documentos, lo que te permite enviar todos los documentos requeridos como
    URLs descargables (por ejemplo, URLs prefirmadas de AWS o GCP).


    **Autenticación**: 

    La API utiliza una clave API para la autenticación, pasada en el encabezado
    `x-api-key`. Para obtener una clave API, por favor
    [contáctanos](mailto:sales@gotrebol.com).
  version: 1.0.0
servers:
  - url: https://api.gotrebol.com
  - url: http://{{trebol_api_base_url}}
security: []
tags:
  - name: Creacion de Verificacion
    description: Endpoints para crear nuevas verificaciones.
  - name: Leer información de la empresa
    description: >-
      Endpoints v2 para obtener información detallada de empresas y
      verificaciones.
  - name: Leer por Etiqueta
    description: >-
      Endpoints para obtener información detallada sobre empresas mediante
      etiquetas.
  - name: Leer por ID de Verificacion
    description: >-
      Endpoints para obtener información detallada sobre verificaciones mediante
      ID.
  - name: Gestión de IPs Permitidas
    description: >-
      Endpoints para gestionar la lista de IPs permitidas (whitelist) para la
      cuenta del cliente.
  - name: Gestión de API Keys
    description: Endpoints para crear, listar y eliminar API keys de la cuenta del usuario.
  - name: Gestion de item Ids
    description: Endpoints para gestionar items de verificaciones.
  - name: Invalidar un documento
    description: Endpoints para invalidar documentos de verificaciones.
  - name: Labels de Verificacion
    description: Endpoints para gestionar labels de verificaciones.
  - name: Actualizar personas clave de una verificacion
    description: Endpoints para actualizar personas clave de verificaciones.
  - name: Agregar items a una verificacion
    description: Endpoints para agregar items a verificaciones existentes.
  - name: Estado de validacion de documentos
    description: Endpoints para obtener el estado de validación de documentos.
  - name: Gestión de Flujos de Cuenta
    description: Endpoints para gestionar flujos de cuenta.
  - name: Gestión de Webhooks
    description: Endpoints para crear, listar, actualizar y eliminar webhooks de la cuenta.
  - name: Gestión de Política de Retención
    description: Endpoints para gestionar la política de retención de datos de la cuenta.
  - name: Exportación de Verificaciones
    description: >-
      Endpoints para exportar datos de verificaciones a documentos
      personalizados.
  - name: Leer información de la empresa v1
    description: >-
      Endpoints v1 (legacy) para obtener información detallada de empresas y
      verificaciones. Te recomendamos migrar a los endpoints v2.
  - name: Tipos de Ítem Personalizados
    description: >-
      Endpoints para crear y gestionar tipos de ítem personalizados con procesos
      configurables de clasificación, validación y extracción.
  - name: Síntesis de Dictamen
    description: >-
      Endpoints para ejecutar bajo demanda la Síntesis de Dictamen (`findings`)
      de una verificación.
paths:
  /v2/verifications/{verification-id}/corporate-history:
    get:
      tags:
        - Leer información de la empresa
      summary: Obtener historial corporativo conciliado
      description: >
        Retorna el historial de actas de una empresa, conciliado entre las tres
        fuentes que lo conocen, con una fila por acta y la trazabilidad de qué
        fuente aportó cada dato.


        Ninguna fuente ve la empresa completa, y por eso el historial es el
        cruce:


        - **`siger`** — el folio mercantil. Es el registro de lo que se
        inscribió: fechas de inscripción, formas precodificadas y el acto tal
        como quedó asentado. No ve las actas que nunca se inscribieron, y
        empieza cuando la empresa se digitalizó.

        - **`client_file`** — los documentos que el cliente subió. Prueba que el
        acta existe y que la tienen, nunca lo que se acordó en ella.

        - **`background`** — los antecedentes que el fedatario narra al inicio
        de cada acta. Es la única fuente que ve actas que nadie subió y que el
        registro nunca inscribió, que suelen ser la mayoría de la historia de
        una empresa.


        Cada acta declara en `sources` qué fuentes la conocen. Un acta que solo
        trae `["background"]` existe porque otra acta la cita: llega con
        `cited_by` y con `evidence`, la cita textual que lo sostiene, y nunca se
        presenta como un hecho sin respaldo.


        **Se calcula al momento de la consulta**, de forma determinística sobre
        los datos que ya están en la verificación. No hay copia almacenada, así
        que la respuesta nunca queda obsoleta — y si los datos son parciales,
        `coverage` lo dice en vez de que el resultado parezca completo.


        **Las tres fechas de un acta** se distinguen porque se confunden con
        facilidad: `assembly_date` es cuándo se reunió la asamblea,
        `instrument_date` cuándo un fedatario la protocolizó y
        `registration_date` cuándo se inscribió el acta en el Registro público
        de comercio. `timeline_date` es la llave de orden, con precedencia
        declarada: instrumento, luego inscripción, luego asamblea. Cuando dos
        fuentes dan valores distintos para la misma fecha gana el expediente,
        luego el folio y al final los antecedentes: el expediente tiene el
        documento en mano, mientras que el folio y los antecedentes solo
        reportan una lectura de él. Si una misma fuente reporta el acta dos
        veces —un instrumento inscrito en dos folios— se toma la más antigua,
        solo para ordenarla.


        **Esta versión no reporta discrepancias entre fuentes.** El valor
        elegido se entrega sin decir que otra fuente decía algo distinto. Cuando
        dos antecedentes fechan la misma acta de forma diferente, las dos citas
        quedan visibles en `evidence`, que es donde la diferencia se puede leer
        directamente.


        **`coverage` declara hasta dónde vemos**, nunca que el historial esté
        completo. `combined.no_acta_after` es la fecha del acta más reciente del
        expediente: un cambio posterior a esa fecha no sería visible ni aunque
        hubiera ocurrido.


        **`document_check`** es un conteo objetivo, sin ranking. Qué documento
        faltante importa es política de cada cliente, no una conclusión nuestra:
        el acta entrega `sources`, `changes[].event_type` y `proof_document`, y
        quien la lee aplica su propio criterio. La lista de faltantes se deriva
        del historial mismo, filtrando las actas cuyo `sources` no incluye
        `client_file`.
      operationId: obtenerHistorialCorporativo
      parameters:
        - name: verification-id
          in: path
          required: true
          description: ID de la verificación
          schema:
            type: string
      responses:
        '200':
          description: Historial recuperado exitosamente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2PublicResponseCorporateHistory'
              examples:
                corporateHistory:
                  $ref: '#/components/examples/V2CorporateHistoryExample'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    V2PublicResponseCorporateHistory:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        data:
          $ref: '#/components/schemas/CorporateHistory'
        meta:
          $ref: '#/components/schemas/CorporateHistoryMeta'
    CorporateHistory:
      type: object
      properties:
        schema_version:
          type: string
          description: Versión del contrato. Los campos nuevos son aditivos.
          example: '1.0'
        verification_id:
          type: string
        generated_at:
          type: string
          format: date-time
          description: Momento en que se calculó esta respuesta.
        coverage:
          $ref: '#/components/schemas/CorporateHistoryCoverage'
        contribution:
          $ref: '#/components/schemas/CorporateHistoryContribution'
        history:
          type: array
          description: >-
            Una fila por acta, de la más reciente a la más antigua por
            `timeline_date`.
          items:
            $ref: '#/components/schemas/CorporateHistoryActa'
        document_check:
          type: object
          properties:
            summary:
              $ref: '#/components/schemas/CorporateHistoryDocumentCheck'
    CorporateHistoryMeta:
      type: object
      properties:
        section:
          type: string
          enum:
            - corporate-history
        verification:
          $ref: '#/components/schemas/V2VerificationMeta'
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        message:
          type: string
          example: Descripción breve y accionable del error
        code:
          oneOf:
            - type: string
              enum:
                - VALIDATION_ERROR
                - BAD_REQUEST
                - UNAUTHORIZED
                - FORBIDDEN
                - NOT_FOUND
                - CONFLICT
                - DUPLICATE_RESOURCE
                - INTERNAL_SERVER_ERROR
            - type: string
              description: Código de dominio específico (p.ej., items_not_provided)
          example: VALIDATION_ERROR
        timestamp:
          type: string
          format: date-time
          example: '2025-01-01T12:34:56.000Z'
    CorporateHistoryCoverage:
      type: object
      description: Hasta dónde vemos. Nunca afirma que el historial esté completo.
      properties:
        siger:
          type: object
          properties:
            folios_queried:
              type: array
              items:
                type: string
              description: FME de cada folio leído, en el orden en que SIGER los devolvió.
            queried_at:
              type: string
              format: date-time
              nullable: true
            entries_returned:
              type: integer
              description: >-
                Inscripciones que los folios devolvieron en total, antes de
                descartar ninguna.
            folios_returned:
              type: integer
            no_instrument_numbers:
              type: boolean
              description: >
                Presente y en verdadero cuando el listado del folio se encontró
                pero sus documentos nunca se descargaron. Esas filas no traen
                número de instrumento, así que no se pueden agrupar ni cruzar
                con nada — pero sí se emiten: que no podamos cruzar una
                inscripción no es razón para ocultar que el registro la hizo.
            filing_items_returned:
              type: integer
              description: Filas del listado, presente solo en el caso anterior.
        background:
          type: object
          properties:
            extracted_from:
              type: array
              items:
                type: string
              description: >-
                Números de las actas cuyos antecedentes se leyeron. Un acta del
                expediente que no aparezca aquí es un acta cuyos antecedentes no
                se extrajeron.
            records_unidentified:
              type: integer
              description: >-
                Registros que no nombraron un número de instrumento usable, así
                que describen un acta que no se puede ubicar. Se cuentan en vez
                de emitirse.
            unreadable_extractions:
              type: array
              items:
                type: string
              description: >-
                Actas cuya extracción existía pero no arrojó ningún registro
                legible. Se reporta porque una extracción que corrió y no
                produjo nada es un hueco en la cobertura, y un resultado vacío
                es indistinguible de un acta que genuinamente no cita nada.
            numbers_corrected:
              type: array
              description: >
                Números de instrumento que la extracción convirtió mal,
                corregidos a partir de la transcripción literal que ella misma
                escribió junto a ellos.


                Los antecedentes suelen escribir el número en letra ("mil
                trescientos veintidós") y la extracción lo devuelve en dígitos y
                transcrito. Los dígitos se verifican contra una lectura
                determinística de las palabras, y cuando difieren gana la
                lectura.


                Se reporta en vez de aplicarse en silencio porque la corrección
                cambia **qué acta es** esa fila: con qué inscripción del folio
                se cruza y qué documento se cuenta como faltante. Vacío para
                extracciones anteriores a que el prompt pidiera la
                transcripción, donde no hay contra qué verificar.
              items:
                type: object
                properties:
                  cited_in:
                    type: string
                    description: Acta cuyos antecedentes lo traían.
                  literal:
                    type: string
                    description: El número tal como el documento lo imprime.
                  reported:
                    type: string
                    description: Lo que la extracción escribió.
                  corrected:
                    type: string
                    description: >-
                      Lo que el literal realmente dice, y lo que el historial
                      usa.
        combined:
          type: object
          properties:
            earliest_timeline_date:
              type: string
              format: date
              nullable: true
            latest_timeline_date:
              type: string
              format: date
              nullable: true
            no_acta_after:
              type: string
              format: date
              nullable: true
              description: >
                Fecha de asamblea del acta más reciente del expediente. Es un
                hecho sobre nuestros datos, no sobre la empresa: los
                antecedentes de un acta solo alcanzan hasta su propia asamblea,
                así que un cambio posterior a esta fecha no sería visible ni
                aunque hubiera ocurrido.
    CorporateHistoryContribution:
      type: object
      description: >-
        Qué aportó cada fuente. `only_in_*` es lo que se habría perdido sin
        ella.
      properties:
        total_actas:
          type: integer
        in_siger:
          type: integer
        in_background:
          type: integer
        in_client_file:
          type: integer
        only_in_siger:
          type: integer
        only_in_background:
          type: integer
        only_in_client_file:
          type: integer
    CorporateHistoryActa:
      type: object
      properties:
        acta_number:
          type: string
          nullable: true
          description: >
            Número del instrumento, normalizado a dígitos para poder cruzarse
            entre fuentes. Es `null` cuando no hay nada con qué identificarla:
            un documento subido sin número, una inscripción cuyo número no trae
            dígitos, o cualquier fila del listado sin números de instrumento
            (ver `coverage.siger.no_instrument_numbers`). Un acta sin número no
            se fusiona con ninguna otra, porque no hay llave.
          example: '4262'
        folios:
          type: array
          items:
            type: string
          description: >
            FME de cada folio que inscribió el acta, empezando por el orden en
            que los devolvió el registro; vacío cuando ningún folio la tiene. Es
            una lista porque un mismo instrumento puede inscribirse más de una
            vez: los folios que devuelve una consulta son la misma empresa vista
            desde varias oficinas registrales, y una sociedad que cambió de
            domicilio queda inscrita en el folio que dejó y en el que llegó. La
            identidad de un acta es `acta_number` solo, así que esas
            inscripciones son un acta y esta es la lista de dónde quedó.
          example:
            - N-2022032489
        item_id:
          type: integer
          nullable: true
          description: >-
            ID del item de verificación que contiene el documento, cuando
            existe.
        alias_numbers:
          type: array
          items:
            type: string
          description: Otros números con que alguna fuente se refirió al mismo instrumento.
        acta_type:
          type: string
          nullable: true
          description: >-
            Tipo de item con que se cargó el documento (`ac_mx`, `aa_mx`,
            `pw_mx`). Es `null` para un acta que solo conocen el folio o los
            antecedentes.
        assembly_type:
          type: string
          nullable: true
          description: >-
            Texto literal de la fuente ("General", "acta constitutiva",
            "protocolización"). Sin catálogo normalizado.
        formalized_by:
          type: object
          description: >-
            El fedatario, copiado de la fuente que lo traiga. No se concilia
            entre fuentes; el mismo corredor aparece escrito de tres formas
            distintas en tres actas.
          properties:
            type:
              type: string
              nullable: true
            name:
              type: string
              nullable: true
            number:
              type: string
              nullable: true
            city:
              type: string
              nullable: true
        assembly_date:
          type: string
          format: date
          nullable: true
          description: Cuándo se reunió la asamblea.
        instrument_date:
          type: string
          format: date
          nullable: true
          description: Cuándo un fedatario protocolizó el acta.
        registration_date:
          type: string
          format: date
          nullable: true
          description: Cuándo el registro la inscribió.
        timeline_date:
          type: string
          format: date
          nullable: true
          description: >-
            Llave de orden, con precedencia `instrument_date` →
            `registration_date` → `assembly_date`. El historial está ordenado
            por cuándo se documentó un cambio, no por cuándo ocurrió.
        sources:
          type: array
          description: Qué fuentes conocen esta acta, en orden canónico.
          items:
            type: string
            enum:
              - siger
              - background
              - client_file
        proof_document:
          type: object
          nullable: true
          description: >
            La copia del documento que tenemos. `origin` importa:
            `client_upload` es evidencia de que el cliente lo tiene;
            `siger_extraction` significa que nosotros lo bajamos del folio, así
            que el archivo es real pero **no** cuenta como cobertura del
            expediente.
          properties:
            item_id:
              type: integer
            origin:
              type: string
              enum:
                - client_upload
                - siger_extraction
            url:
              type: string
        registry_entries:
          type: array
          description: >-
            Las inscripciones que el folio hizo para este instrumento. Un acta
            con dos inscripciones es una fila con dos entradas, no dos filas.
          items:
            $ref: '#/components/schemas/CorporateHistoryRegistryEntry'
        cites:
          type: array
          items:
            type: string
          description: Números de acta que los antecedentes de **esta** acta refieren.
        cited_by:
          type: array
          items:
            type: string
          description: >-
            Actas cuyos antecedentes refieren a esta. Es lo que sostiene un acta
            que nadie subió.
        changes:
          type: array
          items:
            $ref: '#/components/schemas/CorporateHistoryChange'
        evidence:
          type: array
          description: Citas textuales que respaldan lo que se afirma de esta acta.
          items:
            $ref: '#/components/schemas/CorporateHistoryEvidence'
    CorporateHistoryDocumentCheck:
      type: object
      description: >
        Conteo objetivo del expediente, sin lista paralela y sin ranking. La
        lista de faltantes se deriva del historial: `history.filter(a =>
        !a.sources.includes("client_file"))`. El criterio es la pertenencia a
        `sources`, no la presencia de `proof_document`: un acta que el cliente
        subió pero cuyo archivo no se pudo resolver sigue siendo un acta que
        tiene.
      properties:
        actas_in_history:
          type: integer
        client_uploaded:
          type: integer
        not_uploaded_by_client:
          type: integer
    V2VerificationMeta:
      type: object
      properties:
        id:
          type: string
        tag:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
    CorporateHistoryRegistryEntry:
      type: object
      properties:
        folio:
          type: string
          nullable: true
          description: >-
            FME del folio que hizo la inscripción. Null cuando la fuente no lo
            nombró.
        row:
          type: integer
          description: >
            Renglón del acto dentro del folio. `folio` y `row` juntos son su
            identidad: los renglones se numeran por folio, así que en un acta
            inscrita en más de uno, `row` sólo identifica una entrada leído
            junto con `folio`. Por eso las referencias de
            `changes[].reported_by.registry_entries` traen las dos llaves.
        page:
          type: integer
          nullable: true
        nci:
          type: string
          nullable: true
        label:
          type: string
          description: El acto tal como el registro lo nombró.
        form:
          type: string
          nullable: true
          description: Forma precodificada, código y etiqueta juntos.
          example: M2 - Asamblea
        mode:
          type: string
          nullable: true
        admitted_at:
          type: string
          format: date
          nullable: true
          description: Fecha de ingreso a ventanilla.
        registered_at:
          type: string
          format: date
          nullable: true
          description: Fecha de inscripción.
        modifications:
          type: array
          description: >
            Las casillas que el folio marcó en verdadero, copiadas literalmente
            y **sin interpretar**. `type` es la redacción que el registro
            imprimió, no un nombre de campo: las etiquetas varían entre formas
            del mismo folio. Sirven para ver que un acto marca disolución aunque
            ninguna fuente la describa.
          items:
            type: object
            properties:
              type:
                type: string
              value:
                type: boolean
        proof_document_url:
          type: string
          nullable: true
    CorporateHistoryChange:
      type: object
      properties:
        event_type:
          type: string
          description: >
            Código del evento. El folio y los antecedentes usan **vocabularios
            disjuntos** (`modificacion_capital` vs `aumento_capital`) y no se
            fusionan: unirlos exigiría una tabla de equivalencias que
            deliberadamente no existe. Por eso ningún cambio trae las dos
            fuentes, y la corroboración cruzada se ve a nivel de acta, en
            `sources`.
          example: modificacion_capital
        description:
          type: string
        sources:
          type: array
          items:
            type: string
            enum:
              - siger
              - background
              - client_file
        reported_by:
          type: object
          description: >
            Quién reportó el cambio. Nunca las dos listas a la vez:
            `registry_entries` solo la llena el folio y `citing_actas` solo los
            antecedentes, porque sus vocabularios de `event_type` son disjuntos
            y un cambio no se fusiona entre fuentes.
          properties:
            registry_entries:
              type: array
              description: >
                Las inscripciones del folio que reportaron el cambio. Cada
                referencia resuelve contra `registry_entries` del acta por **las
                dos** llaves: los renglones se numeran por folio, así que en un
                acta inscrita en más de uno el `row` solo no identifica una
                entrada.
              items:
                type: object
                properties:
                  folio:
                    type: string
                    nullable: true
                    description: >-
                      FME del folio que hizo la inscripción. Null cuando la
                      fuente no lo nombró.
                  row:
                    type: integer
                    description: Renglón de la inscripción dentro de ese folio.
              example:
                - folio: N-2022032489
                  row: 2
                - folio: N-2022032489
                  row: 3
            citing_actas:
              type: array
              items:
                type: string
              description: Números de las actas cuyos antecedentes mencionan el cambio.
              example:
                - '103930'
    CorporateHistoryEvidence:
      type: object
      properties:
        cited_in:
          type: string
          description: Número del acta que contiene la cita.
        cited_in_date:
          type: string
          format: date
          nullable: true
          description: >-
            Fecha del acta que cita, para poder ordenar dos versiones de un
            mismo hecho.
        page:
          type: string
          nullable: true
        quote:
          type: string
          description: Texto literal de la fuente.
  examples:
    V2CorporateHistoryExample:
      summary: corporate-history
      value:
        success: true
        data:
          schema_version: '1.0'
          verification_id: 018f2c7a-4b91-7d3e-a6f1-2c8d5e9b0a44
          generated_at: '2026-08-27T15:04:00.000Z'
          coverage:
            siger:
              folios_queried:
                - N-2022032489
              queried_at: '2026-04-14T19:47:03.000Z'
              entries_returned: 4
              folios_returned: 1
            background:
              extracted_from:
                - '6869'
                - '103930'
                - '4262'
              records_unidentified: 0
              unreadable_extractions: []
              numbers_corrected:
                - cited_in: '6869'
                  literal: mil trescientos veintidós
                  reported: '1326'
                  corrected: '1322'
            combined:
              earliest_timeline_date: '1982-06-10'
              latest_timeline_date: '2024-05-13'
              no_acta_after: '2024-02-29'
          contribution:
            total_actas: 5
            in_siger: 2
            in_background: 3
            in_client_file: 2
            only_in_siger: 1
            only_in_background: 2
            only_in_client_file: 1
          history:
            - acta_number: '4262'
              folios:
                - N-2022032489
              item_id: 1626845
              alias_numbers: []
              acta_type: aa_mx
              assembly_type: General
              formalized_by:
                type: notario
                name: VILLALOBOS
                number: '119'
                city: México
              assembly_date: '2014-12-15'
              instrument_date: '2019-10-16'
              registration_date: '2022-05-09'
              timeline_date: '2019-10-16'
              sources:
                - siger
                - background
                - client_file
              proof_document:
                item_id: 1626845
                origin: client_upload
                url: https://files.example/1626845.pdf
              registry_entries:
                - folio: N-2022032489
                  row: 2
                  page: 1
                  nci: '202200110421'
                  label: Cambio de domicilio social
                  form: M2 - Asamblea
                  mode: Inscripción vía web inmediata
                  admitted_at: '2022-05-09'
                  registered_at: '2022-05-09'
                  modifications:
                    - type: Acuerdo de disolución de la sociedad.
                      value: true
                  proof_document_url: https://files.example/4262_1_2_file.pdf
                - folio: N-2022032489
                  row: 3
                  page: 1
                  nci: '202200110422'
                  label: Otros acuerdos que conforme a la Ley deban de registrarse
                  form: M2 - Asamblea
                  mode: Inscripción vía web inmediata
                  admitted_at: '2022-05-09'
                  registered_at: '2022-05-09'
                  modifications: []
                  proof_document_url: null
              cites:
                - '18694'
              cited_by:
                - '103930'
              changes:
                - event_type: constitucion_modificacion_domicilio
                  description: Cambio de domicilio social.
                  sources:
                    - siger
                  reported_by:
                    registry_entries:
                      - folio: N-2022032489
                        row: 2
                    citing_actas: []
                - event_type: aumento_capital
                  description: Se aprueba un aumento de capital social por 700,000.00.
                  sources:
                    - background
                  reported_by:
                    registry_entries: []
                    citing_actas:
                      - '103930'
              evidence:
                - cited_in: '103930'
                  cited_in_date: '2023-12-14'
                  page: '4'
                  quote: >-
                    POR ESCRITURA PÚBLICA NÚMERO CUATRO MIL DOSCIENTOS SESENTA Y
                    DOS...
            - acta_number: '18694'
              folios: []
              item_id: null
              alias_numbers: []
              acta_type: null
              assembly_type: protocolización
              formalized_by:
                type: notario
                name: Emmanuel Villicaña Estrada
                number: '35'
                city: Tlalnepantla, Estado de México
              assembly_date: '1996-12-13'
              instrument_date: null
              registration_date: null
              timeline_date: '1996-12-13'
              sources:
                - background
              proof_document: null
              registry_entries: []
              cites: []
              cited_by:
                - '103930'
                - '4262'
              changes:
                - event_type: fusion
                  description: >-
                    Protocolización del convenio de fusión de INDESIN como
                    sociedad fusionante con INTERPROS.
                  sources:
                    - background
                  reported_by:
                    registry_entries: []
                    citing_actas:
                      - '103930'
                      - '4262'
              evidence:
                - cited_in: '103930'
                  cited_in_date: '2023-12-14'
                  page: '3'
                  quote: >-
                    POR ESCRITURA PÚBLICA NÚMERO DIECIOCHO MIL SEISCIENTOS
                    NOVENTA Y CUATRO... DE FECHA TRECE DE DICIEMBRE DE MIL
                    NOVECIENTOS NOVENTA Y SEIS...
                - cited_in: '4262'
                  cited_in_date: '2014-12-15'
                  page: '3'
                  quote: >-
                    V.- ACTA DE ASAMBLEA.- POR ESCRITURA PÚBLICA NÚMERO
                    DIECIOCHO MIL SEISCIENTOS NOVENTA Y CUATRO... DE FECHA TRECE
                    DE SEPTIEMBRE DEL AÑO DE MIL NOVECIENTOS NOVENTA Y SIETE...
          document_check:
            summary:
              actas_in_history: 5
              client_uploaded: 2
              not_uploaded_by_client: 3
        meta:
          section: corporate-history
          verification:
            id: 018f2c7a-4b91-7d3e-a6f1-2c8d5e9b0a44
            tag: indesin
            status: finished
  responses:
    UnauthorizedError:
      description: No autorizado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            Unauthorized:
              summary: Falta API key o inválida
              value:
                success: false
                message: Unauthorized
                code: UNAUTHORIZED
                timestamp: '2025-01-01T12:34:56.000Z'
    NotFoundError:
      description: Recurso no encontrado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            NotFound:
              summary: Recurso inexistente
              value:
                success: false
                message: Entity not found
                code: NOT_FOUND
                timestamp: '2025-01-01T12:34:56.000Z'
    InternalServerError:
      description: Error interno del servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            ServerError:
              summary: Error inesperado
              value:
                success: false
                message: Internal server error
                code: INTERNAL_SERVER_ERROR
                timestamp: '2025-01-01T12:34:56.000Z'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````