# Référence

Chaque opération de l’API Lockpick, son autorisation, ses entrées et sa réponse, générées à partir de l’API elle-même. Version 1, en bêta.

{/* Generated by scripts/docs-generate.mts. Do not edit; run `pnpm docs:generate`. */}

Version 1, en bêta. Chaque chemin commence par `/api/cli/v1`, chaque requête transporte une clé sous forme de jeton bearer, et chaque réponse est `{ data, error }`. L’ensemble de cette description est aussi disponible en [OpenAPI 3.1](https://www.lockpick.app/openapi.json).

## API de l’agent

Les opérations serveur derrière les outils MCP hébergés. Les nouvelles intégrations doivent les utiliser. `lockpick_wait_for_scan` interroge `GET /agent/scans/{scanId}` ; `lockpick_evaluate_scan` lit cette même analyse et applique la politique d’évaluation côté client. Ces deux outils composés n’ont pas de point de terminaison HTTP distinct. Les scripts peuvent interroger l’état de l’analyse et évaluer son heure de fin, sa couverture et le nombre de points à corriger ouverts selon leur politique.

### GET /agent/me

La personne, l’espace de travail, les portées et l’expiration de cet identifiant, et ce qu’il peut lancer.

* Autorisation : `read`
* Outil MCP : [`lockpick_whoami`](/fr/mcp/tools#lockpick_whoami)

**data**

| Champ          | Type  | Toujours présent |
| -------------- | ----- | ---------------- |
| `user`         | objet | Oui              |
| `workspace`    | objet | Oui              |
| `credential`   | objet | Oui              |
| `capabilities` | objet | Oui              |

### GET /agent/allowance

Analyses gratuites restant ce mois-ci, leurs dates de réinitialisation et leurs crédits.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_allowance`](/fr/mcp/tools#lockpick_get_allowance)

**data**

| Champ               | Type                                                                                      | Toujours présent |
| ------------------- | ----------------------------------------------------------------------------------------- | ---------------- |
| `accessSource`      | `community`, `stripe` (valeur de facturation héritée), `pilot` (héritée, interne), `none` | Oui              |
| `accountingMode`    | `pilot` (héritée, interne), `credits` (héritée, interne), `unmetered`                     | Oui              |
| `pulse`             | objet                                                                                     | Oui              |
| `deep`              | objet                                                                                     | Oui              |
| `creditBalance`     | entier ou null                                                                            | Oui              |
| `freeSiteId`        | chaîne ou null                                                                            | Oui              |
| `freeSiteVisible`   | booléen                                                                                   | Oui              |
| `canSwitchFreeSite` | booléen                                                                                   | Oui              |

### GET /agent/monitor

Parcourir les avis de sécurité actuels et expliquer les correspondances pour les sites autorisés.

* Autorisation : `read`
* Outil MCP : [`lockpick_monitor`](/fr/mcp/tools#lockpick_monitor)

**Paramètres de requête**

| Champ        | Type                                                                                                              | Requis |
| ------------ | ----------------------------------------------------------------------------------------------------------------- | ------ |
| `view`       | `latest`, `sites`, `exploited`, `following`                                                                       | Non    |
| `kind`       | `all`, `vulnerability`, `malicious_package`                                                                       | Non    |
| `q`          | chaîne                                                                                                            | Non    |
| `ecosystem`  | `all`, `npm`, `pypi`, `composer`, `go`, `rubygems`, `maven`, `cargo`, `nuget`, `pub`, `hex`, `swift`, `wordpress` | Non    |
| `severity`   | `all`, `critical`, `high`, `medium`, `low`, `unknown`                                                             | Non    |
| `days`       | nombre                                                                                                            | Non    |
| `cursor`     | chaîne                                                                                                            | Non    |
| `limit`      | entier                                                                                                            | Non    |
| `siteId`     | chaîne                                                                                                            | Non    |
| `advisoryId` | chaîne                                                                                                            | Non    |

**data**

| Champ         | Type             | Toujours présent |
| ------------- | ---------------- | ---------------- |
| `items`       | liste d’objets   | Oui              |
| `nextCursor`  | chaîne ou null   | Oui              |
| `limitations` | liste de chaînes | Oui              |

**Chaque élément**

| Champ         | Type                                           | Toujours présent |
| ------------- | ---------------------------------------------- | ---------------- |
| `id`          | chaîne                                         | Oui              |
| `title`       | chaîne                                         | Oui              |
| `source`      | chaîne                                         | Oui              |
| `kind`        | `vulnerability`, `malicious_package`           | Oui              |
| `severity`    | `critical`, `high`, `medium`, `low`, `unknown` | Oui              |
| `provenance`  | liste d’objets                                 | Oui              |
| `withdrawnAt` | chaîne ou null                                 | Non              |
| `publishedAt` | chaîne                                         | Oui              |
| `exploited`   | booléen                                        | Oui              |
| `ids`         | liste de chaînes                               | Oui              |
| `tech`        | liste d’objets                                 | Oui              |
| `epss`        | objet ou null                                  | Non              |
| `cvss`        | objet ou null                                  | Non              |
| `attribution` | chaîne ou null                                 | Oui              |
| `references`  | liste de chaînes                               | Oui              |
| `packages`    | liste d’objets                                 | Oui              |
| `sites`       | liste d’objets                                 | Oui              |

### GET /agent/sites

Une page de sites avec leurs dernières analyses.

* Autorisation : `read`
* Outil MCP : [`lockpick_list_sites`](/fr/mcp/tools#lockpick_list_sites)

**Paramètres de requête**

| Champ    | Type   | Requis |
| -------- | ------ | ------ |
| `limit`  | entier | Non    |
| `cursor` | chaîne | Non    |

**data**

| Champ        | Type           | Toujours présent |
| ------------ | -------------- | ---------------- |
| `items`      | liste d’objets | Oui              |
| `nextCursor` | chaîne ou null | Oui              |

**Chaque élément**

| Champ         | Type           | Toujours présent |
| ------------- | -------------- | ---------------- |
| `id`          | chaîne         | Oui              |
| `name`        | chaîne         | Oui              |
| `status`      | chaîne         | Oui              |
| `baseDomain`  | chaîne ou null | Oui              |
| `latestPulse` | objet ou null  | Oui              |
| `latestDeep`  | objet ou null  | Oui              |
| `latestBox`   | objet ou null  | Oui              |
| `webPath`     | chaîne         | Oui              |
| `webUrl`      | chaîne         | Oui              |

### POST /agent/sites

Ajouter un site, ou renvoyer celui qui porte cette adresse.

* Autorisation : `sites`
* Outil MCP : [`lockpick_add_site`](/fr/mcp/tools#lockpick_add_site)

**Corps**

| Champ            | Type   | Requis |
| ---------------- | ------ | ------ |
| `url`            | chaîne | Oui    |
| `name`           | chaîne | Non    |
| `idempotencyKey` | chaîne | Oui    |

**data**

| Champ     | Type    | Toujours présent |
| --------- | ------- | ---------------- |
| `site`    | objet   | Oui              |
| `created` | booléen | Oui              |

### GET /agent/sites/\{siteId}/status

L’état d’un site : ses dernières analyses et la marche à suivre.

* Autorisation : `read`
* Outil MCP : [`lockpick_site_status`](/fr/mcp/tools#lockpick_site_status)

**data**

| Champ            | Type             | Toujours présent |
| ---------------- | ---------------- | ---------------- |
| `site`           | objet            | Oui              |
| `latestPulse`    | objet ou null    | Oui              |
| `latestDeep`     | objet ou null    | Oui              |
| `latestBox`      | objet ou null    | Oui              |
| `lastComparison` | objet ou null    | Oui              |
| `caveats`        | liste de chaînes | Oui              |
| `fixes`          | objet ou null    | Non              |
| `relevant`       | liste d’objets   | Non              |
| `relevantTotal`  | entier           | Non              |

### GET /agent/sites/\{siteId}/history

L’historique de sécurité d’un site : l’évolution du score de chaque profondeur de scan, interrompue là où le moteur a changé, les constats ouverts au fil du temps, les corrections, les régressions et le délai médian de correction.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_site_history`](/fr/mcp/tools#lockpick_get_site_history)

**data**

| Champ      | Type           | Toujours présent |
| ---------- | -------------- | ---------------- |
| `siteId`   | chaîne         | Oui              |
| `scores`   | liste d’objets | Oui              |
| `findings` | objet          | Oui              |

### POST /agent/sites/\{siteId}/dependencies

Envoyer les noms et les versions exactes des paquets épinglés par un site, jamais le code, et lire les avis qui les touchent.

* Autorisation : `sites`
* Outil MCP : [`lockpick_send_dependencies`](/fr/mcp/tools#lockpick_send_dependencies)

**Corps**

| Champ            | Type                                                                                                                                                                                                                                                                                                                                                                                                                                | Requis |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| `inventory`      | objet                                                                                                                                                                                                                                                                                                                                                                                                                               | Non    |
| `packages`       | liste d’objets                                                                                                                                                                                                                                                                                                                                                                                                                      | Oui    |
| `sources`        | list of `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lock`, `bun.lockb`, `requirements.txt`, `poetry.lock`, `uv.lock`, `Pipfile.lock`, `pdm.lock`, `composer.lock`, `go.mod`, `Gemfile.lock`, `gems.locked`, `pom.xml`, `gradle.lockfile`, `buildscript-gradle.lockfile`, `build.gradle`, `build.gradle.kts`, `Cargo.lock`, `packages.lock.json`, `pubspec.lock`, `mix.lock`, `Package.resolved` | Oui    |
| `idempotencyKey` | chaîne                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui    |

**data**

| Champ             | Type                                                                                                                                                                                                                                                                                                                                                                                                                                | Toujours présent |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `siteId`          | chaîne                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui              |
| `receivedAt`      | chaîne ou null                                                                                                                                                                                                                                                                                                                                                                                                                      | Oui              |
| `sources`         | list of `package-lock.json`, `npm-shrinkwrap.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lock`, `bun.lockb`, `requirements.txt`, `poetry.lock`, `uv.lock`, `Pipfile.lock`, `pdm.lock`, `composer.lock`, `go.mod`, `Gemfile.lock`, `gems.locked`, `pom.xml`, `gradle.lockfile`, `buildscript-gradle.lockfile`, `build.gradle`, `build.gradle.kts`, `Cargo.lock`, `packages.lock.json`, `pubspec.lock`, `mix.lock`, `Package.resolved` | Oui              |
| `packageCount`    | entier                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui              |
| `affectsYouCount` | entier                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui              |
| `affectsYou`      | liste d’objets                                                                                                                                                                                                                                                                                                                                                                                                                      | Oui              |
| `webUrl`          | chaîne                                                                                                                                                                                                                                                                                                                                                                                                                              | Oui              |

### GET /agent/sites/\{siteId}/github

Le lien GitHub d’un site : le dépôt, la branche et le fichier de verrouillage, la dernière lecture, le commentaire de pull request et si la liste GitHub de l’appelant est à jour.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_github_link`](/fr/mcp/tools#lockpick_get_github_link)

**data**

| Champ                 | Type          | Toujours présent |
| --------------------- | ------------- | ---------------- |
| `siteId`              | chaîne        | Oui              |
| `available`           | booléen       | Oui              |
| `canManage`           | booléen       | Oui              |
| `linked`              | objet ou null | Oui              |
| `lastRead`            | objet ou null | Oui              |
| `pullRequestComments` | objet ou null | Oui              |
| `authorization`       | objet         | Oui              |
| `webUrl`              | chaîne        | Oui              |

### GET /agent/github/repositories

Les dépôts de la liste GitHub de l’appelant lui-même pour cet espace de travail, les seuls qu’il peut lier.

* Autorisation : `read`
* Outil MCP : [`lockpick_list_github_repositories`](/fr/mcp/tools#lockpick_list_github_repositories)

**Paramètres de requête**

| Champ    | Type   | Requis |
| -------- | ------ | ------ |
| `search` | chaîne | Non    |
| `limit`  | entier | Non    |

**data**

| Champ           | Type           | Toujours présent |
| --------------- | -------------- | ---------------- |
| `authorization` | objet          | Oui              |
| `items`         | liste d’objets | Oui              |
| `matched`       | entier         | Oui              |
| `truncated`     | booléen        | Oui              |

**Chaque élément**

| Champ           | Type    | Toujours présent |
| --------------- | ------- | ---------------- |
| `repository`    | chaîne  | Oui              |
| `defaultBranch` | chaîne  | Oui              |
| `private`       | booléen | Oui              |

### POST /agent/sites/\{siteId}/github

Lie un site à un dépôt de la liste GitHub de l’appelant lui-même, ou obtient la page où la personne l’approuve.

* Autorisation : `sites`
* Outil MCP : [`lockpick_link_github_repository`](/fr/mcp/tools#lockpick_link_github_repository)

**Corps**

| Champ                 | Type                       | Requis |
| --------------------- | -------------------------- | ------ |
| `repository`          | chaîne                     | Oui    |
| `ref`                 | chaîne                     | Non    |
| `lockfiles`           | chaîne ou liste de chaînes | Non    |
| `pullRequestComments` | `on`, `off`                | Non    |

### GET /agent/github/link-requests/\{requestId}

Où en est un lien GitHub en attente de la personne.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_github_link_request`](/fr/mcp/tools#lockpick_get_github_link_request)

**data**

| Champ        | Type                                                                                 | Toujours présent |
| ------------ | ------------------------------------------------------------------------------------ | ---------------- |
| `requestId`  | chaîne                                                                               | Oui              |
| `siteId`     | chaîne                                                                               | Oui              |
| `repository` | chaîne                                                                               | Oui              |
| `state`      | `pending`, `authorizing`, `linked`, `not_reachable`, `declined`, `failed`, `expired` | Oui              |
| `expiresAt`  | chaîne                                                                               | Oui              |
| `link`       | objet ou null                                                                        | Oui              |

### DELETE /agent/sites/\{siteId}/github

Délie le dépôt GitHub d’un site et oublie la lecture de son fichier de verrouillage.

* Autorisation : `sites`
* Outil MCP : [`lockpick_unlink_github_repository`](/fr/mcp/tools#lockpick_unlink_github_repository)

**data**

| Champ      | Type    | Toujours présent |
| ---------- | ------- | ---------------- |
| `siteId`   | chaîne  | Oui              |
| `unlinked` | booléen | Oui              |

### POST /agent/sites/\{siteId}/github/pull-request-comments

Active ou désactive le commentaire de sécurité Deep sur les pull requests du dépôt lié à un site.

* Autorisation : `sites`
* Outil MCP : [`lockpick_set_github_pr_comments`](/fr/mcp/tools#lockpick_set_github_pr_comments)

**Corps**

| Champ     | Type    | Requis |
| --------- | ------- | ------ |
| `enabled` | booléen | Oui    |

**data**

| Champ                 | Type          | Toujours présent |
| --------------------- | ------------- | ---------------- |
| `siteId`              | chaîne        | Oui              |
| `available`           | booléen       | Oui              |
| `canManage`           | booléen       | Oui              |
| `linked`              | objet ou null | Oui              |
| `lastRead`            | objet ou null | Oui              |
| `pullRequestComments` | objet ou null | Oui              |
| `authorization`       | objet         | Oui              |
| `webUrl`              | chaîne        | Oui              |

### GET /agent/sites/\{siteId}/schedules

Les contrôles automatiques Pulse et Deep d’un site et les fréquences que son forfait autorise.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_schedules`](/fr/mcp/tools#lockpick_get_schedules)

**data**

| Champ     | Type          | Toujours présent |
| --------- | ------------- | ---------------- |
| `siteId`  | chaîne        | Oui              |
| `enabled` | booléen       | Oui              |
| `allowed` | objet         | Oui              |
| `pulse`   | objet ou null | Oui              |
| `deep`    | objet ou null | Oui              |
| `webUrl`  | chaîne        | Oui              |

### POST /agent/sites/\{siteId}/schedules/pulse

Configurer, modifier ou reprendre le contrôle automatique Pulse d’un site dans les fréquences du forfait.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_set_pulse_schedule`](/fr/mcp/tools#lockpick_set_pulse_schedule)

**Corps**

| Champ        | Type                         | Requis |
| ------------ | ---------------------------- | ------ |
| `cadence`    | `daily`, `weekly`, `monthly` | Non    |
| `runHourUtc` | entier ou null               | Non    |

**data**

| Champ          | Type                           | Toujours présent |
| -------------- | ------------------------------ | ---------------- |
| `scheduleId`   | chaîne                         | Oui              |
| `siteId`       | chaîne                         | Oui              |
| `depth`        | `pulse`, `deep`                | Oui              |
| `status`       | `active`, `paused`, `archived` | Oui              |
| `cadence`      | `daily`, `weekly`, `monthly`   | Oui              |
| `runHourUtc`   | entier ou null                 | Oui              |
| `nextRunAt`    | chaîne                         | Oui              |
| `consentUntil` | chaîne                         | Oui              |
| `lastOutcome`  | chaîne ou null                 | Oui              |

### POST /agent/sites/\{siteId}/schedules/pulse/pause

Mettre en pause le contrôle automatique Pulse d’un site.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_pause_pulse_schedule`](/fr/mcp/tools#lockpick_pause_pulse_schedule)

**data**

| Champ          | Type                           | Toujours présent |
| -------------- | ------------------------------ | ---------------- |
| `scheduleId`   | chaîne                         | Oui              |
| `siteId`       | chaîne                         | Oui              |
| `depth`        | `pulse`, `deep`                | Oui              |
| `status`       | `active`, `paused`, `archived` | Oui              |
| `cadence`      | `daily`, `weekly`, `monthly`   | Oui              |
| `runHourUtc`   | entier ou null                 | Oui              |
| `nextRunAt`    | chaîne                         | Oui              |
| `consentUntil` | chaîne                         | Oui              |
| `lastOutcome`  | chaîne ou null                 | Oui              |

### POST /agent/sites/\{siteId}/schedules/deep

Préparer la configuration, la modification ou la reprise du contrôle automatique Deep d’un site, et obtenir le lien où la personne l’autorise.

* Autorisation : `deep`
* Outil MCP : [`lockpick_prepare_deep_schedule`](/fr/mcp/tools#lockpick_prepare_deep_schedule)

**Corps**

| Champ        | Type                         | Requis |
| ------------ | ---------------------------- | ------ |
| `cadence`    | `daily`, `weekly`, `monthly` | Non    |
| `runHourUtc` | entier ou null               | Non    |

**data**

| Champ              | Type                         | Toujours présent |
| ------------------ | ---------------------------- | ---------------- |
| `requestId`        | chaîne                       | Oui              |
| `siteId`           | chaîne                       | Oui              |
| `depth`            | chaîne                       | Oui              |
| `cadence`          | `daily`, `weekly`, `monthly` | Oui              |
| `runHourUtc`       | entier ou null               | Oui              |
| `approvalUrl`      | chaîne                       | Oui              |
| `expiresAt`        | chaîne                       | Oui              |
| `pollAfterSeconds` | entier                       | Oui              |

### POST /agent/sites/\{siteId}/schedules/deep/pause

Mettre en pause le contrôle automatique Deep d’un site.

* Autorisation : `deep`
* Outil MCP : [`lockpick_pause_deep_schedule`](/fr/mcp/tools#lockpick_pause_deep_schedule)

**data**

| Champ          | Type                           | Toujours présent |
| -------------- | ------------------------------ | ---------------- |
| `scheduleId`   | chaîne                         | Oui              |
| `siteId`       | chaîne                         | Oui              |
| `depth`        | `pulse`, `deep`                | Oui              |
| `status`       | `active`, `paused`, `archived` | Oui              |
| `cadence`      | `daily`, `weekly`, `monthly`   | Oui              |
| `runHourUtc`   | entier ou null                 | Oui              |
| `nextRunAt`    | chaîne                         | Oui              |
| `consentUntil` | chaîne                         | Oui              |
| `lastOutcome`  | chaîne ou null                 | Oui              |

### GET /agent/schedule-requests/\{requestId}

Où en est un contrôle automatique Deep en attente de la personne.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_schedule_request`](/fr/mcp/tools#lockpick_get_schedule_request)

**data**

| Champ        | Type                                                   | Toujours présent |
| ------------ | ------------------------------------------------------ | ---------------- |
| `requestId`  | chaîne                                                 | Oui              |
| `siteId`     | chaîne                                                 | Oui              |
| `depth`      | chaîne                                                 | Oui              |
| `cadence`    | `daily`, `weekly`, `monthly`                           | Oui              |
| `runHourUtc` | entier ou null                                         | Oui              |
| `state`      | `pending`, `approved`, `declined`, `failed`, `expired` | Oui              |
| `expiresAt`  | chaîne                                                 | Oui              |
| `failure`    | chaîne ou null                                         | Oui              |
| `schedule`   | objet ou null                                          | Oui              |

### GET /agent/sites/\{siteId}/shares

Les résultats Pulse d’un site qui ont un lien de partage public actif.

* Autorisation : `read`
* Outil MCP : [`lockpick_list_shares`](/fr/mcp/tools#lockpick_list_shares)

**data**

| Champ    | Type           | Toujours présent |
| -------- | -------------- | ---------------- |
| `siteId` | chaîne         | Oui              |
| `shares` | liste d’objets | Oui              |

### POST /agent/scans/\{scanId}/share

Publier un résultat Pulse terminé à un lien public, ou remplacer son lien.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_share_scan`](/fr/mcp/tools#lockpick_share_scan)

**Corps**

| Champ     | Type    | Requis |
| --------- | ------- | ------ |
| `replace` | booléen | Non    |

**data**

| Champ       | Type           | Toujours présent |
| ----------- | -------------- | ---------------- |
| `scanId`    | chaîne         | Oui              |
| `url`       | chaîne ou null | Oui              |
| `createdAt` | chaîne         | Oui              |

### DELETE /agent/scans/\{scanId}/share

Arrêter le partage d’un résultat Pulse ; son lien public cesse de fonctionner.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_unshare_scan`](/fr/mcp/tools#lockpick_unshare_scan)

**data**

| Champ      | Type    | Toujours présent |
| ---------- | ------- | ---------------- |
| `scanId`   | chaîne  | Oui              |
| `unshared` | booléen | Oui              |

### POST /agent/sites/\{siteId}/pulse

Lancer une analyse Pulse sur un site.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_start_pulse`](/fr/mcp/tools#lockpick_start_pulse)

**Corps**

| Champ            | Type   | Requis |
| ---------------- | ------ | ------ |
| `idempotencyKey` | chaîne | Oui    |
| `baselineScanId` | chaîne | Non    |

**data**

| Champ       | Type    | Toujours présent |
| ----------- | ------- | ---------------- |
| `scan`      | objet   | Oui              |
| `charged`   | objet   | Oui              |
| `allowance` | objet   | Oui              |
| `replayed`  | booléen | Oui              |

### POST /agent/sites/\{siteId}/deep-verifications

Émettre une preuve de propriété par DNS ou par fichier avant une analyse Deep.

* Autorisation : `deep`
* Outil MCP : [`lockpick_start_deep_verification`](/fr/mcp/tools#lockpick_start_deep_verification)

**Corps**

| Champ            | Type                  | Requis |
| ---------------- | --------------------- | ------ |
| `method`         | `dns`, `file`, `meta` | Oui    |
| `idempotencyKey` | chaîne                | Oui    |

**data**

| Champ               | Type                                                     | Toujours présent |
| ------------------- | -------------------------------------------------------- | ---------------- |
| `verificationId`    | chaîne                                                   | Oui              |
| `siteId`            | chaîne                                                   | Oui              |
| `origin`            | chaîne                                                   | Oui              |
| `method`            | `dns`, `file`, `meta`                                    | Oui              |
| `state`             | `pending`, `verified`, `expired`, `exhausted`, `revoked` | Oui              |
| `expiresAt`         | chaîne                                                   | Oui              |
| `verifiedUntil`     | chaîne ou null                                           | Oui              |
| `attemptsRemaining` | entier                                                   | Oui              |
| `retryAfterSeconds` | entier ou null                                           | Oui              |
| `value`             | chaîne                                                   | Oui              |
| `location`          | chaîne                                                   | Oui              |

### POST /agent/sites/\{siteId}/deep-verifications/\{verificationId}/verify

Vérifier une preuve de propriété publiée. Chaque vérification utilise une de ses tentatives.

* Autorisation : `deep`
* Outil MCP : [`lockpick_check_deep_verification`](/fr/mcp/tools#lockpick_check_deep_verification)

**data**

| Champ               | Type                                                     | Toujours présent |
| ------------------- | -------------------------------------------------------- | ---------------- |
| `verificationId`    | chaîne                                                   | Oui              |
| `siteId`            | chaîne                                                   | Oui              |
| `origin`            | chaîne                                                   | Oui              |
| `method`            | `dns`, `file`, `meta`                                    | Oui              |
| `state`             | `pending`, `verified`, `expired`, `exhausted`, `revoked` | Oui              |
| `expiresAt`         | chaîne                                                   | Oui              |
| `verifiedUntil`     | chaîne ou null                                           | Oui              |
| `attemptsRemaining` | entier                                                   | Oui              |
| `retryAfterSeconds` | entier ou null                                           | Oui              |

### POST /agent/sites/\{siteId}/deep-operations

Préparer une analyse Deep et obtenir le lien où la personne l’autorise.

* Autorisation : `deep`
* Outil MCP : [`lockpick_prepare_deep`](/fr/mcp/tools#lockpick_prepare_deep)

**Corps**

| Champ            | Type   | Requis |
| ---------------- | ------ | ------ |
| `verificationId` | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

**data**

| Champ             | Type                                       | Toujours présent |
| ----------------- | ------------------------------------------ | ---------------- |
| `operationId`     | chaîne                                     | Oui              |
| `siteId`          | chaîne                                     | Oui              |
| `origin`          | chaîne                                     | Oui              |
| `assessmentLevel` | chaîne                                     | Oui              |
| `verificationId`  | chaîne                                     | Oui              |
| `cost`            | objet                                      | Oui              |
| `allowance`       | objet                                      | Oui              |
| `approvalState`   | `pending`, `approved`, `expired`, `denied` | Oui              |
| `approvalUrl`     | chaîne                                     | Oui              |
| `expiresAt`       | chaîne                                     | Oui              |

### POST /agent/deep-operations/\{operationId}/start

Lancer une analyse Deep autorisée par la personne.

* Autorisation : `deep`
* Outil MCP : [`lockpick_start_deep`](/fr/mcp/tools#lockpick_start_deep)

**data**

| Champ       | Type    | Toujours présent |
| ----------- | ------- | ---------------- |
| `scan`      | objet   | Oui              |
| `charged`   | objet   | Oui              |
| `allowance` | objet   | Oui              |
| `replayed`  | booléen | Oui              |

### POST /agent/free-site-switch

Retirer un site pour que le Pulse gratuit du mois puisse passer à un autre.

* Autorisation : `sites` et `pulse`
* Outil MCP : [`lockpick_switch_free_site`](/fr/mcp/tools#lockpick_switch_free_site)

**Corps**

| Champ            | Type    | Requis |
| ---------------- | ------- | ------ |
| `removeSiteId`   | chaîne  | Oui    |
| `checkId`        | chaîne  | Non    |
| `idempotencyKey` | chaîne  | Oui    |
| `confirmRemoval` | booléen | Oui    |

**data**

| Champ               | Type           | Toujours présent |
| ------------------- | -------------- | ---------------- |
| `removedSiteId`     | chaîne         | Oui              |
| `removedSiteHost`   | chaîne         | Oui              |
| `replacementSiteId` | chaîne ou null | Oui              |
| `allowance`         | objet          | Oui              |
| `restoreUrl`        | chaîne         | Oui              |
| `startedScanId`     | chaîne ou null | Oui              |
| `charged`           | objet          | Oui              |
| `replayed`          | booléen        | Oui              |

### GET /agent/scans

Une page d’analyses, les plus récentes en premier, avec des filtres.

* Autorisation : `read`
* Outil MCP : [`lockpick_list_scans`](/fr/mcp/tools#lockpick_list_scans)

**Paramètres de requête**

| Champ             | Type                                                                                | Requis |
| ----------------- | ----------------------------------------------------------------------------------- | ------ |
| `siteId`          | chaîne                                                                              | Non    |
| `kind`            | `pulse`, `box` (Deep, nom hérité)                                                   | Non    |
| `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | Non    |
| `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Non    |
| `limit`           | entier                                                                              | Non    |
| `cursor`          | chaîne                                                                              | Non    |

**data**

| Champ        | Type           | Toujours présent |
| ------------ | -------------- | ---------------- |
| `items`      | liste d’objets | Oui              |
| `nextCursor` | chaîne ou null | Oui              |

**Chaque élément**

| Champ                       | Type                                                                                | Toujours présent |
| --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
| `id`                        | chaîne                                                                              | Oui              |
| `kind`                      | `pulse`, `box` (Deep, nom hérité)                                                   | Oui              |
| `projectId`                 | chaîne                                                                              | Oui              |
| `target`                    | chaîne                                                                              | Oui              |
| `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Oui              |
| `mode`                      | `autonomous`, `authenticated`, `active` ou null                                     | Oui              |
| `createdAt`                 | chaîne ou null                                                                      | Oui              |
| `finishedAt`                | chaîne ou null                                                                      | Oui              |
| `webPath`                   | chaîne                                                                              | Oui              |
| `assessmentLevel`           | `pulse`, `standard`, `deep` ou null                                                 | Oui              |
| `headline`                  | objet                                                                               | Oui              |
| `webUrl`                    | chaîne                                                                              | Oui              |
| `suggestedPollAfterSeconds` | entier ou null                                                                      | Oui              |

### GET /agent/scans/\{scanId}

Une analyse avec son statut et son résumé.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_scan`](/fr/mcp/tools#lockpick_get_scan)

**data**

| Champ                       | Type                                                                                | Toujours présent |
| --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
| `id`                        | chaîne                                                                              | Oui              |
| `kind`                      | `pulse`, `box` (Deep, nom hérité)                                                   | Oui              |
| `projectId`                 | chaîne                                                                              | Oui              |
| `target`                    | chaîne                                                                              | Oui              |
| `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Oui              |
| `mode`                      | `autonomous`, `authenticated`, `active` ou null                                     | Oui              |
| `createdAt`                 | chaîne ou null                                                                      | Oui              |
| `finishedAt`                | chaîne ou null                                                                      | Oui              |
| `webPath`                   | chaîne                                                                              | Oui              |
| `assessmentLevel`           | `pulse`, `standard`, `deep` ou null                                                 | Oui              |
| `headline`                  | objet                                                                               | Oui              |
| `webUrl`                    | chaîne                                                                              | Oui              |
| `suggestedPollAfterSeconds` | entier ou null                                                                      | Oui              |
| `docsUrl`                   | chaîne                                                                              | Non              |
| `dismissals`                | objet                                                                               | Non              |
| `baselineRunId`             | chaîne ou null                                                                      | Oui              |
| `open`                      | objet                                                                               | Oui              |
| `findingCount`              | entier                                                                              | Oui              |
| `progress`                  | objet ou null                                                                       | Oui              |
| `coverage`                  | objet                                                                               | Oui              |
| `caveats`                   | liste de chaînes                                                                    | Oui              |
| `outcome`                   | objet ou null                                                                       | Oui              |
| `exposureCheck`             | objet                                                                               | Non              |
| `coverageReceipt`           | objet                                                                               | Non              |

### GET /agent/scans/\{scanId}/findings

Une page de points à corriger d’une analyse.

* Autorisation : `read`
* Outil MCP : [`lockpick_list_findings`](/fr/mcp/tools#lockpick_list_findings)
* Envoyez `x-lockpick-agent-features: finding-code` pour recevoir le `code` de chaque constat (`LP-` et six caractères, tel que le rapport web l'affiche). Sans l'en-tête, la réponse n'a pas de `code`, la forme qu'attendent les anciens clients.

**Paramètres de requête**

| Champ      | Type                                          | Requis |
| ---------- | --------------------------------------------- | ------ |
| `state`    | `attention`, `information`, `unknown`, `pass` | Non    |
| `severity` | `critical`, `high`, `medium`, `low`, `info`   | Non    |
| `all`      | booléen ou `true`, `false`                    | Non    |
| `limit`    | entier                                        | Non    |
| `cursor`   | chaîne                                        | Non    |

**data**

| Champ        | Type           | Toujours présent |
| ------------ | -------------- | ---------------- |
| `items`      | liste d’objets | Oui              |
| `nextCursor` | chaîne ou null | Oui              |

**Chaque élément**

| Champ               | Type                                                  | Toujours présent |
| ------------------- | ----------------------------------------------------- | ---------------- |
| `dismissal`         | objet                                                 | Non              |
| `id`                | chaîne                                                | Oui              |
| `code`              | chaîne                                                | Non              |
| `runId`             | chaîne                                                | Oui              |
| `kind`              | `pulse`, `box` (Deep, nom hérité)                     | Oui              |
| `severity`          | `critical`, `high`, `medium`, `low`, `info`           | Oui              |
| `state`             | `attention`, `information`, `unknown`, `pass`         | Oui              |
| `category`          | chaîne                                                | Oui              |
| `title`             | chaîne                                                | Oui              |
| `meaning`           | chaîne                                                | Oui              |
| `fix`               | chaîne ou null                                        | Oui              |
| `confidence`        | chaîne                                                | Oui              |
| `evidence`          | liste de chaînes                                      | Oui              |
| `sources`           | liste de chaînes                                      | Oui              |
| `steps`             | liste de chaînes                                      | Oui              |
| `webPath`           | chaîne                                                | Oui              |
| `webUrl`            | chaîne                                                | Oui              |
| `evidenceTrust`     | chaîne                                                | Oui              |
| `evidenceTruncated` | booléen                                               | Oui              |
| `verdict`           | `confirmed`, `needs_review`, `not_actionable` ou null | Non              |
| `certainty`         | `high`, `medium`, `low` ou null                       | Non              |
| `exploitability`    | `direct`, `conditional`, `hygiene`, `none` ou null    | Non              |
| `proof`             | objet ou null                                         | Non              |
| `proofGap`          | chaîne ou null                                        | Non              |
| `urgency`           | `now`, `week`, `later`, `none`                        | Non              |
| `howSure`           | `confirmed`, `likely`, `possible` ou null             | Non              |
| `lifecycle`         | objet ou null                                         | Non              |

### GET /agent/scans/\{scanId}/findings/\{findingId}

Un point à corriger avec ses preuves masquées.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_finding`](/fr/mcp/tools#lockpick_get_finding)
* Envoyez `x-lockpick-agent-features: finding-code` pour recevoir le `code` de chaque constat (`LP-` et six caractères, tel que le rapport web l'affiche). Sans l'en-tête, la réponse n'a pas de `code`, la forme qu'attendent les anciens clients.

**data**

| Champ               | Type                                                  | Toujours présent |
| ------------------- | ----------------------------------------------------- | ---------------- |
| `dismissal`         | objet                                                 | Non              |
| `id`                | chaîne                                                | Oui              |
| `code`              | chaîne                                                | Non              |
| `runId`             | chaîne                                                | Oui              |
| `kind`              | `pulse`, `box` (Deep, nom hérité)                     | Oui              |
| `severity`          | `critical`, `high`, `medium`, `low`, `info`           | Oui              |
| `state`             | `attention`, `information`, `unknown`, `pass`         | Oui              |
| `category`          | chaîne                                                | Oui              |
| `title`             | chaîne                                                | Oui              |
| `meaning`           | chaîne                                                | Oui              |
| `fix`               | chaîne ou null                                        | Oui              |
| `confidence`        | chaîne                                                | Oui              |
| `evidence`          | liste de chaînes                                      | Oui              |
| `sources`           | liste de chaînes                                      | Oui              |
| `steps`             | liste de chaînes                                      | Oui              |
| `webPath`           | chaîne                                                | Oui              |
| `webUrl`            | chaîne                                                | Oui              |
| `evidenceTrust`     | chaîne                                                | Oui              |
| `evidenceTruncated` | booléen                                               | Oui              |
| `verdict`           | `confirmed`, `needs_review`, `not_actionable` ou null | Non              |
| `certainty`         | `high`, `medium`, `low` ou null                       | Non              |
| `exploitability`    | `direct`, `conditional`, `hygiene`, `none` ou null    | Non              |
| `proof`             | objet ou null                                         | Non              |
| `proofGap`          | chaîne ou null                                        | Non              |
| `urgency`           | `now`, `week`, `later`, `none`                        | Non              |
| `howSure`           | `confirmed`, `likely`, `possible` ou null             | Non              |
| `lifecycle`         | objet ou null                                         | Non              |

### GET /agent/scans/\{scanId}/repair-brief

Une partie du brief de correction d’une analyse.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_repair_brief`](/fr/mcp/tools#lockpick_get_repair_brief)

**Paramètres de requête**

| Champ       | Type                                                                                      | Requis |
| ----------- | ----------------------------------------------------------------------------------------- | ------ |
| `findingId` | chaîne                                                                                    | Non    |
| `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | Non    |
| `cursor`    | chaîne                                                                                    | Non    |

**data**

| Champ        | Type             | Toujours présent |
| ------------ | ---------------- | ---------------- |
| `scanId`     | chaîne           | Oui              |
| `findingIds` | liste de chaînes | Oui              |
| `saved`      | booléen          | Oui              |
| `markdown`   | chaîne           | Oui              |
| `nextCursor` | chaîne ou null   | Oui              |
| `complete`   | booléen          | Oui              |
| `webUrl`     | chaîne           | Oui              |

### GET /agent/scans/\{scanId}/comparison

Ce qui a changé entre une analyse et celle qu’elle recontrôle.

* Autorisation : `read`
* Outil MCP : [`lockpick_compare_scans`](/fr/mcp/tools#lockpick_compare_scans)
* Envoyez `x-lockpick-agent-features: finding-code` pour recevoir le `code` de chaque constat (`LP-` et six caractères, tel que le rapport web l'affiche). Sans l'en-tête, la réponse n'a pas de `code`, la forme qu'attendent les anciens clients.

**data**

| Champ           | Type           | Toujours présent |
| --------------- | -------------- | ---------------- |
| `runId`         | chaîne         | Oui              |
| `baselineRunId` | chaîne         | Oui              |
| `error`         | chaîne ou null | Oui              |
| `changes`       | liste d’objets | Oui              |
| `webUrl`        | chaîne         | Oui              |

### POST /agent/scans/\{scanId}/dns-rechecks

Relancer le contrôle DNS gratuit d’une analyse. N’envoie rien au site.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_recheck_dns`](/fr/mcp/tools#lockpick_recheck_dns)

**Corps**

| Champ            | Type   | Requis |
| ---------------- | ------ | ------ |
| `findingId`      | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

**data**

| Champ                    | Type             | Toujours présent |
| ------------------------ | ---------------- | ---------------- |
| `scanId`                 | chaîne           | Oui              |
| `findingIds`             | liste de chaînes | Oui              |
| `pending`                | objet ou null    | Oui              |
| `checkedAt`              | chaîne ou null   | Oui              |
| `outcomes`               | liste d’objets   | Oui              |
| `nextAllowedAt`          | chaîne ou null   | Oui              |
| `failedAt`               | chaîne ou null   | Oui              |
| `originalGradeUnchanged` | booléen          | Oui              |

### GET /agent/scans/\{scanId}/dns-rechecks/latest

Le dernier contrôle DNS relancé d’une analyse.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_dns_recheck`](/fr/mcp/tools#lockpick_get_dns_recheck)

**data**

| Champ                    | Type             | Toujours présent |
| ------------------------ | ---------------- | ---------------- |
| `scanId`                 | chaîne           | Oui              |
| `findingIds`             | liste de chaînes | Oui              |
| `pending`                | objet ou null    | Oui              |
| `checkedAt`              | chaîne ou null   | Oui              |
| `outcomes`               | liste d’objets   | Oui              |
| `nextAllowedAt`          | chaîne ou null   | Oui              |
| `failedAt`               | chaîne ou null   | Oui              |
| `originalGradeUnchanged` | booléen          | Oui              |

### POST /agent/scans/\{scanId}/deep-rechecks

Vérifier ce correctif : relire uniquement ce sur quoi un point à corriger Deep a été vu. Gratuit, limité chaque jour.

* Autorisation : `deep`
* Outil MCP : [`lockpick_recheck_finding`](/fr/mcp/tools#lockpick_recheck_finding)

**Corps**

| Champ            | Type   | Requis |
| ---------------- | ------ | ------ |
| `findingId`      | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

**data**

| Champ                     | Type           | Toujours présent |
| ------------------------- | -------------- | ---------------- |
| `scanId`                  | chaîne         | Oui              |
| `findingId`               | chaîne         | Oui              |
| `pending`                 | objet ou null  | Oui              |
| `latest`                  | objet ou null  | Oui              |
| `failedAt`                | chaîne ou null | Oui              |
| `remainingToday`          | entier         | Oui              |
| `workspaceRemainingToday` | entier         | Oui              |
| `webUrl`                  | chaîne         | Oui              |
| `originalGradeUnchanged`  | booléen        | Oui              |

### GET /agent/scans/\{scanId}/deep-rechecks/\{findingId}

Le dernier Vérifier ce correctif d’un point à corriger Deep.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_finding_recheck`](/fr/mcp/tools#lockpick_get_finding_recheck)

**data**

| Champ                     | Type           | Toujours présent |
| ------------------------- | -------------- | ---------------- |
| `scanId`                  | chaîne         | Oui              |
| `findingId`               | chaîne         | Oui              |
| `pending`                 | objet ou null  | Oui              |
| `latest`                  | objet ou null  | Oui              |
| `failedAt`                | chaîne ou null | Oui              |
| `remainingToday`          | entier         | Oui              |
| `workspaceRemainingToday` | entier         | Oui              |
| `webUrl`                  | chaîne         | Oui              |
| `originalGradeUnchanged`  | booléen        | Oui              |

### POST /agent/quick-checks

Lancer un contrôle rapide gratuit d’une page d’accueil.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_quick_check`](/fr/mcp/tools#lockpick_quick_check)

**Corps**

| Champ            | Type   | Requis |
| ---------------- | ------ | ------ |
| `url`            | chaîne | Oui    |
| `idempotencyKey` | chaîne | Oui    |

**data**

| Champ                       | Type                                       | Toujours présent |
| --------------------------- | ------------------------------------------ | ---------------- |
| `checkId`                   | chaîne                                     | Oui              |
| `status`                    | `queued`, `running`, `succeeded`, `failed` | Oui              |
| `reused`                    | booléen                                    | Oui              |
| `headline`                  | objet                                      | Oui              |
| `summary`                   | chaîne ou null                             | Oui              |
| `checks`                    | liste d’objets                             | Oui              |
| `webUrl`                    | chaîne                                     | Oui              |
| `suggestedPollAfterSeconds` | entier ou null                             | Oui              |

### POST /agent/repository-checks

Vérifier un dépôt GitHub public (un skill, un plugin, un serveur MCP ou une application) avant de l’installer.

* Autorisation : `pulse`
* Outil MCP : [`lockpick_check_repository`](/fr/mcp/tools#lockpick_check_repository)

**Corps**

| Champ            | Type           | Requis |
| ---------------- | -------------- | ------ |
| `url`            | chaîne         | Oui    |
| `mode`           | `skill`, `app` | Non    |
| `depth`          | `free`, `deep` | Non    |
| `idempotencyKey` | chaîne         | Oui    |

**data**

| Champ                       | Type                                                                                                                 | Toujours présent |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `checkId`                   | chaîne                                                                                                               | Oui              |
| `status`                    | `queued`, `running`, `succeeded`, `failed`                                                                           | Oui              |
| `reused`                    | booléen                                                                                                              | Oui              |
| `repository`                | objet                                                                                                                | Oui              |
| `mode`                      | `skill`, `app` ou null                                                                                               | Oui              |
| `kind`                      | chaîne ou null                                                                                                       | Oui              |
| `verdict`                   | `safe`, `caution`, `do_not_install` ou null                                                                          | Oui              |
| `appRisk`                   | `low`, `elevated`, `high` ou null                                                                                    | Oui              |
| `score`                     | entier ou null                                                                                                       | Oui              |
| `summary`                   | chaîne ou null                                                                                                       | Oui              |
| `plainSummary`              | chaîne ou null                                                                                                       | Oui              |
| `findings`                  | liste d’objets                                                                                                       | Oui              |
| `moreFindings`              | entier                                                                                                               | Oui              |
| `coverage`                  | objet ou null                                                                                                        | Oui              |
| `failure`                   | `not-found`, `ref-not-found`, `empty`, `too-large`, `rate-limited`, `unavailable`, `timeout`, `engine-error` ou null | Oui              |
| `webUrl`                    | chaîne                                                                                                               | Oui              |
| `suggestedPollAfterSeconds` | entier ou null                                                                                                       | Oui              |

### GET /agent/repository-checks/\{checkId}

Une vérification de dépôt et ses constats.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_repository_check`](/fr/mcp/tools#lockpick_get_repository_check)

**data**

| Champ                       | Type                                                                                                                 | Toujours présent |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------- |
| `checkId`                   | chaîne                                                                                                               | Oui              |
| `status`                    | `queued`, `running`, `succeeded`, `failed`                                                                           | Oui              |
| `reused`                    | booléen                                                                                                              | Oui              |
| `repository`                | objet                                                                                                                | Oui              |
| `mode`                      | `skill`, `app` ou null                                                                                               | Oui              |
| `kind`                      | chaîne ou null                                                                                                       | Oui              |
| `verdict`                   | `safe`, `caution`, `do_not_install` ou null                                                                          | Oui              |
| `appRisk`                   | `low`, `elevated`, `high` ou null                                                                                    | Oui              |
| `score`                     | entier ou null                                                                                                       | Oui              |
| `summary`                   | chaîne ou null                                                                                                       | Oui              |
| `plainSummary`              | chaîne ou null                                                                                                       | Oui              |
| `findings`                  | liste d’objets                                                                                                       | Oui              |
| `moreFindings`              | entier                                                                                                               | Oui              |
| `coverage`                  | objet ou null                                                                                                        | Oui              |
| `failure`                   | `not-found`, `ref-not-found`, `empty`, `too-large`, `rate-limited`, `unavailable`, `timeout`, `engine-error` ou null | Oui              |
| `webUrl`                    | chaîne                                                                                                               | Oui              |
| `suggestedPollAfterSeconds` | entier ou null                                                                                                       | Oui              |

### GET /agent/quick-checks/\{checkId}

Un contrôle rapide et son résultat.

* Autorisation : `read`
* Outil MCP : [`lockpick_get_quick_check`](/fr/mcp/tools#lockpick_get_quick_check)

**data**

| Champ                       | Type                                       | Toujours présent |
| --------------------------- | ------------------------------------------ | ---------------- |
| `checkId`                   | chaîne                                     | Oui              |
| `status`                    | `queued`, `running`, `succeeded`, `failed` | Oui              |
| `reused`                    | booléen                                    | Oui              |
| `headline`                  | objet                                      | Oui              |
| `summary`                   | chaîne ou null                             | Oui              |
| `checks`                    | liste d’objets                             | Oui              |
| `webUrl`                    | chaîne                                     | Oui              |
| `suggestedPollAfterSeconds` | entier ou null                             | Oui              |

### GET /agent/docs/search

Rechercher dans la documentation publique de Lockpick.

* Autorisation : `read`
* Outil MCP : [`lockpick_search_docs`](/fr/mcp/tools#lockpick_search_docs)

**Paramètres de requête**

| Champ   | Type   | Requis |
| ------- | ------ | ------ |
| `query` | chaîne | Oui    |
| `limit` | entier | Non    |

**data**

| Champ     | Type           | Toujours présent |
| --------- | -------------- | ---------------- |
| `query`   | chaîne         | Oui              |
| `results` | liste d’objets | Oui              |

### GET /agent/docs/page

Une page de la documentation publique en Markdown, par parties si elle est longue.

* Autorisation : `read`
* Outil MCP : [`lockpick_read_doc`](/fr/mcp/tools#lockpick_read_doc)

**Paramètres de requête**

| Champ    | Type   | Requis |
| -------- | ------ | ------ |
| `path`   | chaîne | Non    |
| `cursor` | chaîne | Non    |

**data**

| Champ         | Type           | Toujours présent |
| ------------- | -------------- | ---------------- |
| `path`        | chaîne         | Oui              |
| `title`       | chaîne         | Oui              |
| `description` | chaîne ou null | Oui              |
| `url`         | chaîne         | Oui              |
| `markdownUrl` | chaîne         | Oui              |
| `markdown`    | chaîne         | Oui              |
| `nextCursor`  | chaîne ou null | Oui              |
| `complete`    | booléen        | Oui              |

## Connexion par appareil

Comment `lockpick login` obtient une clé : il demande un code, la personne l’autorise dans le navigateur, et l’interrogation renvoie la clé.

### POST /device/code

Démarrer une connexion par appareil et obtenir un code à autoriser dans le navigateur.

* Autorisation : aucune, fait partie de la connexion

**Corps**

| Champ        | Type                                       | Requis |
| ------------ | ------------------------------------------ | ------ |
| `clientName` | chaîne                                     | Non    |
| `hostname`   | chaîne                                     | Non    |
| `platform`   | chaîne                                     | Non    |
| `version`    | chaîne                                     | Non    |
| `scopes`     | liste de `pulse`, `sites`, `deep`, `local` | Non    |

**data**

| Champ                     | Type   | Toujours présent |
| ------------------------- | ------ | ---------------- |
| `deviceCode`              | chaîne | Oui              |
| `userCode`                | chaîne | Oui              |
| `verificationUri`         | chaîne | Oui              |
| `verificationUriComplete` | chaîne | Oui              |
| `expiresIn`               | entier | Oui              |
| `interval`                | entier | Oui              |

### POST /device/token

Interroger une connexion par appareil jusqu’à ce que la personne l’autorise, puis recevoir la clé.

* Autorisation : aucune, fait partie de la connexion

**Corps**

| Champ        | Type   | Requis |
| ------------ | ------ | ------ |
| `deviceCode` | chaîne | Oui    |

## Anciennes routes

Les routes CLI d’origine, utilisées par la CLI 0.2. Elles restent inchangées, et les nouvelles intégrations doivent utiliser l’API de l’agent ci-dessus.

<details>
  <summary>
    Routes CLI d’origine
  </summary>

  **GET /projects/\{projectId}/dismissals**

  Gérez les constats acceptés et leurs motifs pour ce projet. Annuler réactive un constat ; une modification des preuves ou des règles exige un nouvel examen. Les audits locaux gardent votre code et le rapport sur votre machine. Une autorisation en ligne reste nécessaire.

  * Autorisation : `read`

  **data**

  | Champ        | Type           | Toujours présent |
  | ------------ | -------------- | ---------------- |
  | `version`    | nombre         | Oui              |
  | `projectId`  | chaîne         | Oui              |
  | `dismissals` | liste d’objets | Oui              |

  **POST /projects/\{projectId}/dismissals**

  Gérez les constats acceptés et leurs motifs pour ce projet. Annuler réactive un constat ; une modification des preuves ou des règles exige un nouvel examen. Les audits locaux gardent votre code et le rapport sur votre machine. Une autorisation en ligne reste nécessaire.

  * Autorisation : `sites`

  **Corps**

  | Champ        | Type           | Requis |
  | ------------ | -------------- | ------ |
  | `version`    | nombre         | Oui    |
  | `projectId`  | chaîne         | Oui    |
  | `dismissals` | liste d’objets | Oui    |

  **data**

  | Champ      | Type   | Toujours présent |
  | ---------- | ------ | ---------------- |
  | `imported` | entier | Oui              |

  **POST /projects/\{projectId}/local-assessments/authorize**

  Autoriser une évaluation locale avant d’inspecter le dépôt. Aucun code source ni résultat n’est envoyé.

  * Autorisation : `local`

  **Corps**

  | Champ                 | Type                                                                                                                                                                                                                                                                    | Requis |
  | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
  | `cliVersion`          | chaîne                                                                                                                                                                                                                                                                  | Oui    |
  | `scannerVersion`      | chaîne                                                                                                                                                                                                                                                                  | Oui    |
  | `rulesetVersion`      | chaîne                                                                                                                                                                                                                                                                  | Oui    |
  | `reportSchemaVersion` | chaîne                                                                                                                                                                                                                                                                  | Oui    |
  | `checks`              | list of `tracked-secrets`, `public-environment`, `browser-artifacts`, `supabase-client`, `supabase-migrations`, `git-history`, `docker-files`, `docker-values`, `actions-injection`, `source-maps`, `php-version`, `actions-policy`, `compose-policy`, `hosting-config` | Oui    |

  **data**

  | Champ           | Type           | Toujours présent |
  | --------------- | -------------- | ---------------- |
  | `admissionId`   | chaîne         | Oui              |
  | `projectId`     | chaîne         | Oui              |
  | `workspaceId`   | chaîne         | Oui              |
  | `policyVersion` | chaîne         | Oui              |
  | `startBy`       | chaîne         | Oui              |
  | `checks`        | liste d’objets | Oui              |

  **GET /me**

  La personne, l’espace de travail et la clé derrière cet identifiant.

  * Autorisation : `read`

  **data**

  | Champ       | Type  | Toujours présent |
  | ----------- | ----- | ---------------- |
  | `user`      | objet | Oui              |
  | `workspace` | objet | Oui              |
  | `key`       | objet | Oui              |

  **DELETE /me**

  Révoquer la clé présentée.

  * Autorisation : toute clé valide

  **data**

  | Champ     | Type    | Toujours présent |
  | --------- | ------- | ---------------- |
  | `revoked` | booléen | Oui              |

  **GET /projects**

  Sites (projets) avec leurs dernières analyses Pulse et Deep.

  * Autorisation : `read`

  **Chaque élément de data**

  | Champ         | Type           | Toujours présent |
  | ------------- | -------------- | ---------------- |
  | `id`          | chaîne         | Oui              |
  | `name`        | chaîne         | Oui              |
  | `status`      | chaîne         | Oui              |
  | `baseDomain`  | chaîne ou null | Oui              |
  | `latestPulse` | objet ou null  | Oui              |
  | `latestDeep`  | objet ou null  | Non              |
  | `latestBox`   | objet ou null  | Oui              |
  | `webPath`     | chaîne         | Oui              |
  | `webUrl`      | chaîne         | Non              |

  **GET /projects/\{projectId}/status**

  Derniers résultats d’un site et ce qui a changé.

  * Autorisation : `read`

  **data**

  | Champ            | Type             | Toujours présent |
  | ---------------- | ---------------- | ---------------- |
  | `project`        | objet            | Oui              |
  | `latestPulse`    | objet ou null    | Oui              |
  | `latestDeep`     | objet ou null    | Non              |
  | `latestBox`      | objet ou null    | Oui              |
  | `lastComparison` | objet ou null    | Oui              |
  | `fixes`          | objet ou null    | Non              |
  | `caveats`        | liste de chaînes | Oui              |

  **POST /projects/\{projectId}/pulse**

  Lancer une analyse Pulse sur un site, ou un nouveau contrôle de la dernière.

  * Autorisation : `pulse`
  * Répond 201 en cas de succès

  **Corps**

  | Champ            | Type   | Requis |
  | ---------------- | ------ | ------ |
  | `idempotencyKey` | chaîne | Oui    |

  **data**

  | Champ                       | Type                                                                                | Toujours présent |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | chaîne                                                                              | Oui              |
  | `kind`                      | `pulse`, `box` (Deep, nom hérité)                                                   | Oui              |
  | `projectId`                 | chaîne                                                                              | Oui              |
  | `target`                    | chaîne                                                                              | Oui              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Oui              |
  | `mode`                      | `autonomous`, `authenticated`, `active` ou null                                     | Oui              |
  | `createdAt`                 | chaîne ou null                                                                      | Oui              |
  | `finishedAt`                | chaîne ou null                                                                      | Oui              |
  | `webPath`                   | chaîne                                                                              | Oui              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` ou null                                                 | Non              |
  | `headline`                  | objet                                                                               | Non              |
  | `webUrl`                    | chaîne                                                                              | Non              |
  | `suggestedPollAfterSeconds` | entier ou null                                                                      | Non              |
  | `dismissals`                | objet                                                                               | Non              |
  | `baselineRunId`             | chaîne ou null                                                                      | Oui              |
  | `open`                      | objet                                                                               | Oui              |
  | `findingCount`              | entier                                                                              | Oui              |
  | `progress`                  | objet ou null                                                                       | Oui              |
  | `coverage`                  | objet                                                                               | Oui              |
  | `caveats`                   | liste de chaînes                                                                    | Oui              |
  | `outcome`                   | objet ou null                                                                       | Non              |
  | `exposureCheck`             | objet ou null                                                                       | Non              |
  | `coverageReceipt`           | objet ou null                                                                       | Non              |

  **POST /projects/\{projectId}/deep**

  Lancer l’analyse Deep d’une version avec une clé CI créée pour ce site, avec l’autorisation Deep.

  * Autorisation : `deep`
  * Répond 201 en cas de succès

  **Corps**

  | Champ            | Type   | Requis |
  | ---------------- | ------ | ------ |
  | `idempotencyKey` | chaîne | Oui    |

  **data**

  | Champ                       | Type                                                                                | Toujours présent |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | chaîne                                                                              | Oui              |
  | `kind`                      | `pulse`, `box` (Deep, nom hérité)                                                   | Oui              |
  | `projectId`                 | chaîne                                                                              | Oui              |
  | `target`                    | chaîne                                                                              | Oui              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Oui              |
  | `mode`                      | `autonomous`, `authenticated`, `active` ou null                                     | Oui              |
  | `createdAt`                 | chaîne ou null                                                                      | Oui              |
  | `finishedAt`                | chaîne ou null                                                                      | Oui              |
  | `webPath`                   | chaîne                                                                              | Oui              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` ou null                                                 | Non              |
  | `headline`                  | objet                                                                               | Non              |
  | `webUrl`                    | chaîne                                                                              | Non              |
  | `suggestedPollAfterSeconds` | entier ou null                                                                      | Non              |
  | `dismissals`                | objet                                                                               | Non              |
  | `baselineRunId`             | chaîne ou null                                                                      | Oui              |
  | `open`                      | objet                                                                               | Oui              |
  | `findingCount`              | entier                                                                              | Oui              |
  | `progress`                  | objet ou null                                                                       | Oui              |
  | `coverage`                  | objet                                                                               | Oui              |
  | `caveats`                   | liste de chaînes                                                                    | Oui              |
  | `outcome`                   | objet ou null                                                                       | Non              |
  | `exposureCheck`             | objet ou null                                                                       | Non              |
  | `coverageReceipt`           | objet ou null                                                                       | Non              |

  **GET /runs**

  Analyses Pulse et Deep, les plus récentes en premier.

  * Autorisation : `read`

  **Paramètres de requête**

  | Champ             | Type                                                                                | Requis |
  | ----------------- | ----------------------------------------------------------------------------------- | ------ |
  | `projectId`       | chaîne                                                                              | Non    |
  | `kind`            | `pulse`, `box` (Deep, nom hérité)                                                   | Non    |
  | `assessmentLevel` | `pulse`, `standard`, `deep`                                                         | Non    |
  | `status`          | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Non    |
  | `limit`           | entier                                                                              | Non    |

  **Chaque élément de data**

  | Champ                       | Type                                                                                | Toujours présent |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | chaîne                                                                              | Oui              |
  | `kind`                      | `pulse`, `box` (Deep, nom hérité)                                                   | Oui              |
  | `projectId`                 | chaîne                                                                              | Oui              |
  | `target`                    | chaîne                                                                              | Oui              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Oui              |
  | `mode`                      | `autonomous`, `authenticated`, `active` ou null                                     | Oui              |
  | `createdAt`                 | chaîne ou null                                                                      | Oui              |
  | `finishedAt`                | chaîne ou null                                                                      | Oui              |
  | `webPath`                   | chaîne                                                                              | Oui              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` ou null                                                 | Non              |
  | `headline`                  | objet                                                                               | Non              |
  | `webUrl`                    | chaîne                                                                              | Non              |
  | `suggestedPollAfterSeconds` | entier ou null                                                                      | Non              |

  **GET /runs/\{runId}**

  Une analyse avec son résumé et ses totaux.

  * Autorisation : `read`

  **data**

  | Champ                       | Type                                                                                | Toujours présent |
  | --------------------------- | ----------------------------------------------------------------------------------- | ---------------- |
  | `id`                        | chaîne                                                                              | Oui              |
  | `kind`                      | `pulse`, `box` (Deep, nom hérité)                                                   | Oui              |
  | `projectId`                 | chaîne                                                                              | Oui              |
  | `target`                    | chaîne                                                                              | Oui              |
  | `status`                    | `queued`, `running`, `cancelling`, `succeeded`, `incomplete`, `failed`, `cancelled` | Oui              |
  | `mode`                      | `autonomous`, `authenticated`, `active` ou null                                     | Oui              |
  | `createdAt`                 | chaîne ou null                                                                      | Oui              |
  | `finishedAt`                | chaîne ou null                                                                      | Oui              |
  | `webPath`                   | chaîne                                                                              | Oui              |
  | `assessmentLevel`           | `pulse`, `standard`, `deep` ou null                                                 | Non              |
  | `headline`                  | objet                                                                               | Non              |
  | `webUrl`                    | chaîne                                                                              | Non              |
  | `suggestedPollAfterSeconds` | entier ou null                                                                      | Non              |
  | `dismissals`                | objet                                                                               | Non              |
  | `baselineRunId`             | chaîne ou null                                                                      | Oui              |
  | `open`                      | objet                                                                               | Oui              |
  | `findingCount`              | entier                                                                              | Oui              |
  | `progress`                  | objet ou null                                                                       | Oui              |
  | `coverage`                  | objet                                                                               | Oui              |
  | `caveats`                   | liste de chaînes                                                                    | Oui              |
  | `outcome`                   | objet ou null                                                                       | Non              |
  | `exposureCheck`             | objet ou null                                                                       | Non              |
  | `coverageReceipt`           | objet ou null                                                                       | Non              |

  **GET /runs/\{runId}/findings**

  Points à corriger d’une analyse.

  * Autorisation : `read`

  **Paramètres de requête**

  | Champ      | Type                                          | Requis |
  | ---------- | --------------------------------------------- | ------ |
  | `severity` | `critical`, `high`, `medium`, `low`, `info`   | Non    |
  | `state`    | `attention`, `information`, `unknown`, `pass` | Non    |
  | `all`      | `true`, `false`                               | Non    |

  **Chaque élément de data**

  | Champ            | Type                                                  | Toujours présent |
  | ---------------- | ----------------------------------------------------- | ---------------- |
  | `dismissal`      | objet                                                 | Non              |
  | `id`             | chaîne                                                | Oui              |
  | `code`           | chaîne                                                | Non              |
  | `runId`          | chaîne                                                | Oui              |
  | `kind`           | `pulse`, `box` (Deep, nom hérité)                     | Oui              |
  | `severity`       | `critical`, `high`, `medium`, `low`, `info`           | Oui              |
  | `state`          | `attention`, `information`, `unknown`, `pass`         | Oui              |
  | `category`       | chaîne                                                | Oui              |
  | `title`          | chaîne                                                | Oui              |
  | `meaning`        | chaîne                                                | Oui              |
  | `fix`            | chaîne ou null                                        | Oui              |
  | `confidence`     | chaîne                                                | Oui              |
  | `evidence`       | liste de chaînes                                      | Oui              |
  | `sources`        | liste de chaînes                                      | Oui              |
  | `steps`          | liste de chaînes                                      | Oui              |
  | `webPath`        | chaîne                                                | Oui              |
  | `webUrl`         | chaîne                                                | Non              |
  | `verdict`        | `confirmed`, `needs_review`, `not_actionable` ou null | Non              |
  | `certainty`      | `high`, `medium`, `low` ou null                       | Non              |
  | `exploitability` | `direct`, `conditional`, `hygiene`, `none` ou null    | Non              |
  | `proof`          | objet ou null                                         | Non              |
  | `proofGap`       | chaîne ou null                                        | Non              |
  | `urgency`        | `now`, `week`, `later`, `none`                        | Non              |
  | `howSure`        | `confirmed`, `likely`, `possible` ou null             | Non              |
  | `lifecycle`      | objet ou null                                         | Non              |

  **GET /runs/\{runId}/findings/\{findingId}**

  Un point à corriger avec ses preuves masquées.

  * Autorisation : `read`

  **data**

  | Champ            | Type                                                  | Toujours présent |
  | ---------------- | ----------------------------------------------------- | ---------------- |
  | `dismissal`      | objet                                                 | Non              |
  | `id`             | chaîne                                                | Oui              |
  | `code`           | chaîne                                                | Non              |
  | `runId`          | chaîne                                                | Oui              |
  | `kind`           | `pulse`, `box` (Deep, nom hérité)                     | Oui              |
  | `severity`       | `critical`, `high`, `medium`, `low`, `info`           | Oui              |
  | `state`          | `attention`, `information`, `unknown`, `pass`         | Oui              |
  | `category`       | chaîne                                                | Oui              |
  | `title`          | chaîne                                                | Oui              |
  | `meaning`        | chaîne                                                | Oui              |
  | `fix`            | chaîne ou null                                        | Oui              |
  | `confidence`     | chaîne                                                | Oui              |
  | `evidence`       | liste de chaînes                                      | Oui              |
  | `sources`        | liste de chaînes                                      | Oui              |
  | `steps`          | liste de chaînes                                      | Oui              |
  | `webPath`        | chaîne                                                | Oui              |
  | `webUrl`         | chaîne                                                | Non              |
  | `verdict`        | `confirmed`, `needs_review`, `not_actionable` ou null | Non              |
  | `certainty`      | `high`, `medium`, `low` ou null                       | Non              |
  | `exploitability` | `direct`, `conditional`, `hygiene`, `none` ou null    | Non              |
  | `proof`          | objet ou null                                         | Non              |
  | `proofGap`       | chaîne ou null                                        | Non              |
  | `urgency`        | `now`, `week`, `later`, `none`                        | Non              |
  | `howSure`        | `confirmed`, `likely`, `possible` ou null             | Non              |
  | `lifecycle`      | objet ou null                                         | Non              |

  **GET /runs/\{runId}/repair-brief**

  Les corrections d’une analyse dans un seul brief Markdown.

  * Autorisation : `read`

  **Paramètres de requête**

  | Champ       | Type                                                                                      | Requis |
  | ----------- | ----------------------------------------------------------------------------------------- | ------ |
  | `findingId` | chaîne                                                                                    | Non    |
  | `agent`     | `claude-code`, `codex`, `cursor`, `vscode`, `opencode`, `lovable`, `bolt`, `replit`, `v0` | Non    |

  **data**

  | Champ        | Type             | Toujours présent |
  | ------------ | ---------------- | ---------------- |
  | `runId`      | chaîne           | Oui              |
  | `findingIds` | liste de chaînes | Oui              |
  | `saved`      | booléen          | Oui              |
  | `markdown`   | chaîne           | Oui              |
  | `webUrl`     | chaîne           | Non              |

  **GET /runs/\{runId}/comparison**

  Ce qui a changé entre une analyse et la précédente.

  * Autorisation : `read`

  **data**

  | Champ           | Type           | Toujours présent |
  | --------------- | -------------- | ---------------- |
  | `runId`         | chaîne         | Oui              |
  | `baselineRunId` | chaîne         | Oui              |
  | `error`         | chaîne ou null | Oui              |
  | `changes`       | liste d’objets | Oui              |
  | `webUrl`        | chaîne         | Non              |

  **GET /runs/\{runId}/export**

  Les résultats d’une analyse en PDF, en mots simples ou technique, encodés en base64.

  * Autorisation : `read`

  **Paramètres de requête**

  | Champ     | Type                 | Requis |
  | --------- | -------------------- | ------ |
  | `dialect` | `plain`, `technical` | Oui    |

  **data**

  | Champ      | Type   | Toujours présent |
  | ---------- | ------ | ---------------- |
  | `filename` | chaîne | Oui              |
  | `mimeType` | chaîne | Oui              |
  | `base64`   | chaîne | Oui              |
</details>