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

# Démarrer une analyse d’ingestion (API Devin)

> Démarrer une analyse de code Devin en mode d’ingestion qui assure le triage des constats d’un scanner externe à l’aide d’un profil d’ingestion via l’API d’organisation v3

<div id="permissions">
  ## Autorisations
</div>

Nécessite un [utilisateur de service](/fr/api-reference/v3/service-users/members-service-users) ou un [jeton d’accès personnel](/fr/api-reference/personal-access-tokens) disposant de l’autorisation `UseCodeScans` au niveau de l’organisation.

<div id="behavior">
  ## Comportement
</div>

Met en file d’attente une analyse de code en mode d’ingestion. Au lieu d’identifier les problèmes à partir de zéro, une analyse d’ingestion utilise des constats produits ailleurs (par exemple, un rapport SAST) et charge Devin de les trier et de les valider par rapport au dépôt. L’analyse est lancée de manière asynchrone par le répartiteur d’analyses et attribuée au principal appelant. L’équivalent à l’échelle de l’Enterprise est [Démarrer une analyse d’ingestion (Enterprise)](/fr/api-reference/v3/code-scans/enterprise-code-scans-start-ingestion).

<div id="request-fields">
  ### Champs de la requête
</div>

* `repo_name` (obligatoire) : nom complet du dépôt, p. ex. `owner/repo`.
* `profile_id` (obligatoire) : un [profil d’analyse](/fr/api-reference/v3/code-scans/organizations-code-scans-profiles) en mode `ingest`. Un profil en mode `discover` est rejeté avec le code `400`.
* `host` : hôte Git du dépôt, s’il ne peut pas être déduit.
* `attachment_urls` : URL de fichiers joints Devin (par exemple, un rapport de scanner exporté) à fournir pour l’analyse. Importez d’abord les fichiers via l’[API des fichiers joints](/fr/api-reference/v3/attachments/post-organizations-attachments), qui requiert l’autorisation `UseDevinSessions`.

<div id="errors">
  ### Erreurs
</div>

* `400` si `profile_id` ne correspond pas à un profil en mode d’ingestion.
* `404` si le dépôt ou le profil n’est pas visible par l’organisation.
* `409` si le backlog d’analyses de l’organisation est saturé. Réessayez plus tard.


## OpenAPI

````yaml fr/v3-openapi.yaml POST /v3/organizations/{org_id}/code-scans/ingestion
openapi: 3.1.0
info:
  description: API Devin v3 avec authentification par compte de service et RBAC
  title: Devin API v3
  version: 3.0.0
servers: []
security:
  - bearerAuth: []
paths:
  /v3/organizations/{org_id}/code-scans/ingestion:
    post:
      tags:
        - code-scans
      summary: Démarrer l’analyse d’ingestion
      description: >-
        Démarrer une analyse de code en mode d’ingestion sur un dépôt de
        l’organisation.


        L’analyse est mise en file d’attente et lancée de manière asynchrone par
        le répartiteur d’analyses.

        Seuls les profils en mode ingest sont acceptés ; un profil non ingest
        est rejeté

        avec ``400``. Les URL facultatives des pièces jointes (téléversées via
        l’API des pièces jointes)

        sont fournies à l’analyse. Renvoie ``409`` lorsque la file d’attente des
        analyses de l’organisation

        est pleine.
      operationId: >-
        handle_start_ingestion_scan_v3_organizations__org_id__code_scans_ingestion_post
      parameters:
        - description: 'ID de l’organisation (préfixe : org-)'
          in: path
          name: org_id
          required: true
          schema:
            example: org-abc123def456
            title: Org Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartIngestionScanRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CodeScanResponse'
          description: Réponse réussie
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Non autorisé
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Interdit
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Introuvable
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Conflit
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Contenu non traitable
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          description: Trop de requêtes
components:
  schemas:
    StartIngestionScanRequest:
      description: >-
        Corps de la requête pour démarrer une analyse de code en mode
        d’ingestion.


        Accepte uniquement un profil d’analyse en mode d’ingestion (ingest) : le
        profil est exécuté

        sur le dépôt indiqué.
      properties:
        attachment_urls:
          anyOf:
            - items:
                format: uri
                maxLength: 2083
                minLength: 1
                type: string
              maxItems: 10
              type: array
            - type: 'null'
          description: >-
            URL des pièces jointes Devin à fournir à l’analyse, par exemple des
            fichiers téléversés via l’API des pièces jointes. Les pièces jointes
            doivent appartenir à l’organisation analysée.
          title: Attachment Urls
        host:
          anyOf:
            - type: string
            - type: 'null'
          description: Hôte Git du dépôt, s’il est connu.
          title: Host
        profile_id:
          description: >-
            Profil d’analyse en mode d’ingestion à exécuter. Doit être un profil
            ingest ; les profils non ingest sont rejetés avec le code 400.
          title: Profile Id
          type: string
        repo_name:
          description: Nom complet du dépôt à analyser.
          title: Repo Name
          type: string
      required:
        - repo_name
        - profile_id
      title: StartIngestionScanRequest
      type: object
    CodeScanResponse:
      description: Une analyse de code.
      properties:
        created_at:
          description: Date de création de l’analyse (secondes Unix).
          title: Created At
          type: integer
        host:
          anyOf:
            - type: string
            - type: 'null'
          description: Hôte Git du dépôt, s’il est connu.
          title: Host
        org_id:
          description: Organisation à laquelle l’analyse appartient.
          title: Org Id
          type: string
        profile:
          anyOf:
            - $ref: '#/components/schemas/CodeScanProfileResponse'
            - type: 'null'
          description: Profil avec lequel l’analyse a été exécutée, le cas échéant.
        repo_name:
          description: >-
            Dépôt principal de l’analyse. Les analyses multi-dépôts couvrent des
            dépôts supplémentaires non répertoriés ici.
          title: Repo Name
          type: string
        scan_id:
          description: Identifiant unique de l’analyse.
          title: Scan Id
          type: string
        scan_type:
          description: Type d'analyse, défini lors de la création.
          enum:
            - security
            - performance
            - db-queries
            - test-coverage
            - dead-code
            - code-quality
            - telemetry
            - accessibility
            - general
            - migration-docs
          title: Scan Type
          type: string
        status:
          description: "Statut de l’analyse\_: waiting, pending, running, awaiting_user_input, completed, failed ou cancelled."
          enum:
            - waiting
            - pending
            - running
            - awaiting_user_input
            - completed
            - failed
            - cancelled
          title: Status
          type: string
      required:
        - scan_id
        - org_id
        - repo_name
        - host
        - status
        - profile
        - scan_type
        - created_at
      title: CodeScanResponse
      type: object
    ProblemDetail:
      description: "Corps d’erreur RFC 9457 application/problem+json pour l’API v3.\n\ndetail est conservé de l’ancien corps {\"detail\": ...} pour assurer la rétrocompatibilité\_; les\nautres membres sont ajoutés de manière additive. errors contient les échecs de validation\nau niveau des champs (422 uniquement)."
      properties:
        detail:
          anyOf:
            - type: string
            - type: 'null'
          description: Explication en langage clair, spécifique à cette occurrence.
          title: Detail
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          description: Erreurs de validation par champ (réponses 422 uniquement).
          title: Errors
        instance:
          anyOf:
            - type: string
            - type: 'null'
          description: Une référence d’URI (le chemin de la requête) pour cette occurrence.
          title: Instance
        status:
          description: Le code d’état HTTP.
          title: Status
          type: integer
        title:
          description: Un bref résumé du type de problème, compréhensible par un humain.
          title: Title
          type: string
        type:
          default: about:blank
          description: Une référence d’URI identifiant le type de problème.
          title: Type
          type: string
      required:
        - title
        - status
      title: ProblemDetail
      type: object
    CodeScanProfileResponse:
      description: Résumé du profil avec lequel une analyse a été exécutée.
      properties:
        name:
          description: Nom du profil.
          title: Name
          type: string
        profile_id:
          description: Identifiant unique du profil.
          title: Profile Id
          type: string
      required:
        - profile_id
        - name
      title: CodeScanProfileResponse
      type: object
  securitySchemes:
    bearerAuth:
      description: "Identifiant de compte de service (préfixe\_: cog_)"
      scheme: bearer
      type: http

````