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

# Rotar certificado ICP-Brasil

> Prerrequisito: este es el primer paso de la cadena de onboarding (certificado → disponibilidad → prueba-de-conectividad → envío); rota el certificado antes de activarlo (ver activateCertificate), verificar la disponibilidad (ver getReadiness) o enviar cualquier operación. Realiza una recarga en caliente, con emisión de evidencia, del par de certificados ICP-Brasil/RSFN. El nuevo certificado ya debe existir en disco bajo la ruta base configurada; este endpoint solo intercambia el puntero en memoria y emite un registro de auditoría. Idempotente: reenviar la misma clave X-Idempotency con el mismo cuerpo devuelve la respuesta en caché. La respuesta NUNCA incluye la ruta de la clave privada ni el material de claves.



## OpenAPI

````yaml es/openapi/v3-current/spb.yaml post /v1/str/certificates/rotate
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    Interfaz OpenAPI 3.1 de Lerian SPB, la integración directa entre la
    institución y el Sistema de Pagos Brasileño (SPB) sobre la Red del Sistema
    Financiero Nacional (RSFN). Cubre el Sistema de Transferencia de Reservas
    (STR): registro de mensajes y catálogo de capacidades, ciclo de vida de las
    operaciones (transferencias bancarias, repasses IBS, transferencias de
    liquidez, devoluciones y cancelaciones), consultas de cuenta de reservas y
    de horarios, gobernanza de alçada, conciliación y entrega de eventos.
  license:
    name: Lerian Studio General License
  title: Lerian SPB API
  version: 1.0.0
servers:
  - url: https://spb.sandbox.lerian.net
security: []
tags:
  - description: >-
      Rastros inmutables de registros de auditoría para operaciones STR y
      eventos de ciclo de vida.
    name: Audit
  - description: >-
      Catálogo de capacidades STR que describe los tipos de mensaje admitidos y
      sus restricciones.
    name: Capabilities
  - description: >-
      Inventario de certificados ICP-Brasil con rotación y activación
      recargables en caliente.
    name: Certificates
  - description: >-
      Cola de aprobación maker-checker para emisiones retenidas por encima de su
      banda de alçada: listar pendientes, firmar (aprobar) y denegar.
    name: EmissionApprovals
  - description: >-
      Registros de entrega de eventos por webhook con control de reintentos para
      despachos fallidos.
    name: EventDeliveries
  - description: >-
      Catálogo de eventos de operación que enumera los tipos de evento de
      dominio emitidos.
    name: Events
  - description: >-
      Registro de avisos entrantes de la familia GEN (GEN0001 eco de
      conectividad, GEN0004 error de transmisión, GEN0005 aviso administrativo).
    name: GenNotices
  - description: >-
      Gobernanza de alçada del SPB: la tabla de bandas de valor y los requisitos
      de firma por tipo de mensaje, recargados en caliente en tiempo de
      ejecución.
    name: Governance
  - description: >-
      Estado crudo de los mensajes STR: listar los mensajes y leer un mensaje
      individual por NUOp.
    name: Messages
  - description: Resúmenes y métricas operativas agregadas de las operaciones STR.
    name: OperationalIntelligence
  - description: >-
      Ciclo de vida de las operaciones STR para transferencias bancarias y
      repasses IBS, incluyendo devoluciones y cancelaciones.
    name: Operations
  - description: >-
      Estado de disponibilidad del servicio que abarca las autopruebas de
      arranque y la salud de las dependencias.
    name: Readiness
  - description: >-
      Casos de conciliación y las acciones que resuelven las discrepancias de
      operación.
    name: Reconciliation
  - description: >-
      Suite de reportes STR: reportes agregados síncronos por rango de fechas
      (movimiento financiero, transacciones rechazadas, volumetria) sobre el
      propio registro de transmisión de Lerian SPB.
    name: Reports
  - description: >-
      Consultas de saldo de cuenta de reservas STR0013 y de extrato STR0014
      (modo mensaje) y sus resultados asíncronos.
    name: ReserveQueries
  - description: >-
      Lista de responsáveis del participante GEN0019: actualizaciones de
      reemplazo total anunciadas a BACEN.
    name: Responsibles
  - description: >-
      Programación de ventanas de operación del STR que rige cuándo pueden
      enviarse las operaciones.
    name: Schedule
  - description: >-
      Consultas de horarios STR0001 de parte única (consulta de horários do STR)
      y sus resultados de grilla STR0001R1 asíncronos.
    name: ScheduleQueries
  - description: >-
      Ajustes de configuración del SPB en tiempo de ejecución para la
      integración STR.
    name: Settings
  - description: Registro y gestión de endpoints de webhook para la entrega de eventos.
    name: Webhooks
  - description: >-
      Flujo (orden obligatorio): certificado → disponibilidad →
      prueba-de-conectividad → envío. Activa un certificado, confirma que el
      rail reporta listo, pasa una prueba de conectividad y luego envía una
      operación. Cada paso es su propio recurso; no debes intentar un envío
      antes de que la disponibilidad pase.
    name: onboarding
  - description: >-
      Flujo (orden obligatorio): operación padre SETTLED →
      devolución/cancelación. Una devolución o cancelación es un sub-recurso de
      una operación padre liquidada; el segmento de ruta
      {operationId}/{endToEndID} impone el padre estructuralmente.
    name: lifecycle
paths:
  /v1/str/certificates/rotate:
    post:
      tags:
        - Certificates
        - onboarding
      summary: Rotar certificado ICP-Brasil
      description: >-
        Prerrequisito: este es el primer paso de la cadena de onboarding
        (certificado → disponibilidad → prueba-de-conectividad → envío); rota el
        certificado antes de activarlo (ver activateCertificate), verificar la
        disponibilidad (ver getReadiness) o enviar cualquier operación. Realiza
        una recarga en caliente, con emisión de evidencia, del par de
        certificados ICP-Brasil/RSFN. El nuevo certificado ya debe existir en
        disco bajo la ruta base configurada; este endpoint solo intercambia el
        puntero en memoria y emite un registro de auditoría. Idempotente:
        reenviar la misma clave X-Idempotency con el mismo cuerpo devuelve la
        respuesta en caché. La respuesta NUNCA incluye la ruta de la clave
        privada ni el material de claves.
      operationId: rotateCertificate
      parameters:
        - description: Idempotency key (primary).
          in: header
          name: X-Idempotency
          schema:
            description: Idempotency key (primary).
            type: string
        - description: Idempotency key (legacy alias for X-Idempotency).
          in: header
          name: X-Idempotency-Key
          schema:
            description: Idempotency key (legacy alias for X-Idempotency).
            type: string
        - description: Idempotency key TTL in seconds (overrides the configured default).
          in: header
          name: X-TTL
          schema:
            description: Idempotency key TTL in seconds (overrides the configured default).
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RotateCertificateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RotateCertificateResponseWire'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    RotateCertificateRequest:
      additionalProperties: false
      properties:
        certificateRef:
          description: >-
            Operator-supplied reference to the new certificate material
            (filesystem path or secrets-manager URI), validated against the
            configured cert directory before any read.
          examples:
            - /etc/lerian/certs/2026-q2/icp-brasil.crt
          maxLength: 2048
          minLength: 1
          type: string
        privateKeyRef:
          description: >-
            Operator-supplied reference to the new private-key material
            (filesystem path or secrets-manager URI), validated against the
            configured cert directory before any read.
          examples:
            - /etc/lerian/certs/2026-q2/icp-brasil.key
          maxLength: 2048
          minLength: 1
          type: string
        reason:
          description: >-
            Optional operator rationale recorded in the audit evidence (max 512
            chars).
          examples:
            - Quarterly rotation per ICP-Brasil policy
          maxLength: 512
          type: string
      required:
        - certificateRef
        - privateKeyRef
      type: object
    RotateCertificateResponseWire:
      additionalProperties: false
      properties:
        auditId:
          description: UUID of the audit record written for this rotation.
          examples:
            - a1b2c3d4-e5f6-7890-abcd-ef1234567890
          format: uuid
          type: string
        certificate:
          $ref: '#/components/schemas/CertificateStatusWire'
          description: State of the certificate after the rotation hot-reload.
        correlationId:
          description: >-
            Request-scoped correlation identifier echoing X-Request-ID, for
            pivoting from response to trace.
          examples:
            - req-7a3f9c2e
          type: string
        readiness:
          $ref: '#/components/schemas/ReadinessSummary'
          description: >-
            Optional post-rotation readiness summary; omitted when readiness
            lookup is unavailable.
      required:
        - certificate
        - auditId
        - correlationId
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          examples:
            - ERR-0001
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    CertificateStatusWire:
      additionalProperties: false
      properties:
        certificateId:
          description: Certificate-state row UUID.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          format: uuid
          type: string
        daysUntilExpiry:
          description: Whole days remaining until expiry; null when expiry is unknown.
          examples:
            - 45
          format: int64
          type: integer
        expiresAt:
          description: RFC3339 UTC expiry timestamp; null when unknown.
          examples:
            - '2027-05-04T18:30:00Z'
          format: date-time
          type: string
        purpose:
          description: >-
            Role this certificate serves: OUTBOUND_SIGNING (signs submissions),
            INBOUND_PROCESS, BACEN_VERIFICATION, or EXTERNAL_RAIL.
          examples:
            - OUTBOUND_SIGNING
          type: string
        readinessImpact:
          description: >-
            Effect of this certificate's state on service readiness: NONE,
            WARNING, or BLOCKER.
          examples:
            - NONE
          type: string
        status:
          description: >-
            Current validity state: VALID, EXPIRING (within the warning window),
            EXPIRED, INVALID, or MISSING.
          examples:
            - VALID
          type: string
        updatedAt:
          description: RFC3339 UTC timestamp of the last certificate-state update.
          examples:
            - '2026-05-04T18:30:00Z'
          format: date-time
          type: string
      required:
        - certificateId
        - purpose
        - status
        - readinessImpact
        - updatedAt
      type: object
    ReadinessSummary:
      additionalProperties: false
      properties:
        blockers:
          description: >-
            Messages for conditions that block readiness; empty when there are
            none.
          examples:
            - - 'redis: connection refused'
          items:
            type: string
          type:
            - array
            - 'null'
        status:
          description: Aggregate readiness status.
          examples:
            - READY
          type: string
        warnings:
          description: >-
            Messages for non-blocking conditions that need attention; empty when
            there are none.
          examples:
            - - certificate expires in 12 days
          items:
            type: string
          type:
            - array
            - 'null'
      required:
        - status
        - blockers
        - warnings
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````