{
  "info": {
    "name": "Trinity Insights API",
    "description": "Atemporal Postman collection generated from the live Trinity Insights OpenAPI specification.\n\nVariables :\n  - baseUrl : the API root URL (https://api.trinityinsights.io by default)\n  - apiKey  : your Trinity Insights API key (Profile → API keys in the dashboard)\n\nAuthentication is sent as the X-API-Key header on every request requiring auth.\nMiCA + AMF compliance : Trinity Insights is not a registered CASP under EU MiCA Regulation 2023/1114. Data returned is informational and analytical only.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://api.trinityinsights.io",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "",
      "type": "secret"
    },
    {
      "key": "date",
      "value": "YYYY-MM-DD",
      "type": "string"
    },
    {
      "key": "dateTime",
      "value": "YYYY-MM-DDTHH:MM:SSZ",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "alerts",
      "description": "Trinity Insights REST API — endpoints under the alerts tag.",
      "item": [
        {
          "name": "DELETE /api/v1/alerts/{alert_id} — Delete Alert",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/:alert_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                ":alert_id"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Delete an alert. Only the owner can delete."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts — List Alerts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts"
              ]
            },
            "description": "List all alerts for the authenticated user."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/stream — Stream Alerts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/stream?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "stream"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "SSE endpoint for real-time alert notifications.\n\nClients connect here to receive triggered alerts in real-time.\nRequires authentication (Clerk JWT via header or ?token= query param).\n\nEvents:\n  - event: connected  — sent on initial connection (with conn_id)\n  - event: alert      — triggered alert payload\n  - : heartbeat       — keepalive comment every 30s\n\nQuery params:\n    token: JWT token (required if using EventSource which cannot set headers)"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/stream/status — Stream Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/stream/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "stream",
                "status"
              ]
            },
            "description": "Return SSE connection manager stats (admin diagnostic)."
          },
          "response": []
        },
        {
          "name": "PATCH /api/v1/alerts/{alert_id} — Update Alert",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/:alert_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                ":alert_id"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Update an existing alert (toggle, change threshold).",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts — Create Alert",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts"
              ]
            },
            "description": "Create a new metric alert. Enforces tier-based limits.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "alerts-v2",
      "description": "Trinity Insights REST API — endpoints under the alerts-v2 tag.",
      "item": [
        {
          "name": "DELETE /api/v1/alerts/v2/{alert_id} — Delete Alert",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Delete an alert."
          },
          "response": []
        },
        {
          "name": "DELETE /api/v1/alerts/v2/channels/{channel_type} — Delete Channel",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/:channel_type",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                ":channel_type"
              ],
              "variable": [
                {
                  "key": "channel_type",
                  "value": "value"
                }
              ]
            },
            "description": "Remove a notification channel."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2 — List Alerts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "List all V2 alerts for the authenticated user."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/{alert_id} — Get Alert",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get a single alert by ID."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/{alert_id}/history — Get Alert History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id/history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id",
                "history"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50",
                  "disabled": true
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get trigger history for an alert."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/channels — List Channels",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels"
              ]
            },
            "description": "List configured notification channels for the user."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/digest — Get Digest Preferences",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/digest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "digest"
              ]
            },
            "description": "Get digest preferences."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/metrics — List Alertable Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/metrics?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "metrics"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "Return all alertable metrics from all 4 sources. Auto-discovery."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/metrics/{category}/{key}/thresholds — Get Metric Thresholds",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/metrics/:category/:key/thresholds",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "metrics",
                ":category",
                ":key",
                "thresholds"
              ],
              "variable": [
                {
                  "key": "category",
                  "value": "value"
                },
                {
                  "key": "key",
                  "value": "value"
                }
              ]
            },
            "description": "Return statistical percentiles for a metric to help set alert thresholds.\n\nUses ORM models to avoid raw SQL interpolation (Snyk CWE-89 safe).\nReturns p5/p25/p50/p75/p95 percentiles plus the last time the median was crossed."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/alerts/v2/templates — List Templates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/templates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "templates"
              ]
            },
            "description": "Return available alert preset templates."
          },
          "response": []
        },
        {
          "name": "PATCH /api/v1/alerts/v2/{alert_id} — Update Alert",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Update an existing alert.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2 — Create Alert",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2"
              ]
            },
            "description": "Create a new V2 alert with validation.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/{alert_id}/snooze — Snooze Alert",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id/snooze",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id",
                "snooze"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Snooze an alert for X hours.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/{alert_id}/test — Test Alert",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id/test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id",
                "test"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Send a test notification on all configured channels."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/{alert_id}/unsnooze — Unsnooze Alert",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/:alert_id/unsnooze",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                ":alert_id",
                "unsnooze"
              ],
              "variable": [
                {
                  "key": "alert_id",
                  "value": "value"
                }
              ]
            },
            "description": "Unsnooze an alert."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/{channel_type}/test — Test Channel",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/:channel_type/test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                ":channel_type",
                "test"
              ],
              "variable": [
                {
                  "key": "channel_type",
                  "value": "value"
                }
              ]
            },
            "description": "Send a test message to a specific channel."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/discord — Save Discord Webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/discord",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                "discord"
              ]
            },
            "description": "Save Discord webhook URL.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/push — Save Push Subscription",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/push",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                "push"
              ]
            },
            "description": "Save Web Push subscription for PWA notifications.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/slack — Save Slack Webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/slack",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                "slack"
              ]
            },
            "description": "Save Slack webhook URL.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/telegram/link — Link Telegram",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/telegram/link",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                "telegram",
                "link"
              ]
            },
            "description": "Generate a Telegram link code for the user."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/telegram/verify — Verify Telegram",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/telegram/verify?code=value&chat_id=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                "telegram",
                "verify"
              ],
              "query": [
                {
                  "key": "code",
                  "value": "value",
                  "disabled": false
                },
                {
                  "key": "chat_id",
                  "value": "value",
                  "disabled": false
                }
              ]
            },
            "description": "Verify Telegram link code and save channel."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/channels/webhook — Save Custom Webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/channels/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "channels",
                "webhook"
              ]
            },
            "description": "Save custom webhook URL.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/from-template/{key} — Create From Template",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/from-template/:key",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "from-template",
                ":key"
              ],
              "variable": [
                {
                  "key": "key",
                  "value": "value"
                }
              ]
            },
            "description": "Create an alert from a preset template."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/alerts/v2/telegram/webhook — Telegram Webhook",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/telegram/webhook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "telegram",
                "webhook"
              ]
            },
            "description": "Receive incoming messages from Telegram Bot API (no auth — Telegram calls this).\n\nProcesses /start {code} commands to auto-link user accounts."
          },
          "response": []
        },
        {
          "name": "PUT /api/v1/alerts/v2/digest — Update Digest Preferences",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/alerts/v2/digest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "alerts",
                "v2",
                "digest"
              ]
            },
            "description": "Update digest preferences (upsert).",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "api-keys",
      "description": "Trinity Insights REST API — endpoints under the api-keys tag.",
      "item": [
        {
          "name": "DELETE /api/v1/users/me/api-keys/{key_id} — Revoke API key",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/api-keys/:key_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "api-keys",
                ":key_id"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "value"
                }
              ]
            },
            "description": "Revoke an API key. The key is deactivated immediately and can no longer be used.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/users/me/api-keys — List my API keys",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/api-keys",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "api-keys"
              ]
            },
            "description": "List all API keys for the current user.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key)."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/users/me/api-keys — Create API key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/api-keys",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "api-keys"
              ]
            },
            "description": "Create a new API key. The full key is returned **once** and cannot be retrieved later.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key).",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/users/me/api-keys/{key_id}/rotate — Rotate API key",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/api-keys/:key_id/rotate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "api-keys",
                ":key_id",
                "rotate"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "value"
                }
              ]
            },
            "description": "Rotate an API key — revoke the old key and issue a new replacement.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key).\nThe new key secret is returned once and cannot be retrieved later."
          },
          "response": []
        }
      ]
    },
    {
      "name": "ask",
      "description": "Trinity Insights REST API — endpoints under the ask tag.",
      "item": [
        {
          "name": "GET /api/v1/ask/suggestions — Get Suggestions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/ask/suggestions?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ask",
                "suggestions"
              ],
              "query": [
                {
                  "key": "locale",
                  "value": "en",
                  "disabled": true
                }
              ]
            },
            "description": "Return suggested queries based on locale."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/ask — Ask",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/ask",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "ask"
              ]
            },
            "description": "Trinity Ask — conversational interface to indicator data.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "backtest",
      "description": "Trinity Insights REST API — endpoints under the backtest tag.",
      "item": [
        {
          "name": "GET /api/v1/backtest/runs — List Backtest Runs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/backtest/runs",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "backtest",
                "runs"
              ]
            },
            "description": "List past backtest runs.\n\nReturns a paginated list of previous backtest runs with their\nconfiguration, status, and summary results.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/backtest/run — Run Backtest",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/backtest/run",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "backtest",
                "run"
              ]
            },
            "description": "Launch an on-chain backtesting run.\n\nAccepts strategy parameters and on-chain signal configuration,\nruns a historical simulation against BRK data, and returns\nperformance metrics (PnL, Sharpe, drawdown, etc.).\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        }
      ]
    },
    {
      "name": "checkout",
      "description": "Trinity Insights REST API — endpoints under the checkout tag.",
      "item": [
        {
          "name": "GET /api/v1/invoices — List Invoices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/invoices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "invoices"
              ]
            },
            "description": "List the authenticated user's Paddle transactions (last 12).\n\nPaddle MoR issues invoices — we fetch them from the Paddle Transactions API."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/paddle/prices — Get Paddle Prices",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/paddle/prices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "paddle",
                "prices"
              ]
            },
            "description": "Return Paddle price IDs + client token for frontend checkout overlay."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/billing-portal — Create Billing Portal",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/billing-portal",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "billing-portal"
              ]
            },
            "description": "Return Paddle Customer Portal URL for self-service billing management.\n\nPaddle provides a hosted customer portal where users can:\nupdate payment method, view invoices, cancel/downgrade."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/paddle/ensure-customer — Ensure Paddle Customer",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/paddle/ensure-customer",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "paddle",
                "ensure-customer"
              ]
            },
            "description": "Ensure the current user has a Paddle customer. Creates one if missing.\n\nCalled by the frontend before opening the checkout overlay so we can pass\nthe customer_id to Paddle.js."
          },
          "response": []
        }
      ]
    },
    {
      "name": "cointime",
      "description": "Trinity Insights REST API — endpoints under the cointime tag.",
      "item": [
        {
          "name": "GET /api/v1/cointime/metrics — List Cointime Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cointime/metrics",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cointime",
                "metrics"
              ]
            },
            "description": "List all available Cointime Economics metrics.\n\nReturns the catalog of 30+ cointime metrics including Active Cap,\nVaulted Cap, True Market Mean, AVIV Ratio, and more.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cointime/metrics/{metric_id}/data — Get Cointime Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cointime/metrics/:metric_id/data",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cointime",
                "metrics",
                ":metric_id",
                "data"
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get time series data for a specific cointime metric.\n\nReturns daily values for the requested cointime metric with\noptional BTC price overlay.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        }
      ]
    },
    {
      "name": "consent",
      "description": "Trinity Insights REST API — endpoints under the consent tag.",
      "item": [
        {
          "name": "POST /api/v1/consent — Record Consent",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/consent",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "consent"
              ]
            },
            "description": "Enregistre le consentement cookie — route publique (pas d'auth requise).\n\n- Hash SHA-256 de l'IP (jamais l'IP brute)\n- Rate limited par IP (public tier)\n- Preuve CNIL stockee en base",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "conviction",
      "description": "Trinity Insights REST API — endpoints under the conviction tag.",
      "item": [
        {
          "name": "GET /api/v1/conviction/current — Get Current Conviction",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conviction/current",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conviction",
                "current"
              ]
            },
            "description": "Get the latest conviction index value.\n\nTier gating:\n- FREE: band + last_changed only, no score, is_locked=True\n- PRO: score + band, no component breakdown\n- PERFORMANCE: full breakdown with components"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/conviction/history — Get Conviction History Endpoint",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conviction/history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conviction",
                "history"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "365",
                  "description": "Number of days of history",
                  "disabled": true
                }
              ]
            },
            "description": "Get historical conviction index values.\n\nTier gating:\n- FREE: 403 (no history access)\n- PRO: score + band per day, no components\n- PERFORMANCE: full history with component breakdown"
          },
          "response": []
        },
        {
          "name": "POST /api/v1/conviction/compute — Trigger Conviction Compute",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/conviction/compute",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "conviction",
                "compute"
              ]
            },
            "description": "Admin only — Recompute the conviction index from latest on-chain data."
          },
          "response": []
        }
      ]
    },
    {
      "name": "cycle",
      "description": "Trinity Insights REST API — endpoints under the cycle tag.",
      "item": [
        {
          "name": "GET /api/v1/cycle/compare — Compare Cycles",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle/compare?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle",
                "compare"
              ],
              "query": [
                {
                  "key": "metric",
                  "value": "mvrv-classic",
                  "description": "On-chain metric ID to compare across cycles",
                  "disabled": true
                }
              ]
            },
            "description": "Compare an on-chain metric across all 4 Bitcoin halving cycles.\n\nPRO+ only. FREE tier returns 403.\nAligns data by day-in-cycle (0 = halving day) for visual overlay."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cycle/history — Get Cycle History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle/history",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle",
                "history"
              ]
            },
            "description": "Get historical Bitcoin halving cycles.\n\nFREE tier: past completed cycles only (1-3), no current cycle.\nPRO+: all cycles including current."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cycle/position — Get Cycle Position",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle/position",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle",
                "position"
              ]
            },
            "description": "Get current position in the Bitcoin halving cycle with alpha data.\n\nFREE tier: cycle number and phase only (no day, no progress, no alpha).\nPRO+: full data including day_in_cycle, progress_pct, price performance,\n       on-chain metrics comparison, and Cycle Pace score."
          },
          "response": []
        }
      ]
    },
    {
      "name": "cycle-intelligence",
      "description": "Trinity Insights REST API — endpoints under the cycle-intelligence tag.",
      "item": [
        {
          "name": "GET /api/v1/cycle-intelligence/catalog — List Cycle Catalog",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle-intelligence/catalog?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle-intelligence",
                "catalog"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "value",
                  "description": "Filter by category",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "value",
                  "description": "Search query",
                  "disabled": true
                }
              ]
            },
            "description": "List all Cycle Intelligence metrics catalog entries.\n\nPublic endpoint — returns full catalog metadata.\nData access is gated separately per metric."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cycle-intelligence/categories — List Cycle Categories",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle-intelligence/categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle-intelligence",
                "categories"
              ]
            },
            "description": "List all Cycle Intelligence categories with counts."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cycle-intelligence/metrics/{metric_id}/data — Get Cycle Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle-intelligence/metrics/:metric_id/data?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle-intelligence",
                "metrics",
                ":metric_id",
                "data"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "Timeframe: 90d, 180d, 1y, 2y, 5y, 10y, all",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get time series data for a Cycle Intelligence metric.\n\nServer-side tier gating: if user doesn't have access, returns 403.\nFree-tier metrics serve full data (all timeframes, price overlay included)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cycle-intelligence/pipeline/status — Get Cycle Pipeline Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cycle-intelligence/pipeline/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cycle-intelligence",
                "pipeline",
                "status"
              ]
            },
            "description": "Admin only — Get Cycle Intelligence pipeline sync status."
          },
          "response": []
        }
      ]
    },
    {
      "name": "dashboard-features",
      "description": "Trinity Insights REST API — endpoints under the dashboard-features tag.",
      "item": [
        {
          "name": "DELETE /api/v1/dashboards/{dashboard_id}/comments/{comment_id} — Delete a comment",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/comments/:comment_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "comments",
                ":comment_id"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                },
                {
                  "key": "comment_id",
                  "value": "value"
                }
              ]
            },
            "description": "Delete a comment"
          },
          "response": []
        },
        {
          "name": "DELETE /api/v1/dashboards/{dashboard_id}/follow — Unfollow a public dashboard",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/follow",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "follow"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Unfollow a public dashboard"
          },
          "response": []
        },
        {
          "name": "DELETE /api/v1/dashboards/{dashboard_id}/journal/{entry_id} — Delete journal entry",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/journal/:entry_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "journal",
                ":entry_id"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                },
                {
                  "key": "entry_id",
                  "value": "value"
                }
              ]
            },
            "description": "Delete journal entry"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/{dashboard_id}/briefing — Get morning briefing (top changes)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/briefing",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "briefing"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Morning briefing: compare current state to last snapshot, return top N changes."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/{dashboard_id}/comments — List dashboard comments",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/comments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "comments"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "List dashboard comments"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/{dashboard_id}/journal — List journal entries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/journal",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "journal"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "List journal entries"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/{dashboard_id}/playbook — Get dashboard playbook",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/playbook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "playbook"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get dashboard playbook"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/{dashboard_id}/snapshots — List dashboard snapshots",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/snapshots?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "snapshots"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "30",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "List dashboard snapshots"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/portfolio/me — Get user portfolio",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/portfolio/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                "portfolio",
                "me"
              ]
            },
            "description": "Get user portfolio"
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/audit — Audit dashboard composition",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/audit",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "audit"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Rule-based dashboard composition audit. Not financial advice."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/comments — Add a comment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/comments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "comments"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Add a comment",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/follow — Follow a public dashboard",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/follow",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "follow"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Follow a public dashboard to get updates."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/journal — Create journal entry",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/journal",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "journal"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Create journal entry",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/playbook — Create or update playbook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/playbook",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "playbook"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Create or update playbook",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/snapshot — Capture a dashboard snapshot",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/snapshot",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "snapshot"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Capture a dashboard snapshot",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PUT /api/v1/dashboards/{dashboard_id}/journal/{entry_id} — Update journal entry",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/journal/:entry_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "journal",
                ":entry_id"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                },
                {
                  "key": "entry_id",
                  "value": "value"
                }
              ]
            },
            "description": "Update journal entry",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "PUT /api/v1/dashboards/portfolio/me — Update user portfolio",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/portfolio/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                "portfolio",
                "me"
              ]
            },
            "description": "Update user portfolio",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "dashboards",
      "description": "Trinity Insights REST API — endpoints under the dashboards tag.",
      "item": [
        {
          "name": "DELETE /api/v1/dashboards/{dashboard_id} — Delete a dashboard",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Delete a dashboard"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards — List user dashboards",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards"
              ]
            },
            "description": "List user dashboards"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/{dashboard_id} — Get a dashboard by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get a dashboard by ID"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/public — List public dashboards (gallery)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/public?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                "public"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "disabled": true
                },
                {
                  "key": "sort",
                  "value": "fork_count",
                  "disabled": true
                }
              ]
            },
            "description": "Public endpoint — no auth required. Returns paginated public dashboards."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/dashboards/share/{slug} — Get a public dashboard by share slug",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/share/:slug",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                "share",
                ":slug"
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Public endpoint — no auth required. Returns read-only dashboard data."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards — Create a new dashboard",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards"
              ]
            },
            "description": "Create a new dashboard",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/add-widget — Add a widget to an existing dashboard",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/add-widget",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "add-widget"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Add a single widget to an existing dashboard (1-click add from any Trinity page).",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/{dashboard_id}/duplicate — Duplicate a dashboard",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id/duplicate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id",
                "duplicate"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Duplicate a dashboard"
          },
          "response": []
        },
        {
          "name": "POST /api/v1/dashboards/fork/{slug} — Fork a public dashboard",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/fork/:slug",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                "fork",
                ":slug"
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Fork a public dashboard into the current user's account."
          },
          "response": []
        },
        {
          "name": "PUT /api/v1/dashboards/{dashboard_id} — Update a dashboard (autosave)",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/dashboards/:dashboard_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "dashboards",
                ":dashboard_id"
              ],
              "variable": [
                {
                  "key": "dashboard_id",
                  "value": "value"
                }
              ]
            },
            "description": "Update a dashboard (autosave)",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "factor",
      "description": "Trinity Insights REST API — endpoints under the factor tag.",
      "item": [
        {
          "name": "GET /api/v1/factor/saved — List Saved Factors",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/factor/saved",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "factor",
                "saved"
              ]
            },
            "description": "List saved custom factors for the authenticated user.\n\nReturns all previously generated and saved factors with\ntheir definitions, performance metrics, and last update time.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/factor/generate — Generate Factor",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/factor/generate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "factor",
                "generate"
              ]
            },
            "description": "Generate a custom on-chain factor from a natural language prompt.\n\nAccepts a text prompt describing the desired factor (e.g.,\n\"ratio of 1y+ HODL supply to total supply, smoothed 30d\"),\nvalidates feasibility against available BRK metrics, and\nreturns the computed factor with backtested performance.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        }
      ]
    },
    {
      "name": "foresight",
      "description": "Trinity Insights REST API — endpoints under the foresight tag.",
      "item": [
        {
          "name": "GET /api/v1/foresight/calibration/{asset}/{timeframe} — Get Foresight Calibration",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/foresight/calibration/:asset/:timeframe",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "foresight",
                "calibration",
                ":asset",
                ":timeframe"
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                },
                {
                  "key": "timeframe",
                  "value": "value"
                }
              ]
            },
            "description": "Return the Calibration Lab payload for (asset, timeframe).\n\nPayload comes from the offline `foresight.calibrate_metrics` CLI that\nruns nightly on Hetzner. Gating is Performance+ — above base Foresight —\nbecause the methodology details are a paid-tier differentiator.\n\nReturns 404 when no sidecar has been published yet for the pair,\n400 for unsupported tuples, and 500 on schema mismatch."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/foresight/chunks/{chunk_id} — Get Foresight Chunk",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/foresight/chunks/:chunk_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "foresight",
                "chunks",
                ":chunk_id"
              ],
              "variable": [
                {
                  "key": "chunk_id",
                  "value": "value"
                }
              ]
            },
            "description": "Return the decoded payload for one yearly chunk.\n\nResolution order:\n1. Parse chunk_id → (asset, tf, year)\n2. Verify the chunk is published (artifact_uri present on DB row)\n3. Read the gzipped file from the configured data dir\n4. Return a Pydantic-validated payload"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/foresight/history/{asset}/{timeframe} — Get Foresight History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/foresight/history/:asset/:timeframe?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "foresight",
                "history",
                ":asset",
                ":timeframe"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "180",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                },
                {
                  "key": "timeframe",
                  "value": "value"
                }
              ]
            },
            "description": "Return the latest closed OHLC bars for the Foresight chart.\n\nProxied server-side so the source identity stays off the client surface\nand browser CSP stays strict. Cached 5 minutes per tuple."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/foresight/manifest/{asset}/{timeframe} — Get Foresight Manifest",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/foresight/manifest/:asset/:timeframe",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "foresight",
                "manifest",
                ":asset",
                ":timeframe"
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                },
                {
                  "key": "timeframe",
                  "value": "value"
                }
              ]
            },
            "description": "Return the yearly-chunk manifest for (asset, timeframe).\n\nEmpty payloads are exposed as 404 so the frontend can fall back to a\nskeleton state rather than rendering an empty fan chart."
          },
          "response": []
        }
      ]
    },
    {
      "name": "hyperliquid",
      "description": "Trinity Insights REST API — endpoints under the hyperliquid tag.",
      "item": [
        {
          "name": "GET /api/v1/hyperliquid/all — All Hyperliquid data in one call — tier-filtered",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/all",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "all"
              ]
            },
            "description": "Fetches all Hyperliquid collectors in parallel, then filters the response\nbased on the authenticated user's tier.\n\nTier gates (server-enforced):\n- free/founding : market_overview only\n- pro           : + leaderboard, vaults, funding_matrix, liquidation_radar\n- performance   : + hlp_stats, hip3_assets, clearinghouse"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/btc-price-history — BTC/USD price history — Binance public API (commercial use OK)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/btc-price-history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "btc-price-history"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "90",
                  "disabled": true
                }
              ]
            },
            "description": "BTC/USD daily OHLCV from Binance public API.\n\nBinance klines endpoint: no API key, commercial use permitted.\nData available since 2017-08-17 (~3200 days).\nPaginated: max 1000 candles per request."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/clearinghouse — Hyperliquid clearinghouse state — institutional solvency monitor",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/clearinghouse",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "clearinghouse"
              ]
            },
            "description": "Hyperliquid clearinghouse on-chain state.\nInstitutional-grade systemic risk monitoring.\nPerformance tier exclusive."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/fear-greed/history — HL Fear & Greed Index historical scores for charting",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/fear-greed/history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "fear-greed",
                "history"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "90",
                  "disabled": true
                }
              ]
            },
            "description": "Returns hourly Fear & Greed scores for the last N days (default 90, max 1200).\nUsed for temporal charting. Includes both live and backfilled data points."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/funding — Hyperliquid full funding rate matrix + extremes detection",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/funding",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "funding"
              ]
            },
            "description": "Complete funding rate matrix across all Hyperliquid perpetuals.\nIdentifies extreme rates and potential reversal signals.\nRequires Pro plan or higher."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3 — HIP-3 tokenized stocks & ETFs — 24/7 price discovery",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3"
              ]
            },
            "description": "HIP-3 tokenized assets (AAPL, TSLA, NVDA, SPY, QQQ…) on Hyperliquid.\nTrade 24/7 — prices during market close provide exclusive forward-looking data.\nPerformance tier exclusive."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hlp — HLP vault counter-trade signal — exclusive Trinity alpha",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hlp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hlp"
              ]
            },
            "description": "HLP (Hyperliquid Protocol Liquidity) vault state.\nExclusive: HLP is the exchange market maker — its P&L reveals retail positioning.\nPerformance tier exclusive."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/leaderboard — Hyperliquid top traders leaderboard + Smart Money signal",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/leaderboard",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "leaderboard"
              ]
            },
            "description": "Top traders by PnL (on-chain verifiable) with Smart Money positioning signal.\nRequires Pro plan or higher."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/liquidations — Hyperliquid liquidation radar with hot coin clusters",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/liquidations",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "liquidations"
              ]
            },
            "description": "Enhanced liquidation detection across top Hyperliquid perpetuals.\nIdentifies dominant side, hot coins, and large forced unwinds.\nRequires Pro plan or higher."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/market — Hyperliquid market overview — OI, volume, Fear & Greed Index",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/market",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "market"
              ]
            },
            "description": "Global Hyperliquid market snapshot.\nIncludes total OI, 24h volume, top assets, HL Fear & Greed Index.\nAvailable to all authenticated users.\nAlso persists F&G score hourly for historical charting (fire-and-forget)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/vaults — Hyperliquid vault scanner with Vault Alpha Score",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/vaults",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "vaults"
              ]
            },
            "description": "Public vault intelligence with risk-adjusted scoring.\nVault Alpha Score (VAS) = composite of ROI, AUM, and PnL consistency.\nRequires Pro plan or higher."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/hyperliquid/fear-greed/backfill — Backfill F&G history from Hyperliquid funding data — admin only",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/fear-greed/backfill?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "fear-greed",
                "backfill"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "365",
                  "disabled": true
                }
              ]
            },
            "description": "Backfill Fear & Greed history using Hyperliquid historical funding rates.\nUses a 2-factor proxy (funding intensity + momentum proxy).\nAdmin-only. May take 1-3 minutes for 1200 days."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/hyperliquid/fear-greed/snapshot — Store current F&G score — called by pipeline or admin",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/fear-greed/snapshot",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "fear-greed",
                "snapshot"
              ]
            },
            "description": "Store a snapshot of the current HL Fear & Greed Index."
          },
          "response": []
        }
      ]
    },
    {
      "name": "indicators",
      "description": "Trinity Insights REST API — endpoints under the indicators tag.",
      "item": [
        {
          "name": "GET /api/v1/indicators — List Indicators",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/indicators",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "indicators"
              ]
            },
            "description": "List all indicators with latest data — gated by tier.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/indicators/{slug} — Get Indicator",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/indicators/:slug",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "indicators",
                ":slug"
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Get single indicator metadata.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/indicators/{slug}/data — Get Indicator Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/indicators/:slug/data?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "indicators",
                ":slug",
                "data"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "30",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Get indicator historical data.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key) unless X-OG-Render-Secret\nis provided (OG rendering + Trinity Audit Engine sampler)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "insights-lab-compat",
      "description": "Trinity Insights REST API — endpoints under the insights-lab-compat tag.",
      "item": [
        {
          "name": "GET /api/insights-lab — Get Insights Lab",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/insights-lab",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "insights-lab"
              ]
            },
            "description": "Scores grouped by tier — for Insights Lab view.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        }
      ]
    },
    {
      "name": "macro",
      "description": "Trinity Insights REST API — endpoints under the macro tag.",
      "item": [
        {
          "name": "GET /api/v1/macro/business-cycle — Get Business Cycle",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro/business-cycle",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro",
                "business-cycle"
              ]
            },
            "description": "Global Business Cycle state from Copper/Gold ratio MACD (cached 1h)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro/business-cycle/history — Get Business Cycle History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro/business-cycle/history",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro",
                "business-cycle",
                "history"
              ]
            },
            "description": "Full business cycle regime history for chart ribbon overlay (cached 1h)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro/correlations — List Correlations",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro/correlations?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro",
                "correlations"
              ],
              "query": [
                {
                  "key": "lang",
                  "value": "en",
                  "description": "Language: en or fr",
                  "disabled": true
                }
              ]
            },
            "description": "Get latest BTC vs macro correlations.\n\nFREE: btc_m2 only, 7-day delay, no regime.\nPRO: all pairs, real-time.\nPERF: all pairs + detailed regime."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro/correlations/{pair} — Get Correlation Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro/correlations/:pair?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro",
                "correlations",
                ":pair"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "365",
                  "description": "History window in days",
                  "disabled": true
                },
                {
                  "key": "lang",
                  "value": "en",
                  "description": "Language: en or fr",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "pair",
                  "value": "value"
                }
              ]
            },
            "description": "Get historical correlation for a specific BTC vs macro pair.\n\nFREE: btc_m2 only, 403 for others.\nPRO: 365-day history max.\nPERF: full history (up to 3650 days)."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/macro/compute — Trigger Correlation Compute",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro/compute",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro",
                "compute"
              ]
            },
            "description": "Admin only — Trigger recalculation of all macro correlations."
          },
          "response": []
        }
      ]
    },
    {
      "name": "macro-intelligence",
      "description": "Trinity Insights REST API — endpoints under the macro-intelligence tag.",
      "item": [
        {
          "name": "GET /api/v1/macro-intelligence/catalog — List Macro Catalog",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro-intelligence/catalog?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro-intelligence",
                "catalog"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "value",
                  "description": "Filter by category",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "value",
                  "description": "Search query",
                  "disabled": true
                }
              ]
            },
            "description": "List all Macro Intelligence metrics catalog entries.\n\nPublic endpoint — returns full catalog metadata.\nData access is gated separately per metric."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro-intelligence/categories — List Macro Categories",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro-intelligence/categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro-intelligence",
                "categories"
              ]
            },
            "description": "List all Macro Intelligence categories with counts."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro-intelligence/events — List Macro Events",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro-intelligence/events?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro-intelligence",
                "events"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "sovereign",
                  "description": "Event category (currently 'sovereign'; 'corporate', 'etf' reserved)",
                  "disabled": true
                },
                {
                  "key": "country",
                  "value": "value",
                  "description": "Filter by country_id (e.g., 'us', 'de', 'sv')",
                  "disabled": true
                },
                {
                  "key": "from_date",
                  "value": "value",
                  "description": "Start date YYYY-MM-DD",
                  "disabled": true
                },
                {
                  "key": "to_date",
                  "value": "value",
                  "description": "End date YYYY-MM-DD",
                  "disabled": true
                },
                {
                  "key": "impact",
                  "value": "value",
                  "description": "Filter by impact level — comma-separated ('high' | 'medium' | 'low'). Example: '?impact=high,medium' returns everything except low-impact events.",
                  "disabled": true
                }
              ]
            },
            "description": "List annotated historical events for a category.\n\nProvides structured public-event data for frontend chart overlays\n(MacroIntelligenceChart keyEvents prop). Each event carries a verifiable\nsource_url per SOP_EDUCATION_DRIVEN_CHART_DESIGN §6.\n\nCurrently 'sovereign' only (29 seed events 2013→2026). Other categories\nreserved for post-EDCD re-audit (corporate_events, etf_events to come)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro-intelligence/metrics/{metric_id}/data — Get Macro Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro-intelligence/metrics/:metric_id/data?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro-intelligence",
                "metrics",
                ":metric_id",
                "data"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "Timeframe: 90d, 180d, 1y, 2y, 5y, 10y, all",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get time series data for a Macro Intelligence metric.\n\nServer-side tier gating: if user doesn't have access, returns 403.\nFree-tier metrics serve full data (all timeframes, price overlay included)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro-intelligence/pipeline/status — Get Macro Pipeline Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro-intelligence/pipeline/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro-intelligence",
                "pipeline",
                "status"
              ]
            },
            "description": "Admin only — Get Macro Intelligence pipeline sync status."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/macro-intelligence/sentinel/status — Get Sentinel Macro Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/macro-intelligence/sentinel/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "macro-intelligence",
                "sentinel",
                "status"
              ]
            },
            "description": "Sentinel observability for Macro Intelligence — pipeline sync status,\nstaleness alerts, and recent auto-heal actions."
          },
          "response": []
        }
      ]
    },
    {
      "name": "mcp",
      "description": "Trinity Insights REST API — endpoints under the mcp tag.",
      "item": [
        {
          "name": "GET /api/v1/mcp/tools — Discover available MCP tools",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/tools",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "tools"
              ]
            },
            "description": "Returns the list of all available MCP tools with their schemas. Public endpoint — no API key required. Rate limited."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/mcp/call — Invoke an MCP tool",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/call",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "call"
              ]
            },
            "description": "Execute a tool call. Requires API key authentication via X-API-Key header. Rate limited per API key tier.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "old-coins",
      "description": "Trinity Insights REST API — endpoints under the old-coins tag.",
      "item": [
        {
          "name": "GET /api/v1/old-coins/count — Old Coin Count",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/old-coins/count?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "old-coins",
                "count"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "7",
                  "disabled": true
                }
              ]
            },
            "description": "Get old coin awakening event count.\n\nAll tiers can access this endpoint. FREE users see 24h-delayed data.\nPRO+ users see real-time counts."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/old-coins/events — Old Coin Events",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/old-coins/events?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "old-coins",
                "events"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "30",
                  "disabled": true
                },
                {
                  "key": "min_significance",
                  "value": "50",
                  "disabled": true
                }
              ]
            },
            "description": "Get full old coin awakening event details.\n\nGating:\n- FREE: 403 Forbidden\n- PRO: full events, last 30 days max, no significance_score\n- PERF/TEAM: full events, all history, with significance_score"
          },
          "response": []
        }
      ]
    },
    {
      "name": "onchain",
      "description": "Trinity Insights REST API — endpoints under the onchain tag.",
      "item": [
        {
          "name": "GET /api/v1/onchain/catalog — List Onchain Catalog",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/catalog?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "catalog"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "value",
                  "description": "Filter by category",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "value",
                  "description": "Search query",
                  "disabled": true
                }
              ]
            },
            "description": "List all on-chain metrics catalog entries.\n\nPublic endpoint — returns full catalog metadata.\nData access is gated separately per metric."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/categories — List Onchain Categories",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "categories"
              ]
            },
            "description": "List all on-chain categories with counts."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/events — List Onchain Events",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/events?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "events"
              ],
              "query": [
                {
                  "key": "subject",
                  "value": "value",
                  "description": "Filter by subject_id (e.g., 'network', 'protocol', 'exchange', 'miner', 'etf')",
                  "disabled": true
                },
                {
                  "key": "event_type",
                  "value": "value",
                  "description": "Filter by event_type (e.g., 'halving', 'protocol', 'crisis', 'regulatory')",
                  "disabled": true
                },
                {
                  "key": "from_date",
                  "value": "value",
                  "description": "Start date YYYY-MM-DD",
                  "disabled": true
                },
                {
                  "key": "to_date",
                  "value": "value",
                  "description": "End date YYYY-MM-DD",
                  "disabled": true
                },
                {
                  "key": "impact",
                  "value": "value",
                  "description": "Filter by impact level — comma-separated ('high' | 'medium' | 'low').",
                  "disabled": true
                }
              ]
            },
            "description": "List annotated Bitcoin network events for on-chain chart overlays.\n\nEach event carries a verifiable source_url per SOP EDCD §6.\nExcludes 'pending_review' entries (RSS auto-feed awaiting admin promotion)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/metrics/{metric_id}/data — Get Onchain Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/metrics/:metric_id/data?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "metrics",
                ":metric_id",
                "data"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "Timeframe: 7d, 30d, 90d, 180d, 1y, 2y, 4y, all",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get time series data for an on-chain metric.\n\nServer-side tier gating: if user doesn't have access, returns 403.\nFree-tier metrics serve full data (all timeframes, price overlay included).\nNo blur, no timeframe restriction on On-Chain data."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/pipeline/status — Get Pipeline Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/pipeline/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "pipeline",
                "status"
              ]
            },
            "description": "Admin only — Get on-chain pipeline sync status (live from node + PostgreSQL stats)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "price-intelligence",
      "description": "Trinity Insights REST API — endpoints under the price-intelligence tag.",
      "item": [
        {
          "name": "GET /api/v1/price-intelligence/{asset}/{metric_id} — Get Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/:asset/:metric_id?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                ":asset",
                ":metric_id"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "7d|30d|90d|180d|1y|2y|4y|all",
                  "disabled": true
                },
                {
                  "key": "resolution",
                  "value": "1d",
                  "description": "1d|1w|1m|3m|6m",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                },
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get indicator data overlaid on OHLCV for a specific metric."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/price-intelligence/{asset}/ohlcv — Get Ohlcv",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/:asset/ohlcv?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                ":asset",
                "ohlcv"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "7d|30d|90d|180d|1y|2y|4y|all",
                  "disabled": true
                },
                {
                  "key": "resolution",
                  "value": "1d",
                  "description": "1d|1w|1m|3m|6m",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                }
              ]
            },
            "description": "Get OHLCV candle data for an asset at a given resolution."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/price-intelligence/assets — List Assets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/assets",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                "assets"
              ]
            },
            "description": "List supported assets."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/price-intelligence/categories — List Categories",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                "categories"
              ]
            },
            "description": "List Price Intelligence categories."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/price-intelligence/cross/{metric_id} — Get Cross Asset Metric",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/cross/:metric_id?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                "cross",
                ":metric_id"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "7d|30d|90d|180d|1y|2y|4y|all",
                  "disabled": true
                },
                {
                  "key": "resolution",
                  "value": "1d",
                  "description": "1d|1w|1m|3m|6m",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get cross-asset metric data (ratios, rotation, relative strength)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "prices",
      "description": "Trinity Insights REST API — endpoints under the prices tag.",
      "item": [
        {
          "name": "GET /api/v1/prices/ohlc/{asset} — Get Price Ohlc",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/prices/ohlc/:asset",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "prices",
                "ohlc",
                ":asset"
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                }
              ]
            },
            "description": "Get historical OHLC candles for a price asset.\n\nSupported assets: btc, eth, eth_btc, btc_d, total2,\nsp500, gold, oil, commodities, japan, europe, us_dollar, china, emerging.\n\nS&P 500 includes Shiller deep history (1871-present, ~155 years).\nCrypto assets use CoinGecko (primary) + CoinLore (fallback).\n\nUses stale-while-revalidate caching: serves stale data instantly\nwhile refreshing in background. Users never wait for upstream fetches."
          },
          "response": []
        }
      ]
    },
    {
      "name": "referrals",
      "description": "Trinity Insights REST API — endpoints under the referrals tag.",
      "item": [
        {
          "name": "GET /api/v1/referrals/code — Get Referral Code",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/referrals/code",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "referrals",
                "code"
              ]
            },
            "description": "Get or generate the user's unique referral code."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/referrals/stats — Get Stats",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/referrals/stats",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "referrals",
                "stats"
              ]
            },
            "description": "Get referral statistics for the current user."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/referrals/link — Link To Referrer",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/referrals/link",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "referrals",
                "link"
              ]
            },
            "description": "Link current user to a referrer via referral code.\n\nCalled during the post-signup flow when ?ref= query param is present.\nIdempotent — linking twice is a no-op.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "regime",
      "description": "Trinity Insights REST API — endpoints under the regime tag.",
      "item": [
        {
          "name": "GET /api/v1/regime/current — Get Current Regime",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/regime/current",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "regime",
                "current"
              ]
            },
            "description": "Get the current Bitcoin market regime.\n\nReturns the detected regime (accumulation, markup, distribution, markdown)\nwith confidence score and supporting on-chain signals.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/regime/history — Get Regime History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/regime/history",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "regime",
                "history"
              ]
            },
            "description": "Get historical regime transitions.\n\nReturns a time series of regime changes with transition dates,\nduration, and performance metrics per regime phase.\n\nCurrently a placeholder — will be activated when BRK node indexation completes."
          },
          "response": []
        }
      ]
    },
    {
      "name": "scores",
      "description": "Trinity Insights REST API — endpoints under the scores tag.",
      "item": [
        {
          "name": "GET /api/v1/scores/{indicator}/history — Get Indicator History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/scores/:indicator/history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "scores",
                ":indicator",
                "history"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "90",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "indicator",
                  "value": "value"
                }
              ]
            },
            "description": "Historical data for one indicator — requires auth (or dev override), tier-clamped.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/scores/{indicator}/latest — Get Indicator Latest",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/scores/:indicator/latest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "scores",
                ":indicator",
                "latest"
              ],
              "variable": [
                {
                  "key": "indicator",
                  "value": "value"
                }
              ]
            },
            "description": "Latest score for a single indicator.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/scores/detailed — Get Detailed Scores",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/scores/detailed",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "scores",
                "detailed"
              ]
            },
            "description": "Detailed scores with sub-scores — requires auth or dev override (Pro+).\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/scores/insights-lab — Get Insights Lab",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/scores/insights-lab",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "scores",
                "insights-lab"
              ]
            },
            "description": "Scores grouped by tier — for Insights Lab view.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/scores/latest — Get Latest Scores",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/scores/latest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "scores",
                "latest"
              ]
            },
            "description": "Latest scores for all indicators — gated by tier (public, soft-auth).\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        }
      ]
    },
    {
      "name": "scores-compat",
      "description": "Trinity Insights REST API — endpoints under the scores-compat tag.",
      "item": [
        {
          "name": "GET /api/scores/{indicator}/history — Get Indicator History",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/scores/:indicator/history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "scores",
                ":indicator",
                "history"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "90",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "indicator",
                  "value": "value"
                }
              ]
            },
            "description": "Historical data for one indicator — requires auth (or dev override), tier-clamped.\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key)."
          },
          "response": []
        },
        {
          "name": "GET /api/scores/{indicator}/latest — Get Indicator Latest",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/scores/:indicator/latest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "scores",
                ":indicator",
                "latest"
              ],
              "variable": [
                {
                  "key": "indicator",
                  "value": "value"
                }
              ]
            },
            "description": "Latest score for a single indicator.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        },
        {
          "name": "GET /api/scores/detailed — Get Detailed Scores",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/scores/detailed",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "scores",
                "detailed"
              ]
            },
            "description": "Detailed scores with sub-scores — requires auth or dev override (Pro+).\n\nAccepts: Authorization (JWT) or X-API-Key header.\nAuthentication required (JWT or API key)."
          },
          "response": []
        },
        {
          "name": "GET /api/scores/insights-lab — Get Insights Lab",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/scores/insights-lab",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "scores",
                "insights-lab"
              ]
            },
            "description": "Scores grouped by tier — for Insights Lab view.\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        },
        {
          "name": "GET /api/scores/latest — Get Latest Scores",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/scores/latest",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "scores",
                "latest"
              ]
            },
            "description": "Latest scores for all indicators — gated by tier (public, soft-auth).\n\nAccepts: Authorization (JWT) or X-API-Key header."
          },
          "response": []
        }
      ]
    },
    {
      "name": "stream",
      "description": "Trinity Insights REST API — endpoints under the stream tag.",
      "item": [
        {
          "name": "GET /api/v1/stream/scores — Stream Scores",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/stream/scores?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "stream",
                "scores"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "SSE endpoint streaming live indicator scores, gated by user tier.\n\n- Anonymous users receive only free-tier data (locked indicators have null scores)\n- Authenticated users receive data matching their subscription tier\n- Data pushes every 60 seconds, heartbeats every 15 seconds\n- Auto-handles client disconnects\n- Concurrent connection limiting: max 200 total, max 3 per user/IP\n\nQuery params:\n    token: Optional JWT token (EventSource cannot send Authorization headers)"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/stream/scores/snapshot — Scores Snapshot",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/stream/scores/snapshot?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "stream",
                "scores",
                "snapshot"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "One-shot REST endpoint returning the same data as the SSE stream.\n\nUsed by the frontend to pre-load scores instantly on page refresh\nwhile the SSE connection is being established."
          },
          "response": []
        }
      ]
    },
    {
      "name": "trial",
      "description": "Trinity Insights REST API — endpoints under the trial tag.",
      "item": [
        {
          "name": "GET /api/v1/trial/status — Trial Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/trial/status",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "trial",
                "status"
              ]
            },
            "description": "Get current trial status — also triggers expiration check if needed."
          },
          "response": []
        }
      ]
    },
    {
      "name": "users",
      "description": "Trinity Insights REST API — endpoints under the users tag.",
      "item": [
        {
          "name": "DELETE /api/v1/users/me — Delete My Data",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me"
              ]
            },
            "description": "RGPD art. 17 — droit a l'effacement. Delai: 30 jours max."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/users/me — Get Me",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me"
              ]
            },
            "description": "Get current user profile with trial info."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/users/me/export — Export My Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/export",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "export"
              ]
            },
            "description": "RGPD art. 20 — droit a la portabilite."
          },
          "response": []
        }
      ]
    },
    {
      "name": "webhooks",
      "description": "Trinity Insights REST API — endpoints under the webhooks tag.",
      "item": [
        {
          "name": "POST /api/v1/webhooks/clerk — Clerk Webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "svix-id",
                "value": "value",
                "type": "text",
                "disabled": true
              },
              {
                "key": "svix-timestamp",
                "value": "value",
                "type": "text",
                "disabled": true
              },
              {
                "key": "svix-signature",
                "value": "value",
                "type": "text",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhooks/clerk",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhooks",
                "clerk"
              ]
            },
            "description": "Handle Clerk webhook events (user lifecycle)."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/webhooks/paddle — Paddle Webhook",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/webhooks/paddle",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "webhooks",
                "paddle"
              ]
            },
            "description": "Handle Paddle webhook notifications (payment lifecycle).\n\nSignature verification + event routing delegated to paddle service."
          },
          "response": []
        }
      ]
    }
  ]
}