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

# describeProgram

> Liste os nomes de instruções decodificadas de um programa, eventos e papéis de conta para que você possa criar filtros do Parsed Streams que realmente correspondam.

A falha mais comum com uma API baseada em filtros é um filtro que é válido, mas não corresponde a nada, geralmente uma instrução ou nome de papel adivinhado. `describeProgram` evita isso retornando os nomes exatos com os quais o comparador faz a correspondência.

Fluxo recomendado: `describeProgram` para obter os nomes exatos de instrução e papel, construir o filtro com esses nomes, então [inscreva-se](/docs/pt-BR/api-reference/parsed-streams/parsedtransactionsubscribe). O guia [Acompanhar Trocas de Jupiter](/docs/pt-BR/parsed-streams/guides/track-jupiter-swaps) percorre isso do início ao fim.

## Corpo

<ParamField body="params" type="array" required>
  <Expandable title="Consulta" defaultOpen>
    <ParamField body="program" type="string" required>
      Um endereço de programa (base58) ou um nome de catálogo. **Prefira o endereço**: nomes podem ser ambíguos em versões de programa (mais de uma entrada de catálogo é nomeada `jupiter`, e uma busca por nome pode resolver para a mais antiga). Se você procurar por nome, verifique se `result.id` é o programa para o qual você pretende se inscrever.
    </ParamField>
  </Expandable>
</ParamField>

## Resposta

<ResponseField name="id" type="string">
  O endereço do programa (base58).
</ResponseField>

<ResponseField name="name" type="string">
  O nome do catálogo do programa.
</ResponseField>

<ResponseField name="instructions" type="string[]">
  Nomes de instruções decodificadas, exatamente como o comparador as compara. Use estes no campo de filtro `instructionNames`.
</ResponseField>

<ResponseField name="events" type="string[]">
  Nomes de eventos que o parser reconhece para este programa.
</ResponseField>

<ResponseField name="roles" type="string[]">
  Nomes de papéis de conta decodificados. Use estes como chaves no campo de filtro `accounts.roles` — eles correspondem exatamente, sem diferenciação de maiúsculas e minúsculas.
</ResponseField>

<RequestExample>
  ```json Request theme={"system"}
  { "jsonrpc": "2.0", "id": 1, "method": "describeProgram", "params": [{ "program": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" }] }
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={"system"}
  {
    "jsonrpc": "2.0", "id": 1,
    "result": {
      "id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
      "name": "jupiter",
      "instructions": ["route", "shared_accounts_route", "exact_out_route"],
      "events": ["SwapEvent"],
      "roles": ["user_transfer_authority", "destination_token_account"]
    }
  }
  ```
</ResponseExample>
