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

# Répertorier les versions d’IDL

> Répertoriez toutes les versions d’IDL dont Parsed Events dispose pour un programme Solana, avec le slot auquel chaque version est devenue active.

Les paramètres de chemin, le schéma de réponse et les exemples de cette page sont générés à partir de la définition OpenAPI.

Répertorier les versions d’IDL renvoie l’historique de l’interface d’un programme depuis le catalogue d’IDL utilisé par Parsed Events et [Parsed Streams](https://www.helius.dev/docs/fr/parsed-streams.md) pour décoder les instructions. Chaque élément correspond à une version, identifiée par le slot auquel elle est devenue active. Les éléments sont triés du plus ancien au plus récent ; le dernier correspond donc à la version actuelle.

Transmettez n’importe quelle valeur `slot` de la réponse à [Obtenir un IDL](https://www.helius.dev/docs/fr/api-reference/parsed-events/idl.md) pour récupérer le document IDL de cette version. L’[explorateur Orb](https://www.helius.dev/docs/fr/orb/explore-programs.md) utilise ces endpoints pour afficher les IDL des programmes.

## Cas d’utilisation

* **Suivre les modifications de l’interface.** Interrogez régulièrement Répertorier les versions d’IDL pour un programme dont vous dépendez. Lorsqu’une nouvelle version apparaît, récupérez-la ainsi que la précédente avec Obtenir un IDL, puis comparez leurs `instructions`. L’ajout d’une instruction d’administration ou d’autorité mérite un examen de sécurité.
* **Vérifier la couverture du catalogue.** Une réponse `404` signifie que le catalogue ne contient aucun IDL pour le programme. Les programmes tels que SPL Token sont plutôt décodés par des décodeurs intégrés et renvoient également `404`.

## Exemple : détecter une nouvelle version d’IDL

Ce script répertorie les versions d’IDL d’un programme, récupère les deux plus récentes et affiche les instructions ajoutées ou supprimées :

```javascript diff-idl-versions.js theme={"system"}
const API_KEY = process.env.HELIUS_API_KEY;

if (!API_KEY) {
  console.error("Missing HELIUS_API_KEY.");
  process.exit(1);
}

const BASE = "https://mainnet.helius-rpc.com/v1/parsed-events/idl";
const PROGRAM_ID = "KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD";

async function get(path) {
  const response = await fetch(`${BASE}/${path}?api-key=${API_KEY}`);
  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }
  return response.json();
}

const versions = await get(PROGRAM_ID);
if (versions.length < 2) {
  console.log("Fewer than two IDL versions; nothing to compare.");
  process.exit(0);
}

const [previous, latest] = versions.slice(-2);
const [before, after] = await Promise.all([
  get(`${PROGRAM_ID}/${previous.slot}`),
  get(`${PROGRAM_ID}/${latest.slot}`),
]);

const names = (idl) => new Set(idl.instructions.map((ix) => ix.name));
const beforeNames = names(before);
const afterNames = names(after);

console.log(`Comparing slot ${previous.slot} with slot ${latest.slot}`);
console.log("Added:", [...afterNames].filter((name) => !beforeNames.has(name)));
console.log("Removed:", [...beforeNames].filter((name) => !afterNames.has(name)));
```

Pour détecter les modifications au fil du temps, stockez la valeur `slot` de la dernière version observée et comparez-la lors de chaque interrogation.

## Crédits

Chaque requête coûte **10 crédits** et est disponible avec toutes les offres. L’exemple ci-dessus effectue trois requêtes et coûte donc 30 crédits. Consultez [Crédits](https://www.helius.dev/docs/fr/billing/credits.md#événements-analysés).

## Erreurs

| Statut | Cas |
| - | - |
| `400` | `programId` n’est pas une adresse base58 valide. |
| `401` | La clé API est absente ou non valide. Le corps est en texte brut : `Unauthorized`. |
| `404` | Le catalogue ne contient aucun IDL pour le programme. |

Les autres erreurs renvoient un corps JSON contenant un message `error`, tel que `{"error": "no IDLs found for program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}`.

## Paramètres de la requête

**programId** `string` *required*

Adresse du programme, encodée en base58.


## OpenAPI

````yaml fr/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}
openapi: 3.0.3
info:
  title: Événements Analysés
  version: 0.1.0
  description: >-
    Analysez les transactions Solana et l'historique des transactions analysées
    avec les Événements Analysés.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}:
    get:
      tags:
        - Événements analysés
      summary: Répertorier les versions de l’IDL
      description: >-
        Répertorie toutes les versions de l’IDL dont Événements analysés dispose
        pour un programme, de la plus ancienne à la plus récente. Chaque version
        est identifiée par le slot auquel elle est devenue active.
      operationId: listIdlVersionsParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      responses:
        '200':
          description: Versions de l’IDL du programme, triées par `slot` croissant.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IdlVersion'
              examples:
                default:
                  summary: Kamino Lend (3 premières versions sur 43)
                  value:
                    - slot: 182747476
                      sources:
                        - anchor
                    - slot: 205509752
                      sources:
                        - anchor
                    - slot: 206074074
                      sources:
                        - anchor
        '400':
          description: '`programId` n’est pas une adresse valide.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: 'invalid program id: notanaddress: String is the wrong size'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: >-
            Le catalogue ne contient aucune IDL pour le programme. Les
            programmes qu’Événements analysés décode à l’aide de décodeurs
            intégrés, tels que SPL Token, renvoient `404`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      no IDLs found for program
                      TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
components:
  parameters:
    ProgramId:
      name: programId
      in: path
      required: true
      description: Adresse du programme, encodée en base58.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    IdlVersion:
      type: object
      description: Une version de l’IDL d’un programme.
      required:
        - slot
        - sources
      properties:
        slot:
          type: integer
          format: uint64
          description: >-
            Slot auquel cette version de l’IDL est devenue active.
            Transmettez-le à Obtenir l’IDL pour récupérer cette version.
        sources:
          type: array
          description: >-
            Emplacements où Événements analysés a trouvé cette version. Les
            valeurs comprennent `anchor`, `program_metadata` et `github`, et
            d’autres pourront être ajoutées. Une version peut avoir plusieurs
            sources.
          items:
            type: string
    ErrorResponse:
      type: object
      description: Réponse d'erreur au niveau de la demande.
      properties:
        error:
          type: string
          description: Message d'erreur.
  responses:
    Unauthorized:
      description: La clé API est absente ou non valide. Le corps est en texte brut.
      content:
        text/plain:
          schema:
            type: string
          examples:
            default:
              value: Unauthorized
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.