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

# Listar versões de IDL

> Liste todas as versões de IDL que o Parsed Events tem para um programa da Solana, incluindo o slot em que cada versão se tornou ativa.

Os parâmetros de caminho, o esquema de resposta e os exemplos desta página são gerados com base na definição OpenAPI.

Listar versões de IDL retorna o histórico da interface de um programa presente no catálogo de IDLs que o Parsed Events e o [Parsed Streams](https://www.helius.dev/docs/pt-BR/parsed-streams.md) usam para decodificar instruções. Cada item corresponde a uma versão, identificada pelo slot em que ela se tornou ativa. Os itens são ordenados do mais antigo para o mais recente; portanto, o último item é a versão atual.

Passe qualquer `slot` da resposta para [Obter IDL](https://www.helius.dev/docs/pt-BR/api-reference/parsed-events/idl.md) a fim de buscar o documento IDL dessa versão. O [explorador Orb](https://www.helius.dev/docs/pt-BR/orb/explore-programs.md) usa esses endpoints para mostrar as IDLs dos programas.

## Casos de uso

* **Acompanhe alterações na interface.** Consulte periodicamente Listar versões de IDL para um programa do qual você depende. Quando uma nova versão aparecer, busque essa versão e a anterior com Obter IDL e compare os respectivos `instructions`. Uma nova instrução de administrador ou autoridade merece uma análise de segurança.
* **Verifique a cobertura do catálogo.** Um `404` significa que o catálogo não tem uma IDL para o programa. Programas como o SPL Token são decodificados por decodificadores integrados e também retornam `404`.

## Exemplo: detectar uma nova versão de IDL

Este script lista as versões de IDL de um programa, busca as duas mais recentes e exibe as instruções que foram adicionadas ou removidas:

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

Para detectar alterações ao longo do tempo, armazene o `slot` da última versão que você viu e compare-o a cada consulta periódica.

## Créditos

Cada solicitação custa **10 créditos** e está disponível em todos os planos. O exemplo acima faz três solicitações, portanto custa 30 créditos. Consulte [Créditos](https://www.helius.dev/docs/pt-BR/billing/credits.md#eventos-analisados).

## Erros

| Status | Quando |
| - | - |
| `400` | `programId` não é um endereço base58 válido. |
| `401` | A chave de API está ausente ou é inválida. O corpo está em texto simples: `Unauthorized`. |
| `404` | O catálogo não tem uma IDL para o programa. |

Outros erros retornam um corpo JSON com uma mensagem `error`, como `{"error": "no IDLs found for program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"}`.

## Parâmetros da solicitação

**programId** `string` *required*

Endereço do programa, codificado em base58.


## OpenAPI

````yaml pt-BR/openapi/parsed-events.yaml GET /v1/parsed-events/idl/{programId}
openapi: 3.0.3
info:
  title: Eventos Analisados
  version: 0.1.0
  description: >-
    Analise transações Solana e histórico de transações analisadas com Eventos
    Analisados.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/idl/{programId}:
    get:
      tags:
        - Eventos analisados
      summary: Listar versões de IDL
      description: >-
        Lista todas as versões de IDL que Eventos analisados tem para um
        programa, da mais antiga para a mais recente. Cada versão é identificada
        pelo slot em que se tornou ativa.
      operationId: listIdlVersionsParsedEvents
      parameters:
        - $ref: '#/components/parameters/ProgramId'
      responses:
        '200':
          description: >-
            As versões de IDL do programa, ordenadas por `slot` em ordem
            crescente.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IdlVersion'
              examples:
                default:
                  summary: Kamino Lend (as primeiras 3 de 43 versões)
                  value:
                    - slot: 182747476
                      sources:
                        - anchor
                    - slot: 205509752
                      sources:
                        - anchor
                    - slot: 206074074
                      sources:
                        - anchor
        '400':
          description: '`programId` não é um endereço válido.'
          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: >-
            O catálogo não tem uma IDL para o programa. Programas que Eventos
            analisados decodifica com decodificadores integrados, como SPL
            Token, retornam `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: Endereço do programa, codificado em base58.
      schema:
        type: string
        example: KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD
  schemas:
    IdlVersion:
      type: object
      description: Uma versão de IDL de um programa.
      required:
        - slot
        - sources
      properties:
        slot:
          type: integer
          format: uint64
          description: >-
            Slot em que esta versão de IDL se tornou ativa. Passe-o para Obter
            IDL a fim de buscar esta versão.
        sources:
          type: array
          description: >-
            Onde Eventos analisados encontrou esta versão. Os valores incluem
            `anchor`, `program_metadata` e `github`, e outros podem ser
            adicionados. Uma versão pode ter mais de uma fonte.
          items:
            type: string
    ErrorResponse:
      type: object
      description: Request-level error response.
      properties:
        error:
          type: string
          description: Error message.
  responses:
    Unauthorized:
      description: >-
        A chave de API está ausente ou é inválida. O corpo está em texto
        simples.
      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.