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

# Listar assinaturas

> Lista as assinaturas ativas do tenant autenticado, das mais recentes para as mais antigas, com paginação por keyset. Nenhuma projeção de leitura jamais transporta o segredo de assinatura.



## OpenAPI

````yaml pt/openapi/v3-current/streaming-hub.yaml get /v1/subscriptions
openapi: 3.1.0
info:
  title: Lerian Streaming Hub API
  version: v1.0.0
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  license:
    name: Lerian Studio General License
  description: >-
    A API do plano de controle do Streaming Hub. O Streaming Hub é a borda
    gerenciada de entrega de eventos da Lerian: ele consome CloudEvents do
    backbone de streaming interno da plataforma e faz o fan-out para os destinos
    externos do próprio tenant — webhooks, Amazon SQS, RabbitMQ, Amazon
    EventBridge ou uma caixa de entrada pull. Esta API permite que um tenant
    navegue pelo catálogo de eventos alimentado por manifesto, crie e gerencie
    assinaturas de entrega, verifique e rotacione suas credenciais, consulte a
    saúde da entrega e puxe (pull) os eventos aos quais tem direito.


    Os erros usam um envelope plano `{"error":"<token>"}` (um token de baixa
    cardinalidade, legível por máquina — nunca problem+json do RFC 9457). As
    operações de mutação exigem um cabeçalho `X-Idempotency` para semântica de
    no-máximo-uma-vez (at-most-once); uma requisição repetida (replay) retorna a
    resposta original byte a byte com `X-Idempotency-Replayed: true`. O catálogo
    e a superfície de eventos por pull têm escopo de tenant através do JWT
    bearer; os endpoints operacionais de sondagem (`/healthz`, `/readyz`,
    `/version`, `/runtime`, `/metrics`) não exigem autenticação. O Streaming Hub
    é closed source sob a Lerian Studio General License.
servers:
  - url: https://streaming-hub.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - name: Catalog
    description: >-
      Navegue pelo catálogo de tipos de evento disponíveis para assinatura,
      alimentado por manifesto.
  - name: Subscriptions
    description: >-
      Crie, leia, atualize e exclua assinaturas de entrega e conduza o ciclo de
      vida de verificação do destino (ping, verify, credential, delegated grant,
      rotação de segredo, saúde).
  - name: Event Delivery
    description: >-
      Puxe (pull) os eventos aos quais uma assinatura de sink pull tem direito
      (leitura com cursor-como-confirmação).
  - name: Admin
    description: >-
      Análise forense de operador entre tenants (cross-tenant). Exige um escopo
      de autorização de operador.
  - name: Operational
    description: >-
      Sondagens não autenticadas de liveness, readiness, build, runtime e
      métricas.
paths:
  /v1/subscriptions:
    get:
      tags:
        - Subscriptions
      summary: Listar assinaturas
      description: >-
        Lista as assinaturas ativas do tenant autenticado, das mais recentes
        para as mais antigas, com paginação por keyset. Nenhuma projeção de
        leitura jamais transporta o segredo de assinatura.
      operationId: listSubscriptions
      parameters:
        - name: sink_kind
          in: query
          required: false
          description: Optional filter restricting results to one sink kind.
          schema:
            $ref: '#/components/schemas/SinkKind'
        - name: limit
          in: query
          required: false
          description: >-
            Page size, clamped to a server maximum. A non-positive value uses
            the server default.
          schema:
            type: integer
        - name: after
          in: query
          required: false
          description: >-
            Keyset cursor — the `id` of the last row from the previous page
            (subscriptions are ordered DESC by id).
          schema:
            type: string
      responses:
        '200':
          description: Uma página de assinaturas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListSubscriptionsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - BearerAuth: []
components:
  schemas:
    SinkKind:
      type: string
      description: >-
        The delivery destination kind. `webhook` posts signed HTTPS requests;
        `pull` exposes an inbox read over `GET /v1/events`; `sqs`, `rabbitmq`,
        and `eventbridge` fan out to the named queue or bus.
      enum:
        - webhook
        - pull
        - sqs
        - rabbitmq
        - eventbridge
    ListSubscriptionsResponse:
      type: object
      additionalProperties: false
      properties:
        subscriptions:
          type: array
          items:
            $ref: '#/components/schemas/Subscription'
        next_cursor:
          type: string
          description: >-
            Keyset cursor for the next page (the id of the last row). Non-empty
            only on a full page; an empty string marks the final page.
          examples:
            - 0192f1a0-0000-7000-8000-00000000c002
      required:
        - subscriptions
        - next_cursor
    Subscription:
      type: object
      additionalProperties: false
      description: >-
        The non-secret projection of a subscription. It never carries the
        signing secret or any credential material.
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier of the subscription (UUIDv7).
          examples:
            - 0192f1a0-0000-7000-8000-00000000c001
        name:
          type: string
          description: The human label supplied at create.
          examples:
            - orders-webhook
        sink_kind:
          $ref: '#/components/schemas/SinkKind'
        endpoint:
          type: string
          description: The destination address (per sink kind).
          examples:
            - https://hooks.example.com/ingest
        event_types:
          type: array
          description: >-
            The event types the subscription delivers. Omitted when none are
            pinned.
          items:
            type: string
          examples:
            - - account.created
              - account.updated
        schema_major:
          type: integer
          description: >-
            The pinned schema major, when set. Omitted when the subscription
            follows the base topic.
          examples:
            - 2
        signature_version:
          type: integer
          description: The webhook signature scheme version.
          examples:
            - 1
        plan_tier:
          type: string
          description: The subscription's plan tier.
          examples:
            - standard
        enabled:
          type: boolean
          description: >-
            The operator on/off flag. Independent of `verification_state`; both
            must hold for delivery.
          examples:
            - true
        verification_state:
          $ref: '#/components/schemas/VerificationState'
        created_at:
          type: string
          format: date-time
          description: Creation timestamp (UTC, RFC 3339).
          examples:
            - '2026-01-15T12:00:00Z'
        updated_at:
          type: string
          format: date-time
          description: Last-update timestamp (UTC, RFC 3339).
          examples:
            - '2026-01-15T12:00:00Z'
      required:
        - id
        - name
        - sink_kind
        - endpoint
        - signature_version
        - plan_tier
        - enabled
        - verification_state
        - created_at
        - updated_at
    Error:
      type: object
      additionalProperties: false
      description: >-
        The flat error envelope used across the `/v1` and `/admin` surfaces. It
        carries a single low-cardinality, machine-readable token and never leaks
        secret material or internal detail. (A `403` from the authorization
        decision point is the one exception — its body is plain text.)
      properties:
        error:
          type: string
          description: The machine-readable error token.
          examples:
            - not_found
      required:
        - error
    VerificationState:
      type: string
      description: >-
        The subscription's position in the destination verification state
        machine. Only an `active` subscription is deliverable. A `webhook` sub
        is born `active`; a queue sub is born `pending_verification` and reaches
        `active` on a successful credential probe. `degraded` and `disabled`
        signal an impaired or auto-disabled destination that a successful
        `verify` returns to `active`.
      enum:
        - pending_verification
        - active
        - degraded
        - disabled
  responses:
    Unauthorized:
      description: >-
        A autenticação falhou, ou não há contexto de tenant confiável. `error` é
        `unauthorized` (corpo uniforme — nenhuma razão é revelada).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: >-
        O ponto de decisão de autorização (authorization decision point) negou a
        requisição. O corpo é texto puro (não o envelope de erro JSON).
      content:
        text/plain:
          schema:
            type: string
    InternalError:
      description: >-
        Uma falha de infraestrutura. `error` é `internal_error` (sanitizado; o
        detalhe é logado, nunca retornado).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Um JWT bearer emitido pelo plugin-auth (lib-auth). A identidade do
        tenant é resolvida a partir das claims validadas do token; a superfície
        `/v1` nunca lê um tenant do corpo, do path ou da query. Chamadores de
        máquina obtêm um token via o fluxo client-credentials do plugin-auth. A
        superfície `/admin` autoriza contra um escopo de operador e não carrega
        contexto de tenant.

````