> ## 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.

# IDL-Versionen auflisten

> Liste alle IDL-Versionen auf, die Parsed Events für ein Solana-Programm enthält, einschließlich des slots, ab dem die jeweilige Version aktiv war.

Die Pfadparameter, das response-Schema und die Beispiele auf dieser Seite werden aus der OpenAPI-Definition generiert.

„IDL-Versionen auflisten“ gibt den Verlauf der Programmschnittstelle aus dem IDL-Katalog zurück, den Parsed Events und [Parsed Streams](https://www.helius.dev/docs/de/parsed-streams.md) zum Decodieren von Anweisungen verwenden. Jedes Element entspricht einer Version und wird durch den slot identifiziert, ab dem sie aktiv war. Die Elemente sind aufsteigend nach Alter sortiert. Das letzte Element ist daher die aktuelle Version.

Übergib einen beliebigen `slot`-Wert aus der response an [IDL abrufen](https://www.helius.dev/docs/de/api-reference/parsed-events/idl.md), um das IDL-Dokument dieser Version abzurufen. Der [Orb Explorer](https://www.helius.dev/docs/de/orb/explore-programs.md) verwendet diese endpoints, um Programm-IDLs anzuzeigen.

## Anwendungsfälle

* **Änderungen an der Schnittstelle verfolgen.** Frage „IDL-Versionen auflisten“ regelmäßig für ein Programm ab, von dem du abhängig bist. Wenn eine neue Version erscheint, rufe sie und die vorherige Version mit „IDL abrufen“ ab und vergleiche ihre `instructions`. Eine neue Admin- oder Autorisierungsanweisung sollte einer Sicherheitsprüfung unterzogen werden.
* **Katalogabdeckung prüfen.** Ein `404` bedeutet, dass der Katalog keine IDL für das Programm enthält. Programme wie SPL Token werden stattdessen von integrierten Decodern verarbeitet und geben ebenfalls `404` zurück.

## Beispiel: Eine neue IDL-Version erkennen

Dieses Skript listet die IDL-Versionen eines Programms auf, ruft die beiden neuesten ab und gibt die hinzugefügten oder entfernten Anweisungen aus:

```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)));
```

Um Änderungen im Laufe der Zeit zu erkennen, speichere den `slot`-Wert der zuletzt gesehenen Version und vergleiche ihn bei jeder Abfrage.

## Credits

Jeder request kostet **10 Credits** und ist in allen Tarifen verfügbar. Das obige Beispiel führt drei requests aus und kostet daher 30 Credits. Weitere Informationen findest du unter [Credits](https://www.helius.dev/docs/de/billing/credits.md#geparste-events).

## Fehler

| Status | Wann |
| - | - |
| `400` | `programId` ist keine gültige Base58-Adresse. |
| `401` | Der API key fehlt oder ist ungültig. Der Textkörper enthält Klartext: `Unauthorized`. |
| `404` | Der Katalog enthält keine IDL für das Programm. |

Andere Fehler geben einen JSON-Textkörper mit einer `error`-Meldung zurück, beispielsweise `{"error": "no IDLs found for program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}`.

## Request-Parameter

**programId** `string` *required*

Programmadresse, Base58-codiert.


## OpenAPI

````yaml de/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}
openapi: 3.0.3
info:
  title: Geparste Events
  version: 0.1.0
  description: >-
    Parse Solana-Transaktionen und den geparsten Transaktionsverlauf mit
    geparsten Events.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}:
    get:
      tags:
        - Parsed Events
      summary: IDL-Versionen auflisten
      description: >-
        Listet alle IDL-Versionen auf, die Parsed Events für ein Programm hat,
        beginnend mit der ältesten. Jede Version wird durch den slot
        identifiziert, ab dem sie aktiv war.
      operationId: listIdlVersionsParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      responses:
        '200':
          description: Die IDL-Versionen des Programms, aufsteigend nach `slot` sortiert.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IdlVersion'
              examples:
                default:
                  summary: Kamino Lend (die ersten 3 von 43 Versionen)
                  value:
                    - slot: 182747476
                      sources:
                        - anchor
                    - slot: 205509752
                      sources:
                        - anchor
                    - slot: 206074074
                      sources:
                        - anchor
        '400':
          description: '`programId` ist keine gültige Adresse.'
          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: >-
            Der Katalog enthält keine IDL für das Programm. Programme, die
            Parsed Events mit integrierten Decodern decodiert, etwa SPL Token,
            geben `404` zurück.
          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: Programm-Adresse, Base58-codiert.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    IdlVersion:
      type: object
      description: Eine IDL-Version eines Programms.
      required:
        - slot
        - sources
      properties:
        slot:
          type: integer
          format: uint64
          description: >-
            Der slot, ab dem diese IDL-Version aktiv war. Übergib ihn an „IDL
            abrufen“, um diese Version abzurufen.
        sources:
          type: array
          description: >-
            Wo Parsed Events diese Version gefunden hat. Mögliche Werte sind
            `anchor`, `program_metadata` und `github`. Weitere Werte können
            hinzukommen. Eine Version kann mehrere Quellen haben.
          items:
            type: string
    ErrorResponse:
      type: object
      description: Response mit einem Fehler auf request-Ebene.
      properties:
        error:
          type: string
          description: Fehlermeldung.
  responses:
    Unauthorized:
      description: Der API key fehlt oder ist ungültig. Der Body enthält Klartext.
      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.