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

# Get the active methodology version



## OpenAPI

````yaml https://api.pegana.xyz/openapi.json get /v1/methodology/current
openapi: 3.1.0
info:
  title: Pegana API
  description: >-
    The peg-risk oracle for Solana. Read real-time peg state, history, alerts,
    and delivery health across the live mainnet asset universe spanning 6
    classes — LSTs, fiat / CDP / delta-neutral / yield-bearing / FX stables, and
    a leveraged synthetic. Some assets are flagged `monitoring_only` (beta):
    their alerts are live but the calibration is provisional. Public read
    endpoints require no API key but ARE rate-limited per IP (300/min global,
    10/min on /v1/audit.csv); exceeding the limit returns 429 with a Retry-After
    header. User-scoped /v1/me/* routes require a JWT obtained via Telegram
    Login. Every state transition emits a public receipt at /v1/audit/{id} with
    the methodology version, frozen inputs, and an on-chain SPL Memo commit (SAS
    deferred per ADR-0004 — SPL Memo gives 90% of the value). EVERY error
    response across the API is JSON — the envelope is `{error, message, asset?}`
    (the `ApiError` schema); branch on the stable `error` code, never on
    `message`. Malformed request bodies surface as `{error:"invalid_body"}`. Any
    endpoint may also return 500 `{error:"internal"}` on an unexpected server
    error. Value conventions: monetary and ratio amounts are exact decimal
    STRINGS (parse with a decimal library, never a float) with trailing zeros
    trimmed; USD aggregate fields (e.g. `market_cap`, `loop_exposure_usd`,
    `liquidatable_usd`) are rounded to the cent while price/discount signal
    fields keep full precision. All timestamps are RFC3339 UTC with millisecond
    precision and a `Z` suffix (`2026-07-24T15:33:14.545Z`). Every response
    carries an `x-request-id` header (quote it when reporting an issue) and the
    rate-limit budget as `RateLimit-Limit` / `RateLimit-Remaining` /
    `RateLimit-Reset` (mirrored as `X-RateLimit-*`); a 429 also sets
    `Retry-After`.
  contact:
    name: Rafael Souza
    email: rafael@pegana.xyz
  license:
    name: MIT
    identifier: MIT
  version: 1.0.0
servers:
  - url: https://api.pegana.xyz
    description: Production
security: []
tags:
  - name: Health
    description: Liveness and readiness probes
  - name: Assets
    description: Public read access to asset state, history, and metadata
  - name: Alerts
    description: Global feed of state transitions
  - name: Stats
    description: Aggregate counters and delivery health
  - name: Auth
    description: Telegram Login Widget → JWT
  - name: Me
    description: Authenticated user profile and preferences
  - name: Subscriptions
    description: User alert subscriptions
  - name: Webhooks
    description: User-managed Ed25519-signed webhooks
  - name: WebSocket
    description: Live state stream
  - name: audit
    description: >-
      Public receipts for alerts — methodology version, inputs frozen, replay
      bundles. All endpoints public, no auth, cacheable. ADR-0006 four-state
      response on /v1/audit/:id (200/202/404/410); ADR-0014 bounds (90-day max,
      100-row max, 50k-row cap).
  - name: methodology
    description: >-
      Public lifecycle status of the active methodology — version + status
      (active/deprecated/broken) + optional fix_url when broken. Consumed by
      web/app/api/methodology to power the home-page trust strip.
  - name: peg
    description: >-
      Peg-signal feed for tokens.xyz / aggregator consumption — a `data` array
      of per-asset signals (each carries its own `mint`). Public, no auth,
      cacheable. Honest beta status via `calibration` + `monitoring_only`;
      freshness via `updated_at` + `stale`.
paths:
  /v1/methodology/current:
    get:
      tags:
        - methodology
      summary: Get the active methodology version
      operationId: current
      responses:
        '200':
          description: Current methodology version + lifecycle status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodologyCurrentResponse'
        '500':
          description: Database error
components:
  schemas:
    MethodologyCurrentResponse:
      type: object
      description: >-
        Public methodology lifecycle pointer.


        `version`, `status`, and `fix_url` are the original (v1) shape — every

        current consumer (web/app/api/methodology/route.ts type-checks only

        `version`+`status`) is forward-compatible with the additive fields
        below.
      required:
        - version
        - status
      properties:
        fix_url:
          type:
            - string
            - 'null'
          description: |-
            Only populated when status = `broken`. Points at the `#lifecycle`
            section of /methodology, which renders the broken-version banner.
        git_tag:
          type:
            - string
            - 'null'
          description: >-
            Immutable git release tag, e.g. `methodology-v0.1.0`. Always present

            when the version table is populated; omitted only on an un-migrated
            DB.
        released_at:
          type:
            - string
            - 'null'
          description: >-
            RFC3339 timestamp this version was released. The honest analogue of
            the

            often-requested "adopted_at" — there is no separate adoption column;

            release == adoption in this lifecycle (ADR-0003).
        status:
          type: string
          description: |-
            Lifecycle status from `methodology_versions.status` enum:
            `active | deprecated | broken`.
        status_reason:
          type:
            - string
            - 'null'
          description: >-
            Operator note attached to a `deprecated`/`broken` transition, if
            any.
        superseded_by:
          type:
            - string
            - 'null'
          description: Set when this version has been superseded by a newer one.
        version:
          type: string
          description: Semver version of the currently-active methodology crate.

````