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

# Crear un job de extracción de datos

> Crea y pone en cola un job de extracción de datos, o devuelve el job de extracción existente si la solicitud duplicada es idempotente.



## OpenAPI

````yaml es/openapi/v3-current/connections.yaml post /v1/fetcher
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian
    url: https://github.com/LerianStudio/fetcher/discussions
  description: Documentación de la API del componente Fetcher Manager
  license:
    identifier: Elastic-2.0
    name: Elastic License 2.0 (Source Available)
  title: API de Fetcher Manager
  version: 1.0.0
servers: []
security:
  - BearerAuth: []
tags:
  - description: >-
      Operaciones del ciclo de vida y del esquema de las conexiones de base de
      datos.
    name: Connections
  - description: Operaciones heredadas de asignación de conexiones y migración.
    name: Migration
  - description: Operaciones de creación y estado de jobs de extracción de datos.
    name: Fetcher
paths:
  /v1/fetcher:
    post:
      tags:
        - Fetcher
      summary: Crear un job de extracción de datos
      description: >-
        Crea y pone en cola un job de extracción de datos, o devuelve el job de
        extracción existente si la solicitud duplicada es idempotente.
      operationId: create-fetcher-job
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetcherRequest'
        description: Cuerpo de la solicitud de Fetcher.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetcherResponse'
          description: Solicitud duplicada; se devuelve el job de extracción existente.
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetcherResponse'
          description: Aceptado
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Solicitud incorrecta
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: No autorizado
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Prohibido
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Conflicto
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Entidad de solicitud demasiado grande
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Entidad no procesable
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error interno del servidor
components:
  schemas:
    FetcherRequest:
      additionalProperties: false
      properties:
        dataRequest:
          $ref: '#/components/schemas/DataRequest'
          description: >-
            Campos y filtros que se extraerán de las fuentes de datos
            configuradas.
          examples:
            - mappedFields:
                ledger:
                  transactions:
                    - id
                    - amount
        metadata:
          additionalProperties: {}
          description: >-
            Metadatos definidos por quien realiza la llamada y almacenados con
            el job de extracción; source identifica el producto propietario.
          examples:
            - correlationId: settlement-2026-07-13
              source: payments
          properties:
            source:
              description: >-
                Producto propietario que se usa para enrutar notificaciones y
                validar la propiedad de la conexión.
              examples:
                - payments
              type: string
          required:
            - source
          type: object
      required:
        - dataRequest
        - metadata
      type: object
    FetcherResponse:
      additionalProperties: false
      properties:
        createdAt:
          description: Fecha y hora UTC de creación del job de extracción.
          examples:
            - '2026-07-13T12:00:00Z'
          format: date-time
          type: string
        jobId:
          description: Identificador único del job de extracción.
          examples:
            - 01980a89-21f0-7d7e-a109-564b5c6f53ac
          type: string
        message:
          description: Resultado de la solicitud de creación.
          examples:
            - Job creado y puesto en cola para su procesamiento
          type: string
        status:
          description: Estado actual de procesamiento del job de extracción.
          examples:
            - pending
          type: string
      required:
        - jobId
        - status
        - createdAt
        - message
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Código de error de dominio estable y legible por máquina, limitado
            al servicio emisor (formato <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            Explicación legible para humanos específica de esta instancia del
            problema.
          examples:
            - La propiedad foo es obligatoria, pero no está presente.
          type: string
        errors:
          description: Lista opcional de detalles individuales de los errores
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: Referencia URI que identifica la instancia específica del problema.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: Código de estado HTTP
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            Resumen breve y legible para humanos del tipo de problema. Este
            valor no debe cambiar entre distintas instancias del error.
          examples:
            - Solicitud incorrecta
          type: string
        type:
          default: about:blank
          description: Referencia URI a documentación legible para humanos sobre el error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    DataRequest:
      additionalProperties: false
      properties:
        filters:
          additionalProperties:
            additionalProperties:
              additionalProperties:
                $ref: '#/components/schemas/FilterCondition'
              type: object
            type: object
          description: >-
            Condiciones de filtro opcionales agrupadas por fuente de datos,
            tabla y campo.
          examples:
            - ledger:
                transactions:
                  status:
                    eq:
                      - approved
          type: object
        mappedFields:
          additionalProperties:
            additionalProperties:
              items:
                type: string
              type:
                - array
                - 'null'
            type: object
          description: Campos que se extraerán, agrupados por fuente de datos y tabla.
          examples:
            - ledger:
                transactions:
                  - id
                  - amount
          type: object
      required:
        - mappedFields
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Ubicación donde se produjo el error, por ejemplo,
            'body.items[3].tags' o 'path.thing-id'
          type: string
        message:
          description: Texto del mensaje de error
          type: string
        value:
          description: Valor en la ubicación indicada
      type: object
    FilterCondition:
      additionalProperties: false
      properties:
        between:
          description: Límites inferior y superior inclusivos del campo.
          examples:
            - - 100
              - 1000
          items: {}
          type:
            - array
            - 'null'
        eq:
          description: Valores a los que puede ser igual el campo.
          examples:
            - - active
              - pending
          items: {}
          type:
            - array
            - 'null'
        gt:
          description: Valor único que el campo debe superar.
          examples:
            - - 100
          items: {}
          type:
            - array
            - 'null'
        gte:
          description: Valor único que el campo debe igualar o superar.
          examples:
            - - '2025-06-01'
          items: {}
          type:
            - array
            - 'null'
        in:
          description: Valores con los que puede coincidir el campo.
          examples:
            - - active
              - pending
              - suspended
          items: {}
          type:
            - array
            - 'null'
        like:
          description: Patrón LIKE único con el que debe coincidir el campo.
          examples:
            - - '%active%'
          items: {}
          type:
            - array
            - 'null'
        lt:
          description: Valor único respecto del cual el campo debe ser menor.
          examples:
            - - 1000
          items: {}
          type:
            - array
            - 'null'
        lte:
          description: Valor único respecto del cual el campo debe ser menor o igual.
          examples:
            - - '2025-06-30'
          items: {}
          type:
            - array
            - 'null'
        ne:
          description: Valor único al que el campo no debe ser igual.
          examples:
            - - active
          items: {}
          type:
            - array
            - 'null'
        nin:
          description: Valores con los que el campo no debe coincidir.
          examples:
            - - deleted
              - archived
          items: {}
          type:
            - array
            - 'null'
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: Token JWT de tipo bearer emitido por el proveedor de identidad.
      scheme: bearer
      type: http

````