> ## 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.

# Criar um job de extração de dados

> Cria e enfileira um job de extração de dados ou retorna o job de extração existente quando a solicitação duplicada é idempotente.



## OpenAPI

````yaml pt/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: Documentação da API do componente Manager do Fetcher
  license:
    identifier: Elastic-2.0
    name: Elastic License 2.0 (Source Available)
  title: API do Manager do Fetcher
  version: 1.0.0
servers: []
security:
  - BearerAuth: []
tags:
  - description: Ciclo de vida de conexões de banco de dados e operações de esquema.
    name: Connections
  - description: Operações legadas de atribuição de conexões e migração.
    name: Migration
  - description: Operações de criação e consulta de status de jobs de extração de dados.
    name: Fetcher
paths:
  /v1/fetcher:
    post:
      tags:
        - Fetcher
      summary: Criar um job de extração de dados
      description: >-
        Cria e enfileira um job de extração de dados ou retorna o job de
        extração existente quando a solicitação duplicada é idempotente.
      operationId: create-fetcher-job
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetcherRequest'
        description: Payload da solicitação do Fetcher.
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetcherResponse'
          description: Solicitação duplicada; o job de extração existente é retornado.
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetcherResponse'
          description: Aceito
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Solicitação inválida
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Não autorizado
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Proibido
        '409':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Conflito
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Corpo da solicitação muito grande
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Entidade não processável
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Erro interno do servidor
components:
  schemas:
    FetcherRequest:
      additionalProperties: false
      properties:
        dataRequest:
          $ref: '#/components/schemas/DataRequest'
          description: Campos e filtros a serem extraídos das fontes de dados configuradas.
          examples:
            - mappedFields:
                ledger:
                  transactions:
                    - id
                    - amount
        metadata:
          additionalProperties: {}
          description: >-
            Metadados definidos pelo chamador e armazenados com o job de
            extração; source identifica o produto proprietário.
          examples:
            - correlationId: settlement-2026-07-13
              source: payments
          properties:
            source:
              description: >-
                Produto proprietário usado no roteamento de notificações e na
                validação da propriedade da conexão.
              examples:
                - payments
              type: string
          required:
            - source
          type: object
      required:
        - dataRequest
        - metadata
      type: object
    FetcherResponse:
      additionalProperties: false
      properties:
        createdAt:
          description: Data e hora UTC em que o job de extração foi criado.
          examples:
            - '2026-07-13T12:00:00Z'
          format: date-time
          type: string
        jobId:
          description: Identificador exclusivo do job de extração.
          examples:
            - 01980a89-21f0-7d7e-a109-564b5c6f53ac
          type: string
        message:
          description: Resultado da solicitação de criação.
          examples:
            - Job criado e enfileirado para processamento
          type: string
        status:
          description: Status atual de processamento do job de extração.
          examples:
            - pending
          type: string
      required:
        - jobId
        - status
        - createdAt
        - message
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Código de erro de domínio estável e legível por máquina, restrito ao
            serviço emissor (formato: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: Explicação legível específica desta ocorrência do problema.
          examples:
            - A propriedade foo é obrigatória, mas está ausente.
          type: string
        errors:
          description: Lista opcional de detalhes individuais do erro
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: Referência URI que identifica a ocorrência específica do problema.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: Código de status HTTP
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            Resumo curto e legível do tipo de problema. Esse valor não deve
            mudar entre ocorrências do erro.
          examples:
            - Requisição inválida
          type: string
        type:
          default: about:blank
          description: Referência URI para a documentação legível do erro.
          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: >-
            Condições opcionais de filtro agrupadas por fonte de dados, tabela e
            campo.
          examples:
            - ledger:
                transactions:
                  status:
                    eq:
                      - approved
          type: object
        mappedFields:
          additionalProperties:
            additionalProperties:
              items:
                type: string
              type:
                - array
                - 'null'
            type: object
          description: Campos a serem extraídos, agrupados por fonte de dados e tabela.
          examples:
            - ledger:
                transactions:
                  - id
                  - amount
          type: object
      required:
        - mappedFields
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Local em que o erro ocorreu, por exemplo, 'body.items[3].tags' ou
            'path.thing-id'
          type: string
        message:
          description: Texto da mensagem de erro
          type: string
        value:
          description: Valor no local indicado
      type: object
    FilterCondition:
      additionalProperties: false
      properties:
        between:
          description: Limites inferior e superior inclusivos do campo.
          examples:
            - - 100
              - 1000
          items: {}
          type:
            - array
            - 'null'
        eq:
          description: Valores aos quais o campo pode ser igual.
          examples:
            - - active
              - pending
          items: {}
          type:
            - array
            - 'null'
        gt:
          description: Valor único que o campo deve superar.
          examples:
            - - 100
          items: {}
          type:
            - array
            - 'null'
        gte:
          description: Valor único ao qual o campo deve ser maior ou igual.
          examples:
            - - '2025-06-01'
          items: {}
          type:
            - array
            - 'null'
        in:
          description: Valores com os quais o campo pode corresponder.
          examples:
            - - active
              - pending
              - suspended
          items: {}
          type:
            - array
            - 'null'
        like:
          description: Padrão LIKE único ao qual o campo deve corresponder.
          examples:
            - - '%active%'
          items: {}
          type:
            - array
            - 'null'
        lt:
          description: Valor único abaixo do qual o campo deve estar.
          examples:
            - - 1000
          items: {}
          type:
            - array
            - 'null'
        lte:
          description: Valor único ao qual o campo deve ser menor ou igual.
          examples:
            - - '2025-06-30'
          items: {}
          type:
            - array
            - 'null'
        ne:
          description: Valor único do qual o campo deve ser diferente.
          examples:
            - - active
          items: {}
          type:
            - array
            - 'null'
        nin:
          description: Valores com os quais o campo não deve corresponder.
          examples:
            - - deleted
              - archived
          items: {}
          type:
            - array
            - 'null'
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: Token JWT do tipo bearer emitido pelo provedor de identidade.
      scheme: bearer
      type: http

````