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

# API de cronología de redes de fraude

> Historial de eventos de una red de fraude en Didit o, con contract=2, cronología paginada de intentos, transacciones, accesos, reglas y casos.



Prompt de la API de cronología de redes
        Copiar el prompt al portapapeles



      
      

\<pre>

\`Retrieve a fraud network's event timeline through the Management API.

Endpoint:
GET https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/

Authentication:
Use the x-api-key header with my Didit API key.
Networks endpoints need a full-access API key: a key with restricted access gets 403.

Path parameter:
\- network_uuid - the network's UUID.

Two shapes, chosen by the contract query parameter:

1\. Default (no contract parameter): unchanged.
Response 200: {"results": [NetworkTimelineEvent, ...]}, oldest first, not paginated.
Each event has event_type (network_detected, signal_observed, network_active, network_in_review, network_resolved, network_dismissed), occurred_at, label, and metadata (event-specific, e.g. {network_id} for detection, {signal_type, subject_count, is_hub} for a signal observation, {reason} for a status change).
limit, cursor and event_type are ignored in this mode.

2\. Typed timeline (contract=2, opt-in):
Query params:
\- contract=2: required for this mode. Any other value is a 400.
\- limit: 1 to 500, default 100.
\- cursor: the previous page's next_cursor. An invalid or empty cursor is a 400 ("This cursor is not valid. Reload the feed.").
\- event_type: repeat it or pass a comma-separated list, at most 20 values. Defaults to every type: network_detected, signal_observed, network_active, network_in_review, network_resolved, network_dismissed, verification_attempt, transaction, login, rule_hit, case_linked, note_added.
Response 200: {"results": [NetworkTypedTimelineEvent, ...], "next_cursor": string|null}, newest first. Keep calling with cursor=next_cursor until next_cursor is null.
Each typed event has:
\- event_type, occurred_at, label, metadata: as in the default shape (metadata is {} for events that are not the network's own).
\- id: "<source>:<uuid>", unique within the timeline. ingested_at: when Didit stored it.
\- account: the member account {node_id ("vendor_user:<uuid>", "vendor_business:<uuid>" or "transaction_party:<uuid>"), node_type (account|business_account|transaction_party), uuid, vendor_data, display_name, ownership (owned|organization), route {kind, id, application_id}}. Null for the network's own events, case_linked and note_added.
\- source_ref: the record it was read from {kind (session|business_session|transaction|monitoring_event|case), id, ownership, route}. route is absent for monitoring_event and case. Null for the network's own events and note_added.
\- ownership: owned when the record belongs to the application I called, organization when it belongs to another application of my organization.
\- One detail block per event type, the others null:
\- verification_attempt {session_id, session_number, attempt, attempt_count, status, status_changed_at, decline_reasons [{risk, feature, short_description}] (declined sessions only)}
\- transaction {transaction_id, transaction_number, transaction_type, action_type, amount {value, currency, direction} or null, status, decision_reason_code, decision_reason_label, party_role}
\- login {action (auth.login, security.login_succeeded, auth.login_failed or security.login_failed), succeeded, status, ip {address, country_code, city, connection_type (free text), is_vpn_or_tor, is_data_center} or null, device {fingerprint, label} or null, is_first_login, is_new_device}
\- rule_hit {rule_id, rule_title, rule_category, rule_source, severity, score_delta, status_target, action_summary}
\- case_linked {case_id, case_number, status, author_email, author_name}
\- note_added {note_id, author_email}: never returned to an API key, only to console members.

Example call:
curl -X GET "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/?contract=2&limit=50&event_type=verification_attempt,login" \
-H "x-api-key: YOUR_API_KEY"

Failure modes:
\- 400 (contract mode only): {"contract": [...]}, {"limit": [...]}, {"cursor": ["This cursor is not valid. Reload the feed."]} or {"event_type": {...}}.
\- 404: {"detail": "Network not found."}. The network does not exist, or has no member visible to this application.
\- 401: missing or invalid x-api-key.
\- 403: the API key belongs to another application, or it has restricted access (Networks needs a full-access key). A console member token needs read:networks.
\- 403 with {"code": "networks_not_entitled"}: Networks is not enabled for the organization.

Side effects: none, pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Pegar en

Obtén el historial de eventos de una red.
Sin `contract`, la respuesta es el historial propio de la red, del más antiguo al más reciente y sin paginación: cuándo se detectó por primera vez, cuándo se observó por última vez cada señal y su último cambio de estado con su motivo.
Este formato no cambia, y `limit`, `cursor` y `event_type` se ignoran.## Cronología tipadaPasa `contract=2` para leer la cronología tipada en su lugar.
Añade lo que hicieron las cuentas de los miembros y lo que hizo tu equipo con respecto a la red, del más reciente al más antiguo, una página cada vez.
`contract` solo acepta `2`; cualquier otro valor devuelve `400`.| Parámetro | Significado |
| - | - |
| `limit` | Eventos por página, de 1 a 500. El valor predeterminado es 100. |
| `cursor` | El `next_cursor` de la página anterior. Un cursor no válido o vacío devuelve `400`. |
| `event_type` | Los tipos de evento que se conservan, repetidos o separados por comas, con un máximo de 20 valores. De forma predeterminada, todos los tipos. |La respuesta es `{"results": [...], "next_cursor": "..."}`.
Lee la página siguiente con `cursor` igual a `next_cursor`, hasta que `next_cursor` sea `null`.## Tipos de evento| `event_type` | Qué registra | Bloque de detalle |
| - | - | - |
| `network_detected` | Se detectó la red | Ninguno |
| `signal_observed` | La última observación de una señal | Ninguno |
| `network_active`, `network_in_review`, `network_resolved`, `network_dismissed` | El último cambio de estado de la red, con su motivo en `metadata` | Ninguno |
| `verification_attempt` | Una sesión de verificación de un miembro (una persona o una empresa), numerada (`attempt` de `attempt_count`), con sus motivos de rechazo cuando se rechazó | `verification_attempt` |
| `transaction` | Una transacción en la que participó un miembro, fechada según su fecha de transacción | `transaction` |
| `login` | Un inicio de sesión o un inicio de sesión fallido que enviaste para un miembro a través de la [API de eventos](https://docs.didit.me/es/transaction-monitoring/events.md) | `login` |
| `rule_hit` | Una regla activa que coincidió con una transacción o un evento de un miembro | `rule_hit` |
| `case_linked` | Un caso abierto para la red en tu organización | `case_linked` |
| `note_added` | Una nota añadida a la red, sin su texto | `note_added` |Los eventos `note_added` solo se devuelven a los miembros de la consola, nunca a una clave de API.
Una transacción entre dos miembros aparece una vez para cada uno de ellos, cada una con su propia `account`.
Una coincidencia con una regla en esa transacción aparece una sola vez.
Los eventos de inicio de sesión solo existen para los inicios de sesión que envías como eventos: `auth.login`, `security.login_succeeded` y sus variantes fallidas.## Cuentas y registrosCada evento de miembro incluye `account`, el miembro al que pertenece, y `source_ref`, la sesión, sesión de empresa, transacción, evento de monitorización o caso del que se obtuvo.
`ownership` es `owned` cuando el registro pertenece a la aplicación a la que invocaste, y `organization` cuando pertenece a otra aplicación de tu organización.
`route` indica el tipo, el UUID y la aplicación del registro; `source_ref` no tiene `route` para un evento de monitorización ni para un caso.
Los eventos propios de la red no incluyen ni `account` ni `source_ref`.## Contenido relacionado- [Obtener red](https://docs.didit.me/es/management-api/networks/get.md)
- [Señales de red](https://docs.didit.me/es/management-api/networks/signals.md)
- [Mapa de red](https://docs.didit.me/es/management-api/networks/map.md)
- [Ingesta de eventos](https://docs.didit.me/es/transaction-monitoring/events.md)


## OpenAPI

````yaml es/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificación de identidad. Autentícate con el encabezado x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/:
    get:
      tags:
        - Networks
      summary: Obtener la cronología de la red
      description: >-
        Sin `contract`: los eventos propios de la red (detección, la última
        observación de cada señal y su revisión), del más antiguo al más
        reciente y sin paginar. Se ignoran `limit`, `cursor` y `event_type`. Con
        `contract=2`: la cronología tipada, del más reciente al más antiguo y
        paginada por cursor. Añade lo que hicieron las cuentas miembro (intentos
        de verificación, transacciones, inicios de sesión que publicas a través
        de la API de eventos y las reglas activas que hayan saltado) y los casos
        abiertos para la red. Los eventos `note_added` solo se devuelven a los
        miembros de la consola, nunca a una clave de API. Requiere una clave de
        API con acceso completo, o `read:networks` para un miembro de la
        consola.
      operationId: get_network_timeline
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID de la organización.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID de la aplicación.
        - name: network_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            example: n3a5e000-0000-4000-8000-000000000001
          description: UUID de la red.
        - name: contract
          in: query
          required: false
          schema:
            type: string
            enum:
              - '2'
          description: >-
            `2` devuelve la línea de tiempo tipada. Omítelo para obtener la
            línea de tiempo predeterminada. Cualquier otro valor devuelve 400.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 100
            minimum: 1
            maximum: 500
          description: >-
            Solo para la cronología tipada. Eventos por página, de 1 a 500. El
            valor predeterminado es 100.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Solo para la cronología tipada. El `next_cursor` de la página
            anterior. Un cursor no válido o vacío devuelve 400.
        - name: event_type
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: array
            maxItems: 20
            items:
              type: string
              enum:
                - network_detected
                - signal_observed
                - network_active
                - network_in_review
                - network_resolved
                - network_dismissed
                - verification_attempt
                - transaction
                - login
                - rule_hit
                - case_linked
                - note_added
          description: >-
            Solo para la cronología tipada. Tipos de eventos que se conservan,
            repetidos o separados por comas, con un máximo de 20 valores. De
            forma predeterminada, todos los tipos.
      responses:
        '200':
          description: >-
            Sin `contract`: `{results}`, del más antiguo al más reciente, sin
            paginar. Con `contract=2`: `{results, next_cursor}`, del más
            reciente al más antiguo.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/NetworkTimeline'
                  - $ref: '#/components/schemas/NetworkTimelinePage'
              examples:
                Default timeline:
                  summary: Sin contract
                  value:
                    results:
                      - event_type: network_detected
                        occurred_at: '2026-10-01T09:12:44Z'
                        label: Network detected
                        metadata:
                          network_id: N-0042
                      - event_type: signal_observed
                        occurred_at: '2026-10-12T16:03:10Z'
                        label: device observed
                        metadata:
                          signal_type: device
                          subject_count: 3
                          is_hub: false
                      - event_type: network_in_review
                        occurred_at: '2026-10-12T16:30:00Z'
                        label: Network in_review
                        metadata:
                          reason: Shared device across three new accounts.
                Typed timeline:
                  summary: Con contract=2
                  value:
                    results:
                      - id: monitoring_event:9b2f1c3e-4d5a-4b6c-8d7e-0f1a2b3c4d5e
                        event_type: login
                        occurred_at: '2026-10-12T18:41:02Z'
                        ingested_at: '2026-10-12T18:41:03Z'
                        label: Login
                        metadata: {}
                        account:
                          node_id: vendor_user:5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          node_type: account
                          uuid: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          vendor_data: user-1042
                          display_name: Alex Example
                          ownership: owned
                          route:
                            kind: user
                            id: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                            application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        source_ref:
                          kind: monitoring_event
                          id: 9b2f1c3e-4d5a-4b6c-8d7e-0f1a2b3c4d5e
                          ownership: owned
                        verification_attempt: null
                        transaction: null
                        login:
                          action: auth.login
                          succeeded: true
                          status: APPROVED
                          ip:
                            address: 203.0.113.24
                            country_code: ES
                            city: Madrid
                            connection_type: null
                            is_vpn_or_tor: false
                            is_data_center: false
                          device:
                            fingerprint: fp_0a1b2c3d
                            label: Chrome · Android
                          is_first_login: false
                          is_new_device: true
                        rule_hit: null
                        case_linked: null
                        note_added: null
                      - id: session:1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                        event_type: verification_attempt
                        occurred_at: '2026-10-12T16:03:10Z'
                        ingested_at: '2026-10-12T16:03:10Z'
                        label: Verification attempt 2 of 2
                        metadata: {}
                        account:
                          node_id: vendor_user:5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          node_type: account
                          uuid: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          vendor_data: user-1042
                          display_name: Alex Example
                          ownership: owned
                          route:
                            kind: user
                            id: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                            application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        source_ref:
                          kind: session
                          id: 1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                          ownership: owned
                          route:
                            kind: session
                            id: 1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                            application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        verification_attempt:
                          session_id: 1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                          session_number: 1287
                          attempt: 2
                          attempt_count: 2
                          status: Approved
                          status_changed_at: '2026-10-12T16:05:41Z'
                          decline_reasons: []
                        transaction: null
                        login: null
                        rule_hit: null
                        case_linked: null
                        note_added: null
                      - id: signal_observed:8d7c6b5a-4e3f-4a2b-9c1d-0e9f8a7b6c5d
                        event_type: signal_observed
                        occurred_at: '2026-10-12T16:03:10Z'
                        ingested_at: '2026-10-01T09:12:44Z'
                        label: device observed
                        metadata:
                          signal_type: device
                          subject_count: 3
                          is_hub: false
                        account: null
                        source_ref: null
                        verification_attempt: null
                        transaction: null
                        login: null
                        rule_hit: null
                        case_linked: null
                        note_added: null
                    next_cursor: >-
                      eyJ0IjoiMjAyNi0xMC0xMlQxNjowMzoxMCswMDowMCIsImMiOiIyMDI2LTEwLTAxVDA5OjEyOjQ0KzAwOjAwIiwiciI6MSwidSI6IjhkN2M2YjVhLTRlM2YtNGEyYi05YzFkLTBlOWY4YTdiNmM1ZCJ9
        '400':
          description: >-
            Con `contract` presente: un valor no válido de `contract`, `limit`,
            `cursor` o `event_type`.
          content:
            application/json:
              examples:
                Unsupported contract:
                  summary: Contrato no admitido
                  value:
                    contract:
                      - '"3" is not a valid choice.'
                Invalid cursor:
                  summary: Cursor no válido
                  value:
                    cursor:
                      - This cursor is not valid. Reload the feed.
                Limit too large:
                  summary: Límite demasiado grande
                  value:
                    limit:
                      - Ensure this value is less than or equal to 500.
                Unknown event type:
                  summary: Tipo de evento desconocido
                  value:
                    event_type:
                      '0':
                        - '"logout" is not a valid choice.'
        '401':
          description: Credenciales ausentes o no válidas.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      Presente en errores con código, por ejemplo
                      `networks_not_entitled`.
              examples:
                Missing or invalid credentials:
                  summary: Credenciales ausentes o no válidas
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
        '403':
          description: >-
            La clave de API pertenece a otra aplicación o es una clave con
            acceso restringido: los endpoints de Networks necesitan una clave de
            acceso completo. Un token de miembro de la consola necesita
            `read:networks`. También se devuelve con `code:
            networks_not_entitled` cuando Networks no está habilitado para la
            organización.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      Presente en errores con código, por ejemplo
                      `networks_not_entitled`.
              examples:
                Networks not enabled:
                  summary: Redes no habilitadas
                  value:
                    detail: >-
                      Networks is disabled for this organization. Contact Didit
                      support if you believe this is an error.
                    code: networks_not_entitled
                Restricted API key:
                  summary: Clave de API restringida
                  value:
                    detail: This API key has no access to this endpoint.
                No permission:
                  summary: Sin permiso
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: Red no encontrada (o no visible para esta aplicación).
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/timeline/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: curl
          label: curl (typed timeline)
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/3fa85f64-5717-4562-b3fc-2c963f66afa6/timeline/?contract=2&limit=50&event_type=verification_attempt,login'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.networks.retrieve_timeline(
                "n3a5e000-0000-4000-8000-000000000001",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.networks.retrieveTimeline("n3a5e000-0000-4000-8000-000000000001");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.RetrieveTimeline(ctx, \"n3a5e000-0000-4000-8000-000000000001\", didit.NetworksRetrieveTimelineParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.networks().retrieveTimeline("n3a5e000-0000-4000-8000-000000000001");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->networks->retrieveTimeline('n3a5e000-0000-4000-8000-000000000001');

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            # and DIDIT_APPLICATION_ID.

            didit = Didit::Client.new


            result =
            didit.networks.retrieve_timeline("n3a5e000-0000-4000-8000-000000000001")

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Networks.RetrieveTimelineAsync("n3a5e000-0000-4000-8000-000000000001");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    NetworkTimeline:
      title: Default timeline (no contract)
      type: object
      description: >-
        Sin `contract`: los eventos propios de la red, del más antiguo al más
        reciente, sin paginar.
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/NetworkTimelineEvent'
    NetworkTimelinePage:
      title: Typed timeline page (contract=2)
      type: object
      description: >-
        Con `contract=2`: una página de eventos tipados, del más reciente al más
        antiguo.
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/NetworkTypedTimelineEvent'
        next_cursor:
          type: string
          nullable: true
          description: >-
            Pásalo como `cursor` para leer la página siguiente. Es null en la
            última página.
    NetworkTimelineEvent:
      type: object
      properties:
        event_type:
          type: string
          description: >-
            p. ej., network_detected, signal_observed, network_in_review,
            network_resolved, network_dismissed.
        occurred_at:
          type: string
          format: date-time
          nullable: true
        label:
          type: string
        metadata:
          type: object
    NetworkTypedTimelineEvent:
      type: object
      description: >-
        Un evento tipado de la línea de tiempo: los cuatro campos
        predeterminados, además de su id, cuándo lo almacenó Didit, la cuenta de
        miembro y el registro a los que pertenece, y el bloque de detalle de su
        tipo de evento. Los demás bloques de detalle son null.
      properties:
        id:
          type: string
          description: '`<source>:<uuid>`, único dentro de la línea de tiempo.'
          example: session:3fa85f64-5717-4562-b3fc-2c963f66afa6
        event_type:
          type: string
          enum:
            - network_detected
            - signal_observed
            - network_active
            - network_in_review
            - network_resolved
            - network_dismissed
            - verification_attempt
            - transaction
            - login
            - rule_hit
            - case_linked
            - note_added
        occurred_at:
          type: string
          format: date-time
          description: Cuándo ocurrió.
        ingested_at:
          type: string
          format: date-time
          description: Cuándo lo almacenó Didit.
        label:
          type: string
          description: >-
            Una etiqueta breve en inglés, por ejemplo `Verification attempt 2 of
            3`.
        metadata:
          type: object
          description: >-
            En los eventos propios de la red, los mismos metadatos que la
            cronología predeterminada. Vacío en caso contrario.
        account:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineAccount'
          nullable: true
          description: >-
            La cuenta de miembro. Null para los eventos propios de la red,
            `case_linked` y `note_added`.
        source_ref:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineSourceRef'
          nullable: true
          description: >-
            El registro de origen. Es null para los eventos propios de la red y
            para `note_added`.
        verification_attempt:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineAttempt'
          nullable: true
          description: Se establece en los eventos `verification_attempt`.
        transaction:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineTransaction'
          nullable: true
          description: Se establece en los eventos `transaction`.
        login:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineLogin'
          nullable: true
          description: Se establece en los eventos `login`.
        rule_hit:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineRuleHit'
          nullable: true
          description: Se establece en los eventos `rule_hit`.
        case_linked:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineCaseLinked'
          nullable: true
          description: Se establece en los eventos `case_linked`.
        note_added:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineNoteAdded'
          nullable: true
          description: >-
            Se establece en los eventos `note_added`. Nunca se devuelve a una
            clave de API.
    NetworkTimelineAccount:
      type: object
      description: La cuenta de miembro a la que pertenece el evento.
      properties:
        node_id:
          type: string
          description: >-
            `<kind>:<uuid>`, donde kind es `vendor_user`, `vendor_business` o
            `transaction_party`.
          example: vendor_user:3fa85f64-5717-4562-b3fc-2c963f66afa6
        node_type:
          type: string
          enum:
            - account
            - business_account
            - transaction_party
        uuid:
          type: string
          format: uuid
        vendor_data:
          type: string
          nullable: true
        display_name:
          type: string
          nullable: true
        ownership:
          type: string
          enum:
            - owned
            - organization
          description: >-
            `owned` cuando el registro pertenece a la aplicación a la que
            llamaste (para un miembro de la consola, a una aplicación a la que
            se le concedió acceso). `organization` cuando pertenece a otra
            aplicación de tu organización.
        route:
          $ref: '#/components/schemas/NetworkTimelineRoute'
    NetworkTimelineSourceRef:
      type: object
      description: El registro del que se leyó el evento.
      properties:
        kind:
          type: string
          enum:
            - session
            - business_session
            - transaction
            - monitoring_event
            - case
        id:
          type: string
          format: uuid
        ownership:
          type: string
          enum:
            - owned
            - organization
          description: >-
            `owned` cuando el registro pertenece a la aplicación a la que
            llamaste (para un miembro de la consola, a una aplicación a la que
            se le concedió acceso). `organization` cuando pertenece a otra
            aplicación de tu organización.
        route:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineRoute'
          description: No aparece para `monitoring_event` ni para `case`.
    NetworkTimelineAttempt:
      type: object
      description: Una sesión de verificación de la cuenta.
      properties:
        session_id:
          type: string
          format: uuid
          description: >-
            El UUID de la sesión, o el UUID de la sesión de empresa en el caso
            de una empresa.
        session_number:
          type: integer
          nullable: true
        attempt:
          type: integer
          description: >-
            La posición de esta sesión entre las sesiones de la cuenta, en orden
            de creación.
        attempt_count:
          type: integer
          description: Cuántas sesiones tiene la cuenta.
        status:
          type: string
          description: El estado de la sesión, por ejemplo `Approved` o `Declined`.
        status_changed_at:
          type: string
          format: date-time
          nullable: true
        decline_reasons:
          type: array
          items:
            $ref: '#/components/schemas/NetworkTimelineDeclineReason'
          description: >-
            Solo en una sesión rechazada: sus advertencias, de la más antigua a
            la más reciente, una vez por advertencia. Vacío en caso contrario.
    NetworkTimelineTransaction:
      type: object
      description: >-
        Una transacción en la que participó una cuenta miembro, fechada según su
        fecha de transacción.
      properties:
        transaction_id:
          type: string
          format: uuid
        transaction_number:
          type: integer
          nullable: true
        transaction_type:
          type: string
        action_type:
          type: string
        amount:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineAmount'
          nullable: true
          description: Null cuando la transacción no tiene importe.
        status:
          type: string
        decision_reason_code:
          type: string
          nullable: true
        decision_reason_label:
          type: string
          nullable: true
        party_role:
          type: string
          description: >-
            El rol de la cuenta en la transacción: `APPLICANT`, `REMITTER`,
            `BENEFICIARY` o `COUNTERPARTY`.
    NetworkTimelineLogin:
      type: object
      description: >-
        Un evento de inicio de sesión que publicaste para una persona a través
        de la API de eventos.
      properties:
        action:
          type: string
          description: >-
            `<event_category>.<action_type>`: `auth.login` o
            `security.login_succeeded` para un inicio de sesión,
            `auth.login_failed` o `security.login_failed` para uno fallido.
        succeeded:
          type: boolean
        status:
          type: string
          description: El estado del evento.
        ip:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineIP'
          nullable: true
          description: Null cuando el evento no tiene dirección IP.
        device:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineDevice'
          nullable: true
          description: >-
            Null cuando el evento no tiene huella digital ni contexto del
            dispositivo.
        is_first_login:
          type: boolean
          description: El primer inicio de sesión correcto registrado de la cuenta.
        is_new_device:
          type: boolean
          description: >-
            Un inicio de sesión correcto desde un dispositivo que no se usó en
            ninguno de los inicios de sesión correctos anteriores de la cuenta.
            Nunca es true en el primer inicio de sesión.
    NetworkTimelineRuleHit:
      type: object
      description: >-
        Una regla en producción que coincidió con una transacción o un evento de
        un miembro. No se incluyen las coincidencias en modo de prueba.
      properties:
        rule_id:
          type: string
          format: uuid
        rule_title:
          type: string
        rule_category:
          type: string
        rule_source:
          type: string
        severity:
          type: string
          nullable: true
        score_delta:
          type: integer
        status_target:
          type: string
          nullable: true
        action_summary:
          type: string
          nullable: true
    NetworkTimelineCaseLinked:
      type: object
      description: >-
        Un caso abierto para la red en tu organización. `source_ref.ownership`
        indica si pertenece a la aplicación a la que llamaste.
      properties:
        case_id:
          type: string
          format: uuid
        case_number:
          type: string
          nullable: true
        status:
          type: string
        author_email:
          type: string
          nullable: true
        author_name:
          type: string
          nullable: true
    NetworkTimelineNoteAdded:
      type: object
      description: Una nota dejada en la red. No se incluye el texto de la nota.
      properties:
        note_id:
          type: string
          format: uuid
        author_email:
          type: string
    NetworkTimelineRoute:
      type: object
      description: >-
        Desde dónde se abre el registro: su tipo, su UUID y la aplicación a la
        que pertenece.
      properties:
        kind:
          type: string
          description: >-
            `user`, `business` o `transaction_party` para una cuenta; `session`,
            `business_session` o `transaction` para un registro de origen.
        id:
          type: string
          format: uuid
        application_id:
          type: string
          format: uuid
    NetworkTimelineDeclineReason:
      type: object
      properties:
        risk:
          type: string
          description: El código de advertencia.
        feature:
          type: string
          description: La función que generó la advertencia.
        short_description:
          type: string
    NetworkTimelineAmount:
      type: object
      properties:
        value:
          type: string
          description: Importe decimal como cadena.
        currency:
          type: string
        direction:
          type: string
          nullable: true
    NetworkTimelineIP:
      type: object
      properties:
        address:
          type: string
        country_code:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        connection_type:
          type: string
          nullable: true
          description: La etiqueta del tipo de conexión de la dirección, como texto libre.
        is_vpn_or_tor:
          type: boolean
        is_data_center:
          type: boolean
    NetworkTimelineDevice:
      type: object
      properties:
        fingerprint:
          type: string
          nullable: true
        label:
          type: string
          nullable: true
          description: >-
            Una etiqueta de dispositivo legible creada a partir del contexto de
            dispositivo del evento.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clave de API de tu aplicación, que encontrarás en Developers -> API
        keys en la Business Console. La clave principal tiene acceso completo.
        Una clave con nombre puede tener un alcance limitado: ninguno, lectura o
        escritura por recurso, limitada a algunos flujos o a sesiones aprobadas,
        a una lista de direcciones IP y a una fecha de caducidad. 401 significa
        que la clave es incorrecta, se revocó o expiró; 403 significa que no se
        envió ninguna clave, que la clave no tiene acceso a este recurso o
        acción, o que la solicitud provino de una dirección fuera de su lista de
        IP; 404 en una ruta de sesión significa que la sesión está fuera de los
        flujos o estados de la clave. Una clave sin acceso a contenido
        multimedia recibe las URL de imágenes, videos y PDF como null, y una
        clave sin permiso de escritura en sesiones recibe los enlaces y tokens
        de sesión como null. Consulta https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.