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

# Listas restritivas por documento

> Detecta o tipo pelo numero de digitos: 11 = CPF, 14 = CNPJ. Outro tamanho retorna 400. Aqui o documento e apenas limpo; o digito verificador NAO e validado, so o tamanho. Use /cpf ou /cnpj quando souber o tipo (eles validam o digito verificador).



## OpenAPI

````yaml /openapi/listas-restritivas.json get /listas-restritivas/{documento}
openapi: 3.0.0
info:
  title: Sherlocker Listas Restritivas API
  description: >-
    Consulta consolidada de sancoes, impedimentos e alertas (PEP) contra 13
    listas oficiais. Retorna ocorrencias agrupadas (sancoes / restritivas /
    alertas) e um mapa de cobertura auditavel por lista, com saude da fonte e
    nivel de confiabilidade. Sincrono: a resposta ja vem completa, sem job nem
    polling.
  version: '1.0'
servers:
  - url: https://221b-api.sherlocker.com.br/api/v1
security:
  - tokenAuth: []
paths:
  /listas-restritivas/{documento}:
    get:
      tags:
        - Listas Restritivas
      summary: Listas restritivas por documento
      description: >-
        Detecta o tipo pelo numero de digitos: 11 = CPF, 14 = CNPJ. Outro
        tamanho retorna 400. Aqui o documento e apenas limpo; o digito
        verificador NAO e validado, so o tamanho. Use /cpf ou /cnpj quando
        souber o tipo (eles validam o digito verificador).
      operationId: getListasRestritivasByDocumento
      parameters:
        - name: documento
          in: path
          required: true
          description: CPF (11 digitos) ou CNPJ (14 digitos), com ou sem formatacao
          schema:
            type: string
            example: '12345678000199'
        - name: nome
          in: query
          required: false
          description: >-
            Nome / razao social. Se omitido, e resolvido automaticamente da
            base.
          schema:
            type: string
      responses:
        '200':
          description: >-
            Ocorrencias agrupadas + mapa de cobertura (ver exemplos em /cpf e
            /cnpj)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListasRestritivasResponse'
        '400':
          description: Documento deve ter 11 (CPF) ou 14 (CNPJ) digitos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                statusCode: 400
                message: Documento deve ter 11 (CPF) ou 14 (CNPJ) dígitos
                path: /api/v1/listas-restritivas/123
                timestamp: '2026-06-17T10:45:17.676Z'
        '401':
          description: Token ausente ou invalido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ListasRestritivasResponse:
      type: object
      properties:
        documento:
          type: object
          properties:
            tipo:
              type: string
              enum:
                - cpf
                - cnpj
            numero:
              type: string
              description: Apenas digitos
            nome:
              type: string
              nullable: true
            nome_origem:
              type: string
              enum:
                - informado
                - resolvido
                - nao_resolvido
              description: >-
                informado=veio na query; resolvido=resolvido da base interna;
                nao_resolvido=nao encontrado
        consultado_em:
          type: string
          description: ISO 8601
        resumo:
          $ref: '#/components/schemas/ResumoListasRestritivas'
        grupos:
          type: object
          properties:
            sancoes:
              type: array
              items:
                $ref: '#/components/schemas/Ocorrencia'
            restritivas:
              type: array
              items:
                $ref: '#/components/schemas/Ocorrencia'
            alertas:
              type: array
              items:
                $ref: '#/components/schemas/Ocorrencia'
        cobertura:
          type: array
          items:
            $ref: '#/components/schemas/CoberturaItem'
    ErrorResponse:
      type: object
      properties:
        statusCode:
          type: number
          example: 400
        message:
          type: string
          example: CNPJ invalido
        path:
          type: string
          example: /api/v1/listas-restritivas/cnpj/11111111111111
        timestamp:
          type: string
          example: '2026-06-17T10:45:18.042Z'
    ResumoListasRestritivas:
      type: object
      description: Veredito de uma olhada.
      properties:
        tem_ocorrencia:
          type: boolean
        tem_sancao:
          type: boolean
          description: Grupo sancoes OU restritivas tem registro
        tem_alerta:
          type: boolean
          description: >-
            Grupo alertas tem registro (PEP). Um PEP sozinho nao marca
            tem_sancao.
        total_ocorrencias:
          type: number
        por_grupo:
          type: object
          properties:
            sancoes:
              type: number
            restritivas:
              type: number
            alertas:
              type: number
        fontes_aplicaveis:
          type: number
          description: >-
            Listas que se aplicam ao tipo do documento (10 para CPF, 10 para
            CNPJ)
        fontes_consultadas:
          type: number
        com_ocorrencia:
          type: number
        indisponiveis:
          type: number
        nao_aplicaveis:
          type: number
        confiabilidade:
          type: string
          enum:
            - completa
            - parcial
            - indisponivel
          description: >-
            completa=todas as listas aplicaveis responderam; parcial=algumas
            indisponiveis; indisponivel=todas as aplicaveis cairam. Trate
            negativo com cautela se != completa.
    Ocorrencia:
      type: object
      description: Um registro encontrado em uma lista.
      properties:
        lista_id:
          type: string
          description: >-
            Identificador da lista (ceis, cnep, ceaf, tcu, bcb, sancoes,
            lista-suja, cepim, acordos-leniencia, ibama, ibama-autos, pep,
            debarment-multilateral)
          example: cnep
        fonte:
          type: string
          description: Nome legivel da fonte do registro
          example: CNEP
        grupo:
          type: string
          enum:
            - sancoes
            - restritivas
            - alertas
          example: sancoes
        nome_na_fonte:
          type: string
          description: Nome como consta na lista
          example: ACME LTDA
        titulo:
          type: string
          description: Nome oficial da lista
          example: CNEP — Empresas Punidas
        orgao:
          type: string
          description: Orgao sancionador, quando houver
          example: Controladoria-Geral da Uniao
        data_inicio:
          type: string
          description: Data ISO (YYYY-MM-DD)
          example: '2024-01-01'
        data_fim:
          type: string
          description: Data ISO (YYYY-MM-DD)
          example: '2027-01-01'
        vigente:
          type: boolean
          description: data_fim >= hoje (true se nao ha data_fim)
          example: true
        fonte_oficial:
          type: string
          description: URL oficial da lista
          example: https://portaldatransparencia.gov.br
        ultima_atualizacao:
          type: string
          nullable: true
          description: YYYY-MM-DD HH:MM:SS
          example: '2026-06-15 13:00:00'
        detalhes:
          type: object
          description: Payload bruto do registro (campos variam por lista)
          additionalProperties: true
    CoberturaItem:
      type: object
      description: >-
        Status de uma das 13 listas. O array cobertura sempre traz as 13, mesmo
        sem registro, para auditoria do que foi (ou nao foi) verificado.
      properties:
        lista_id:
          type: string
          example: ceis
        nome:
          type: string
          example: CEIS — Empresas Inidoneas e Suspensas
        grupo:
          type: string
          enum:
            - sancoes
            - restritivas
            - alertas
        resultado:
          type: string
          enum:
            - encontrado
            - nada_consta
            - indisponivel
            - nao_aplicavel
            - requer_nome
          description: >-
            encontrado=ha registro; nada_consta=verificado sem registro;
            indisponivel=fonte degradada (STALE/FAILED); nao_aplicavel=lista nao
            cobre esse tipo de documento; requer_nome=lista exige nome e nenhum
            foi informado nem resolvido
        ocorrencias:
          type: number
          example: 0
        saude:
          type: string
          enum:
            - OK
            - STALE
            - FAILED
          nullable: true
          description: Saude da fonte; null quando nao consultada
        ultima_atualizacao:
          type: string
          nullable: true
          example: '2026-06-15 13:00:00'
        motivo:
          type: string
          description: Razao quando resultado=indisponivel
        fonte_oficial:
          type: string
          example: https://portaldatransparencia.gov.br
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: query
      name: token

````