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

# Como acionar varreduras de código pela API do Devin

> Guia para iniciar varreduras de código do Devin programaticamente, consultar o status e ler resultados usando as APIs v3 de organização e Enterprise

A API de varreduras de código permite iniciar varreduras, consultar seu status e ler resultados sem usar o app web. Todas as operações estão disponíveis em dois escopos, seguindo a mesma [separação entre organização e Enterprise](/pt-BR/api-reference/v3/overview) do restante da API v3:

* **Organização** (`/v3/organizations/{org_id}/code-scans/...`) opera em uma única organização e exige a permissão de nível de organização `UseCodeScans` (gravação) ou `ViewCodeScans` (leitura).
* **Enterprise** (`/v3/enterprise/...`) abrange todas as organizações da Enterprise e exige a permissão de nível Enterprise `UseAccountCodeScans` (gravação) ou `ViewAccountCodeScans` (leitura). Os endpoints de criação de varreduras e de remediação ainda recebem um `org_id` no caminho, pois uma varredura pertence a uma única organização.

Ambos os escopos usam uma Chave de API de [usuário de serviço](/pt-BR/api-reference/v3/service-users/members-service-users) ou um [token de acesso pessoal](/pt-BR/api-reference/personal-access-tokens) para autenticação e compartilham os mesmos formatos de requisição e resposta.

<div id="endpoints">
  ## Endpoints
</div>

| Operação                                  | Organização                                                                                                           | Enterprise                                                                                                                |
| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| Iniciar varredura de código               | [`POST /v3/organizations/{org_id}/code-scans`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-start)     | [`POST /v3/enterprise/organizations/{org_id}/code-scans`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-start) |
| Iniciar varredura de ingestão             | [`POST .../code-scans/ingestion`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-start-ingestion)        | [`POST .../code-scans/ingestion`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-start-ingestion)               |
| Listar varreduras de código               | [`GET /v3/organizations/{org_id}/code-scans/scans`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-list) | [`GET /v3/enterprise/code-scans/scans`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-list)                    |
| Listar perfis de varredura de código      | [`GET .../code-scans/profiles`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-profiles)                 | [`GET /v3/enterprise/code-scans/profiles`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-profiles)             |
| Obter perfil de varredura de código       | [`GET .../code-scans/profiles/{profile_id}`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-profile)     | [`GET /v3/enterprise/code-scans/profiles/{profile_id}`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-profile) |
| Listar resultados de varredura de código  | [`GET .../code-scans/findings`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-findings)                 | [`GET /v3/enterprise/code-scans/findings`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-findings)             |
| Obter métricas de varredura de código     | [`GET .../code-scans/metrics`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-metrics)                   | [`GET /v3/enterprise/code-scans/metrics`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-metrics)               |
| Corrigir resultado da varredura de código | [`POST .../findings/{finding_id}/remediate`](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-remediate)   | [`POST .../findings/{finding_id}/remediate`](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-remediate)          |

As mesmas operações também estão disponíveis nos caminhos `/v3beta1/...`, com formatos de requisição e resposta idênticos. A tabela abrange o fluxo de varredura; a especificação OpenAPI v3 também disponibiliza o agendamento do Auto Scan (`POST .../code-scans/{scan_id}/auto-scan`) e a reatribuição de perfil (`PUT .../code-scans/{scan_id}/profile`) em ambos os escopos.

As etapas abaixo usam o escopo da organização; use os caminhos e as permissões do Enterprise se sua credencial tiver escopo de Enterprise.

<div id="typical-flow">
  ## Fluxo típico
</div>

<Steps>
  <Step title="Escolha um perfil (opcional)">
    Chame [Listar perfis de varredura de código](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-profiles) e escolha um perfil no modo `discover`. Omita o perfil para executar uma varredura de segurança padrão.
  </Step>

  <Step title="Inicie a varredura">
    ```bash theme={null}
    curl -X POST "https://api.devin.ai/v3/organizations/$ORG_ID/code-scans" \
      -H "Authorization: Bearer $DEVIN_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"repo_name": "acme/payments"}'
    ```

    A resposta é `201` e inclui o registro da varredura. Guarde o `scan_id`. Um `409` significa que o backlog de varreduras da organização está cheio; tente novamente mais tarde.
  </Step>

  <Step title="Consulte o status até a conclusão">
    Chame [Listar varreduras de código](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-list) (filtre por `repo_name`) até que o `status` da varredura seja `completed` (ou `failed` / `cancelled`). Considere esses três estados como finais. `awaiting_user_input` ocorre apenas em varreduras interativas iniciadas no app; as varreduras iniciadas pela API não são interativas e não entram nesse estado.
  </Step>

  <Step title="Leia os resultados">
    Chame [Listar resultados de varredura de código](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-findings) com `scan_id` para percorrer os resultados por páginas, filtrando opcionalmente por `severity` e `status`.
  </Step>

  <Step title="Corrija">
    Chame [Corrigir resultado da varredura de código](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-remediate) para que o Devin abra uma PR que corrija um resultado.
  </Step>
</Steps>

<div id="ingestion-scans">
  ## Varreduras de ingestão
</div>

Para que o Devin faça a triagem dos resultados produzidos por outro scanner, crie um perfil no modo `ingest` no app web, importe o relatório do scanner por meio da [API de anexos](/pt-BR/api-reference/v3/attachments/post-organizations-attachments) (um endpoint no escopo da organização que exige a permissão de organização `UseDevinSessions`, além das permissões de varredura de código) e, em seguida, chame [Iniciar varredura de ingestão](/pt-BR/api-reference/v3/code-scans/organizations-code-scans-start-ingestion) (ou o [equivalente do Enterprise](/pt-BR/api-reference/v3/code-scans/enterprise-code-scans-start-ingestion)) com `profile_id` e `attachment_urls`.
