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

# Obtém o contrato de escrita de uma chave

> Retorna o contrato de escrita esperado para uma chave registrada do Systemplane: seu esquema JSON, regras de validação semântica, exemplos válidos, valor padrão e o caminho `PUT` correspondente. O esquema é metadado de contrato; o valor configurado atual é lido a partir de `GET /system/{namespace}/{key}`. Quando a autenticação está ativada, este endpoint de descoberta exige permissão de leitura para pelo menos um namespace do Systemplane.



## OpenAPI

````yaml pt/openapi/v3-current/systemplane.yaml get /system/-/catalog/{namespace}/{key}
openapi: 3.1.0
info:
  title: Lerian Systemplane Admin 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 de administração do Systemplane é o plano de controle de configuração
    em tempo de execução compartilhado que as aplicações Lerian expõem para que
    você inspecione e altere configurações operacionais em um serviço em
    execução — sem reiniciar. Em ambientes financeiros regulados, derrubar um
    serviço para aplicar uma mudança de configuração é ao mesmo tempo um risco
    de conformidade e uma interrupção operacional; o Systemplane permite que
    você ajuste os valores que um serviço suporta com segurança enquanto ele
    continua atendendo ao tráfego.


    Esta superfície não é um serviço autônomo. Cada aplicação monta o mesmo
    conjunto de rotas em seu próprio host e porta HTTP sob um prefixo de caminho
    específico da aplicação — não há host nem porta dedicados ao Systemplane. O
    prefixo canônico documentado aqui é `/system`, mas ele varia por aplicação
    (por exemplo, o Lender o monta sob `/api/v1/systemplane` e os trilhos SFN
    sob `/v1/system`). Substitua o host, a porta e o prefixo da aplicação cuja
    configuração você está gerenciando. Como as rotas são registradas
    programaticamente em vez de emitidas por um gerador de código, elas não
    aparecem na referência de API gerada de cada produto — esta especificação
    documenta a superfície manualmente.


    A configuração é organizada em **namespaces**, cada um contendo entradas
    planas com chaves em string. Trilhos e plugins usam três namespaces
    canônicos — `runtime_config` (botões operacionais como limites de taxa e
    intervalos de workers), `tenant_policy` (objetos de política com escopo de
    tenant) e `operational_registry` (dados de consulta operacional). Algumas
    aplicações registram um único namespace com o nome da aplicação em vez
    disso. O valor de cada entrada é sem tipo na camada de transporte: cada
    chave registrada aceita seu próprio escalar, objeto ou array JSON, validado
    pelo validador do lado do servidor daquela chave.


    A autorização é **negar tudo por padrão**. Quando a autenticação está
    ativada, uma aplicação aplica controle de acesso baseado em papéis por
    namespace: as leituras exigem a permissão de leitura do namespace
    (`system_runtime_config:read`, `system_tenant_policy:read` ou
    `system_operational_registry:read`) e as escritas exigem a permissão de
    escrita correspondente (`system_runtime_config:write`,
    `system_tenant_policy:write` ou `system_operational_registry:write`). As
    strings exatas de permissão podem variar por aplicação. Toda a superfície é
    controlada pela configuração `SYSTEMPLANE_ENABLED`, que fica desativada por
    padrão; quando ela está desativada, a aplicação roda em modo somente
    variáveis de ambiente e essas rotas não são atendidas.


    Uma superfície de catálogo opcional sob o caminho reservado `/-/catalog`
    permite que você descubra quais chaves uma aplicação registra, junto com o
    contrato de escrita de cada chave (tipo, escopo de tenant, política de
    redação, regras de validação e exemplos). Os erros usam um envelope plano
    `{"code": <int>, "title": "<string>", "message": "<string>"}`. As operações
    de mutação retornam `204 No Content` em caso de sucesso.
servers:
  - url: https://{host}
    description: >-
      The Systemplane admin API is served by each Lerian application on its own
      host and port under an application-specific prefix (default `/system`).
      Substitute the host of the application whose runtime configuration you are
      managing.
    variables:
      host:
        default: your-lerian-app.example.com
        description: >-
          The host (and port) of the application that mounts the Systemplane
          admin API.
security:
  - BearerAuth: []
tags:
  - name: Entries
    description: >-
      Lista, lê, grava e exclui as entradas de configuração gerenciadas em tempo
      de execução em um namespace.
  - name: Catalog
    description: >-
      Descubra as chaves que uma aplicação registra e o contrato de escrita
      esperado de cada chave. Opcional por aplicação.
paths:
  /system/-/catalog/{namespace}/{key}:
    get:
      tags:
        - Catalog
      summary: Obtém o contrato de escrita de uma chave
      description: >-
        Retorna o contrato de escrita esperado para uma chave registrada do
        Systemplane: seu esquema JSON, regras de validação semântica, exemplos
        válidos, valor padrão e o caminho `PUT` correspondente. O esquema é
        metadado de contrato; o valor configurado atual é lido a partir de `GET
        /system/{namespace}/{key}`. Quando a autenticação está ativada, este
        endpoint de descoberta exige permissão de leitura para pelo menos um
        namespace do Systemplane.
      operationId: getSystemplaneCatalogKey
      parameters:
        - $ref: '#/components/parameters/Namespace'
        - $ref: '#/components/parameters/Key'
      responses:
        '200':
          description: The key's write contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogDetailResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - BearerAuth: []
components:
  parameters:
    Namespace:
      name: namespace
      in: path
      required: true
      description: >-
        The Systemplane namespace. Rails and plugins use `runtime_config`,
        `tenant_policy`, or `operational_registry`; some applications register a
        single application-named namespace instead.
      schema:
        type: string
        examples:
          - runtime_config
    Key:
      name: key
      in: path
      required: true
      description: >-
        The registered key within the namespace. Keys are flat, dot-delimited
        identifiers; a key may itself contain `/` segments.
      schema:
        type: string
        examples:
          - tenancy.ispb_organization_bindings
  schemas:
    CatalogDetailResponse:
      type: object
      additionalProperties: false
      description: The full write contract for one registered key.
      properties:
        catalogVersion:
          type: string
          description: The catalog schema version.
          examples:
            - systemplane.catalog.v1
        service:
          type: string
          description: The application that serves this catalog.
          examples:
            - matcher
        namespace:
          type: string
          description: The namespace the key belongs to.
          examples:
            - tenant_policy
        key:
          type: string
          description: The registered key.
          examples:
            - tenancy.ispb_organization_bindings
        kind:
          type: string
          description: The value kind the key accepts.
          examples:
            - object
        tenantScoped:
          type: boolean
          description: Whether the key's value is resolved per tenant.
          examples:
            - false
        runtimeClass:
          type: string
          description: When a change takes effect.
          examples:
            - read_live
        redaction:
          type: string
          description: The redaction policy applied to the value on read.
          examples:
            - mask
        hasValidator:
          type: boolean
          description: Whether the key has a server-side write validator.
          examples:
            - true
        description:
          type: string
          description: A human-readable description of the key.
          examples:
            - Tenant-scoped JSON object keyed by ISPB
        detailUrl:
          type: string
          description: The relative URL of this detail resource.
          examples:
            - /system/-/catalog/tenant_policy/tenancy.ispb_organization_bindings
        defaultValue:
          description: The key's default value. Untyped — matches the key's kind.
        schema:
          type: object
          additionalProperties: true
          description: The JSON schema the value is validated against.
        rules:
          type: array
          description: >-
            Human-readable semantic validation rules beyond the JSON schema.
            Omitted when there are none.
          items:
            type: string
          examples:
            - - Each ISPB must be an 8-digit string.
        examples:
          type: array
          description: Valid example values for the key. Omitted when there are none.
          maxItems: 10
          items:
            $ref: '#/components/schemas/CatalogExample'
        write:
          $ref: '#/components/schemas/CatalogWrite'
      required:
        - catalogVersion
        - service
        - namespace
        - key
        - kind
        - tenantScoped
        - runtimeClass
        - redaction
        - hasValidator
        - description
        - detailUrl
        - schema
        - write
    CatalogExample:
      type: object
      additionalProperties: false
      description: A named example value valid for the key.
      properties:
        name:
          type: string
          description: A short label for the example.
          examples:
            - single ISPB binding
        value:
          description: The example value.
      required:
        - name
    CatalogWrite:
      type: object
      additionalProperties: false
      description: The write descriptor for a key — the request you send to change it.
      properties:
        method:
          type: string
          description: The HTTP method used to write the key.
          examples:
            - PUT
        path:
          type: string
          description: The relative path the write is sent to.
          examples:
            - /system/tenant_policy/tenancy.ispb_organization_bindings
        bodyShape:
          type: object
          additionalProperties: true
          description: 'The request-body shape, always `{"value": <json>}`.'
          examples:
            - value: {}
      required:
        - method
        - path
        - bodyShape
    ErrorResponse:
      type: object
      additionalProperties: false
      description: >-
        The flat error envelope returned across the Systemplane admin surface.
        It carries a machine-readable HTTP status code, a short title, and a
        human-readable message; it never returns secret material.
      properties:
        code:
          type: integer
          description: The HTTP status code.
          examples:
            - 403
        title:
          type: string
          description: A short, machine-readable title for the error class.
          examples:
            - forbidden
        message:
          type: string
          description: A human-readable description of what went wrong.
          examples:
            - 'systemplane admin: insufficient permissions: permission denied'
      required:
        - code
        - title
        - message
  responses:
    BadRequest:
      description: >-
        The request is caller-correctable — an unknown key, a missing or invalid
        `value`, a value that fails the key's validator, or a request that is
        not valid for the current tenancy mode.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: >-
        Authentication failed, or there is no trusted platform identity on the
        request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: >-
        The authorizer denied the request — the identity lacks the namespace
        permission required for this action, or the surface is deny-all because
        no authorizer is configured.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The namespace or key does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: An internal fault. Detail is logged, not returned.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ServiceUnavailable:
      description: >-
        The Systemplane store is not started or has been closed — the
        application is not currently able to serve the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        A bearer JWT issued by the platform's Access Manager (plugin-auth /
        lib-auth). Authorization is deny-all by default: the application must be
        configured with an authorizer, and when authentication is enabled it
        enforces per-namespace role-based access control on top of a valid,
        platform-scoped (non-tenant) identity. Machine callers obtain a token
        via the Access Manager client-credentials flow.

````