{
  "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": "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": "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": "catalog-public",
      "description": "Trinity Insights REST API - endpoints under the catalog-public tag.",
      "item": [
        {
          "name": "GET /api/v1/catalog/metric/{slug}/full - Get Metric Full",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-og-render-secret",
                "value": "value",
                "type": "text",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/catalog/metric/:slug/full?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "catalog",
                "metric",
                ":slug",
                "full"
              ],
              "query": [
                {
                  "key": "preview",
                  "value": "false",
                  "description": "When true, omits the `education` object from the payload. Used by public SSR pages to avoid disclosing the subscriber-only educational module content (paywall posture).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Returns the atemporal payload for a Trinity chart catalog entry.\n\nUsed by :\n  - Next.js SSR pages `/mcp/metrics/[slug]/page.tsx` (preview=true,\n    revalidate 24h ISR) - paywall posture, omits education\n  - Next.js OG image render handlers (preview=true)\n  - Internal admin tooling (preview=false, full payload including\n    education for review purposes)\n\nServer-to-server only. The slug pattern restricts to lowercase\nalphanumeric + hyphen, starting with alphanumeric.\n\nPAYWALL POSTURE (cf. founder directive 2026-05-25) :\nThe `education` object contains subscriber-only content. Public-facing\nrendering paths MUST call with preview=true so the API drops the\neducation sections before serialization. Defence-in-depth : even if a\nrendering page accidentally tries to display education, the payload\nwon't contain it.\n\nCACHE (Phase 1B sprint 2026-05-28) :\nResponse cached in Redis with key\n``catalog:public:metric:{slug}:{preview}`` and TTL\n``cache_ttl_catalog_public`` (default 600s). Preview true and false\nare cached separately because the payload differs (education object\npresent/absent). Fail-open: Redis down → DB direct."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/catalog/metrics/sitemap - List Metrics For Sitemap",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-og-render-secret",
                "value": "value",
                "type": "text",
                "disabled": true
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/catalog/metrics/sitemap",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "catalog",
                "metrics",
                "sitemap"
              ]
            },
            "description": "Lightweight list of all active metrics for sitemap generation."
          },
          "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/billing/withdrawal-request - Request Withdrawal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/billing/withdrawal-request",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "billing",
                "withdrawal-request"
              ]
            },
            "description": "Exercice EN LIGNE du droit de retractation.\n\nEnregistre la demande horodatee, envoie l'accuse de reception au client\n(email = support durable) et une copie interne pour traitement sans delai.\nLa demande est volontairement acceptee sans condition prealable : la\nqualification (fenetre de 14 jours, remboursement du) est instruite au\ntraitement, jamais bloquee a la porte.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "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": "cross-rubric",
      "description": "Trinity Insights REST API - endpoints under the cross-rubric tag.",
      "item": [
        {
          "name": "GET /api/v1/cross-rubric/alerts - Get Cross Rubric Alerts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cross-rubric/alerts?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cross-rubric",
                "alerts"
              ],
              "query": [
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Live cross-rubric alerts - tier Performance+.\n\nAtemporal, AMF-compliant, recipe-leak guarded.\nTier gating: free/founding/pro → 403. Performance/Team → full."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/cross-rubric/insight/{metric_id} - Get Cross Rubric Insight",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/cross-rubric/insight/:metric_id?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "cross-rubric",
                "insight",
                ":metric_id"
              ],
              "query": [
                {
                  "key": "date",
                  "value": "latest",
                  "disabled": true
                },
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                },
                {
                  "key": "top_n",
                  "value": "3",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Cross-rubric atemporal insight for a URPD-mode metric (Pro+).\n\nPublic-facing alias of /api/v1/insights/cross-rubric/insights?slug=..."
          },
          "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": "data-export",
      "description": "Trinity Insights REST API - endpoints under the data-export tag.",
      "item": [
        {
          "name": "POST /api/v1/account/data-export - Request Data Export",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/account/data-export",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "account",
                "data-export"
              ]
            },
            "description": "RGPD Art. 20 - request a portable copy of your data by email.\n\nRevokes any previous unconsumed token for this user, mints a fresh\nsingle-use token (~1h TTL), and emails a link to the frontend download\npage. Best-effort email: a delivery failure does not fail the request."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/account/data-export/download - Download Data Export",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/account/data-export/download",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "account",
                "data-export",
                "download"
              ]
            },
            "description": "PUBLIC by design - download your data using the single-use token.\n\nNo Clerk dependency: possession of the single-use, short-lived token IS the\nauth (conscious derogation to the Depends-auth-on-/api/* rule - see module\ndocstring). The token arrives in the BODY, never the URL. It is consumed\nATOMICALLY before any data is served, so a link pre-fetch (Gmail/Outlook)\nor a second click cannot replay it. Rejections are a generic 403 - we never\nreveal whether the token was unknown, expired, or already used.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    },
    {
      "name": "exchange-intelligence",
      "description": "Trinity Insights REST API - endpoints under the exchange-intelligence tag.",
      "item": [
        {
          "name": "GET /api/v1/exchange-intelligence/families - List Families",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exchange-intelligence/families",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exchange-intelligence",
                "families"
              ]
            },
            "description": "List all functional families with chart counts + tier distribution.\n\nPublic endpoint - used by the hub page to render the family grid."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/exchange-intelligence/families/{family} - List Family Charts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exchange-intelligence/families/:family",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exchange-intelligence",
                "families",
                ":family"
              ],
              "variable": [
                {
                  "key": "family",
                  "value": "value"
                }
              ]
            },
            "description": "List all charts for a given family (e.g. /families/open-interest)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/exchange-intelligence/metrics - List Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exchange-intelligence/metrics?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exchange-intelligence",
                "metrics"
              ],
              "query": [
                {
                  "key": "tier",
                  "value": "value",
                  "description": "Filter by tier (free | pro | performance).",
                  "disabled": true
                },
                {
                  "key": "layer",
                  "value": "value",
                  "description": "Filter by architectural layer (A | B | C | D | E).",
                  "disabled": true
                },
                {
                  "key": "family",
                  "value": "value",
                  "description": "Filter by functional family. One of: open-interest | funding-rate | liquidations | long-short-ratio | basis-premium | volume-dominance | volume | composite | cme | dex.",
                  "disabled": true
                }
              ]
            },
            "description": "List all Exchange Intelligence metric metadata, filterable.\n\nPublic endpoint - returns full catalog metadata (no time-series).\nPer-chart access remains gated at `/metrics/{slug}/data`.\n\nFiltering is registry-driven (always 30 charts; DB metadata is\nconsulted only to enrich `source_provider` + `attribution_text`)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/exchange-intelligence/metrics/{metric_id}/data - Get Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exchange-intelligence/metrics/:metric_id/data?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exchange-intelligence",
                "metrics",
                ":metric_id",
                "data"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "30d",
                  "description": "Timeframe granularity. Valid: live, 7d, 30d, 90d, 1y, all",
                  "disabled": true
                },
                {
                  "key": "asset",
                  "value": "value",
                  "description": "Optional asset filter (BTC / ETH / SOL / XRP / DOGE / BNB). V1.1 wire - currently only BTC backfill is available; other assets gracefully return empty payload until V1.2 multi-asset sync (sync_derivatives_coinalyze.py ETH/SOL/... backfill).",
                  "disabled": true
                },
                {
                  "key": "symbol",
                  "value": "value",
                  "description": "Optional quote symbol filter (USDT / USDC / USD). Backend wire V1.2 - currently ignored as data is USDT-aggregated.",
                  "disabled": true
                },
                {
                  "key": "exchange",
                  "value": "value",
                  "description": "Optional exchange filter ('all' or specific venue). When data metadata exposes per-exchange dict, frontend filters client-side.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get time-series data for an Exchange Intelligence metric.\n\nServer-side tier gating: returns 403 if user tier < metric tier.\nFree-tier metrics serve full data regardless of timeframe.\n\nAsset / symbol / exchange filters (V1.1 Vague 2 + 4) :\n  - asset : BTC (default backfilled) / ETH / SOL / XRP / DOGE / BNB.\n    Non-BTC return empty payload until V1.2 multi-asset sync ships.\n  - symbol : USDT (default) / USDC / USD - currently ignored backend.\n  - exchange : 'all' = no filter, OR specific venue name (client-side\n    filter via metadata.byExchange dict).\n\nOG render bypass: requests carrying `X-OG-Render-Secret` (matching\n`OG_RENDER_SECRET` env) skip the tier gate - used by Next.js OG\nimage route + Trinity Audit Engine sampler."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/exchange-intelligence/metrics/{metric_id}/metadata - Get Metric Metadata",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/exchange-intelligence/metrics/:metric_id/metadata",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "exchange-intelligence",
                "metrics",
                ":metric_id",
                "metadata"
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Single-metric metadata (no time-series)."
          },
          "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": "founding",
      "description": "Trinity Insights REST API - endpoints under the founding tag.",
      "item": [
        {
          "name": "GET /api/v1/founding/availability - Get Founding Availability",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/founding/availability",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "founding",
                "availability"
              ]
            },
            "description": "Returns the current count of claimed Founding spots vs the FOUNDING_QUOTA cap.\n\nPublic (no auth) - consumed by the pricing page to render the\n\"X / 100 spots remaining\" badge. The counter is best-effort:\nPaddle webhook idempotency guarantees no double-claim, but a\nracing webhook delivery could cause a brief over-claim window\nbefore being reconciled."
          },
          "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, aligned on\n``docs/strategy/hyperliquid_tiering_2026-06-04.md``) :\n  - free/founding : market_overview + aggregate leaderboard/funding +\n    liquidations health\n  - pro           : + full leaderboard / funding matrix / 24h liquidation\n    radar + vaults + smart_money + funding chart + LS ratio + orderbook +\n    funding_arb\n  - performance   : + HLP stats + clearinghouse (HIP-3 lives in its own\n    canonical router ``/api/v1/hyperliquid/hip3/*``)\n\nRedis cache (P29-REDIS-CACHE-2026-06-01) : raw data cached with TTL 30s.\nTier filtering happens server-side POST-cache so tier-agnostic key is safe\n(cf. cache.py SECURITY CONTRACT). resolve_user_tier still runs BEFORE every\nresponse - cache only avoids the slow fetch_all_hyperliquid() upstream call.\nData refreshes every 15min via collector cron; 300s TTL = ~99.9% hit ratio."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/book-depth - Near-mid order-book depth - Hyperliquid vs Binance",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/book-depth?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "book-depth"
              ],
              "query": [
                {
                  "key": "coin",
                  "value": "BTC",
                  "description": "Perp coin. Allowed: BTC, ETH, SOL, HYPE",
                  "disabled": true
                }
              ]
            },
            "description": "Photo instantanée de la liquidité proche du milieu, des deux côtés du\ncarnet, sur Hyperliquid et sur une place centralisée de référence.\n\nFree tier. Aucune persistance : c'est un instantané, pas une série.\nRenvoie 503 si l'une des deux venues ne répond pas - un ratio calculé sur\nun seul carnet serait trompeur."
          },
          "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/flippenings - HL vs CEX flippening registry - BTC-perp open interest per venue",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/flippenings",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "flippenings"
              ]
            },
            "description": "Registre des flippenings : pour chaque venue centralisée suivie, l'OI\nBTC-perp face à Hyperliquid - ratio courant, date de dépassement persistant\n(dans notre fenêtre de données), écart restant et progression.\n\nFree tier. Périmètre BTC-perp (couverture Coinalyze) - documenté côté UI."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/funding - Hyperliquid funding rates - aggregate heatmap (Free) or full matrix with per-market extremes (Pro)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/funding?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "funding"
              ],
              "query": [
                {
                  "key": "detail",
                  "value": "aggregate",
                  "description": "aggregate (Free, default) - heatmap, averages, ecosystem extremes. full (Pro) - per-market funding rates with extreme reading flags.",
                  "disabled": true
                }
              ]
            },
            "description": "Funding rates across Hyperliquid perpetuals.\n\nTwo views :\n  - ``aggregate`` (free) - heatmap, averages, ecosystem-level extremes.\n  - ``full`` (pro+) - per-market matrix with extreme readings to act on."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/funding-arb - Cross-venue funding arbitrage - HL vs Binance vs Bybit annualised spread",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/funding-arb",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "funding-arb"
              ]
            },
            "description": "Compares predicted funding rates on Hyperliquid against Binance Perpetuals and\nBybit Perpetuals for each overlapping asset. Rates are annualised on a common\nbasis (HL hourly × 8760; CEX 8h × 1095) so they are directly comparable.\n\nThe spread (|HL_annual − CEX_annual|) quantifies the cross-venue funding edge\navailable to market-neutral strategies (long the cheaper-funding venue, short\nthe dearer-funding venue). Assets are sorted by widest spread descending.\n\nRequires Pro plan or higher. Analytical use only - not investment advice."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3 - HIP-3 tokenized assets - DEPRECATED; use /api/v1/hyperliquid/hip3/* (canonical builder-DEX router)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3"
              ]
            },
            "description": "DEPRECATED. Use ``/api/v1/hyperliquid/hip3/*`` instead - those routes\nprovide the full HIP-3 builder-DEX taxonomy (dashboard, by-dex, by-symbol,\noi-trends, aggregates) with the same tier gating.\n\nKept for backward compatibility until the front-end migration is complete.\nPerformance tier required."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hlp - HLP vault counter-trade indication - Trinity-exclusive lecture",
          "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.\n\nTrinity-exclusive lecture : HLP is the exchange market maker - its P&L\nreveals retail positioning. The composition of the counter-trade\nindication (factors, weights, smoothing) is not disclosed (Trinity moat).\nPerformance tier exclusive."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/leaderboard - Hyperliquid top traders leaderboard - aggregate (Free) or full drill-down (Pro) with Smart Money positioning lecture",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/leaderboard?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "leaderboard"
              ],
              "query": [
                {
                  "key": "detail",
                  "value": "aggregate",
                  "description": "aggregate (Free, default) - top-5 traders + ecosystem counters. full (Pro) - complete trader list with per-trader Smart Money positioning lecture.",
                  "disabled": true
                }
              ]
            },
            "description": "Top traders by PnL (on-chain verifiable) with Smart Money positioning.\n\nTwo views :\n  - ``aggregate`` (free) - top-5 traders + ecosystem counters.\n  - ``full`` (pro+) - complete leaderboard with per-trader detail."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/liquidations - Hyperliquid liquidations - three levels: ecosystem health (Free), 24h radar (Pro), real-time feed (Performance)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/liquidations?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "liquidations"
              ],
              "query": [
                {
                  "key": "level",
                  "value": "health",
                  "description": "health (Free, default) - ecosystem pressure + dominant side. radar-24h (Pro) - 24-hour radar with hot-coin clusters. real-time (Performance) - real-time feed + 6-month history.",
                  "disabled": true
                }
              ]
            },
            "description": "Liquidation detection across top Hyperliquid perpetuals.\n\nThree levels :\n  - ``health`` (free) - ecosystem pressure + dominant side.\n  - ``radar-24h`` (pro+) - last 24h with hot-coin clusters.\n  - ``real-time`` (perf+) - real-time + 6-month history."
          },
          "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/market-history - HL perp market KPI time-series - OI, volume, funding, volatility proxy",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/market-history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "market-history"
              ],
              "query": [
                {
                  "key": "metric",
                  "value": "total_oi_usd",
                  "description": "KPI column to return. Allowed: asset_count, avg_funding_rate, positive_funding_pct, total_oi_usd, total_volume_24h_usd, vola_proxy",
                  "disabled": true
                },
                {
                  "key": "period",
                  "value": "30d",
                  "description": "Time window. Allowed: 7d, 30d, 90d, 1y, all",
                  "disabled": true
                }
              ]
            },
            "description": "Time-series of Hyperliquid market KPIs persisted by the market-history recorder.\n\nEach data point is one recorder run (cadence depends on cron schedule,\ntypically 15-minute or daily intervals).\n\nMetrics available:\n- total_oi_usd          - aggregate open interest in USD\n- total_volume_24h_usd  - aggregate 24h notional volume in USD\n- asset_count           - number of listed perp assets\n- avg_funding_rate      - mean HOURLY funding rate across all perps.\n                          Hyperliquid settles funding every hour, so annualise\n                          with x8760 (24 x 365), NOT x1095. Corrected 2026-08-07:\n                          this line and the column comment of migration 120 both\n                          read \"8h\", which would understate annual carry 8-fold.\n- positive_funding_pct  - percent of assets with funding > 0\n- vola_proxy            - mean abs 24h price change % (cross-asset volatility proxy)\n\nAvailable to all authenticated users (free tier).\nReturns at most 10 000 points to keep response size bounded."
          },
          "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": "hyperliquid-economics",
      "description": "Trinity Insights REST API - endpoints under the hyperliquid-economics tag.",
      "item": [
        {
          "name": "GET /api/v1/hyperliquid/economics/overview - Protocol economics - measured AF buyback, implied revenue, supply dynamics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/economics/overview?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "economics",
                "overview"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                }
              ]
            },
            "description": "Protocol economics - measured AF buyback, implied revenue, supply dynamics"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/economics/segments - Where protocol revenue comes from - measured total split by weighted segment volumes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/economics/segments",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "economics",
                "segments"
              ]
            },
            "description": "Where protocol revenue comes from - measured total split by weighted segment volumes"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/economics/valuation - HYPE valuation - buyback yield, P/S multiples, implied price bands",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/economics/valuation",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "economics",
                "valuation"
              ]
            },
            "description": "HYPE valuation - buyback yield, P/S multiples, implied price bands"
          },
          "response": []
        }
      ]
    },
    {
      "name": "hyperliquid-etf",
      "description": "Trinity Insights REST API - endpoints under the hyperliquid-etf tag.",
      "item": [
        {
          "name": "GET /api/v1/hyperliquid/etf/dashboard - HYPE spot ETF dashboard - universe, latest snapshot, ecosystem totals",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/etf/dashboard",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "etf",
                "dashboard"
              ]
            },
            "description": "HYPE spot ETF dashboard - universe, latest snapshot, ecosystem totals"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/etf/history - HYPE spot ETF daily time series (per ticker, per metric)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/etf/history?ticker=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "etf",
                "history"
              ],
              "query": [
                {
                  "key": "ticker",
                  "value": "value",
                  "disabled": false
                },
                {
                  "key": "metric",
                  "value": "aum_hype_usd",
                  "disabled": true
                },
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                }
              ]
            },
            "description": "HYPE spot ETF daily time series (per ticker, per metric)"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/etf/history-all - HYPE spot ETF daily time series across all issuers (one metric)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/etf/history-all?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "etf",
                "history-all"
              ],
              "query": [
                {
                  "key": "metric",
                  "value": "aum_hype_usd",
                  "disabled": true
                },
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                }
              ]
            },
            "description": "Real daily history for ALL issuers in one call - feeds the dashboard's\nper-issuer stacked charts (flows / AUM / holdings) with genuine time series\nfrom hl_etf_snapshot_daily (no fabrication, no single-point placeholders)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "hyperliquid-hip3",
      "description": "Trinity Insights REST API - endpoints under the hyperliquid-hip3 tag.",
      "item": [
        {
          "name": "GET /api/v1/hyperliquid/hip3/aggregates - HIP-3 cumulative KPIs (all-time volume, trades) + volume history",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3/aggregates?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3",
                "aggregates"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                },
                {
                  "key": "dex",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "HIP-3 cumulative KPIs (all-time volume, trades) + volume history"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3/by-dex - HIP-3 per-DEX OI/volume + market share",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3/by-dex",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3",
                "by-dex"
              ]
            },
            "description": "HIP-3 per-DEX OI/volume + market share"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3/by-symbol - HIP-3 per-symbol breakdown for a given builder DEX",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3/by-symbol?dex=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3",
                "by-symbol"
              ],
              "query": [
                {
                  "key": "dex",
                  "value": "value",
                  "disabled": false
                }
              ]
            },
            "description": "HIP-3 per-symbol breakdown for a given builder DEX"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3/dashboard - HIP-3 ecosystem dashboard - total OI, volume, per-DEX breakdown",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3/dashboard",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3",
                "dashboard"
              ]
            },
            "description": "HIP-3 ecosystem dashboard - total OI, volume, per-DEX breakdown"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3/oi-trends - HIP-3 open interest time series (ecosystem or per-DEX)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3/oi-trends?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3",
                "oi-trends"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "1w",
                  "disabled": true
                },
                {
                  "key": "dex",
                  "value": "value",
                  "disabled": true
                }
              ]
            },
            "description": "HIP-3 open interest time series (ecosystem or per-DEX)"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip3/share - HIP-3 share of total HL perp volume + top markets by OI",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip3/share",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip3",
                "share"
              ]
            },
            "description": "HIP-3 share of total HL perp volume + top markets by OI"
          },
          "response": []
        }
      ]
    },
    {
      "name": "hyperliquid-hip4",
      "description": "Trinity Insights REST API - endpoints under the hyperliquid-hip4 tag.",
      "item": [
        {
          "name": "GET /api/v1/hyperliquid/hip4/by-outcome - HIP-4 single-outcome drill-down - per-side probability + volume time series",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip4/by-outcome?outcome_id=1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip4",
                "by-outcome"
              ],
              "query": [
                {
                  "key": "outcome_id",
                  "value": "1",
                  "description": "HIP-4 outcome_id (from /dashboard).",
                  "disabled": false
                }
              ]
            },
            "description": "Per-outcome drill-down (Pro).\n\nReturns market metadata and the full time series of each side (Yes/No)\n: implied probability (= ``last_price``), notional volume USD, and\ntrade count over every available snapshot.\n\nThe aggregate ecosystem view (``/dashboard`` + ``/history``) stays Free,\nbut acting on a specific market - comparing per-side probability flows,\ntiming entries - requires Pro."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip4/dashboard - HIP-4 prediction markets - outcomes with implied probabilities, volume",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip4/dashboard",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip4",
                "dashboard"
              ]
            },
            "description": "HIP-4 prediction markets - outcomes with implied probabilities, volume"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hip4/history - HIP-4 ecosystem daily time series (aggregate volume + trades by snapshot)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hip4/history",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hip4",
                "history"
              ]
            },
            "description": "Real aggregate time series across all outcomes (volume + trades per\nsnapshot ts). Replaces the single-point / fabricated 70-30 split charts with\na genuine ecosystem history from hl_hip4_outcome_snapshot."
          },
          "response": []
        }
      ]
    },
    {
      "name": "hyperliquid-hype",
      "description": "Trinity Insights REST API - endpoints under the hyperliquid-hype tag.",
      "item": [
        {
          "name": "GET /api/v1/hyperliquid/hype/buy-pressure - HYPE structural buy pressure - AF buyback + ETF flows + DAT vs float",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hype/buy-pressure?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hype",
                "buy-pressure"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                }
              ]
            },
            "description": "HYPE structural buy pressure - AF buyback + ETF flows + DAT vs float"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hype/candles - HYPE OHLCV daily series",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hype/candles?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hype",
                "candles"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                }
              ]
            },
            "description": "HYPE OHLCV daily series"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hype/dashboard - HYPE token dashboard - structural, AF buyback, composite, bridges",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hype/dashboard",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hype",
                "dashboard"
              ]
            },
            "description": "HYPE token dashboard - structural, AF buyback, composite, bridges"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/hyperliquid/hype/history - HYPE daily time series (per allowed metric)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/hyperliquid/hype/history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "hyperliquid",
                "hype",
                "history"
              ],
              "query": [
                {
                  "key": "metric",
                  "value": "price",
                  "disabled": true
                },
                {
                  "key": "period",
                  "value": "all",
                  "disabled": true
                }
              ]
            },
            "description": "HYPE daily time series (per allowed metric)"
          },
          "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-cross-rubric",
      "description": "Trinity Insights REST API - endpoints under the insights-cross-rubric tag.",
      "item": [
        {
          "name": "GET /api/v1/insights/cross-rubric/composites-snapshot - Get Composites Snapshot",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/cross-rubric/composites-snapshot?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "cross-rubric",
                "composites-snapshot"
              ],
              "query": [
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Snapshot composites Trinity + cycle context - tier Pro+.\n\nReturns score + phase + timestamp for TCTI/TSMI/TRI/TSS.\nNEVER reveals sub_scores or components (recipe-leak guard).\n\nTier gating: free/founding → 403. Pro/Performance/Team → full.\nOG render bypass: ``X-OG-Render-Secret`` header skips gating."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/insights/cross-rubric/cycle-phase - Get Cycle Phase",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/cross-rubric/cycle-phase?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "cross-rubric",
                "cycle-phase"
              ],
              "query": [
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Cycle phase + days_since_halving - public (all tiers).\n\nSource: halvings.py (single source of truth). Atemporal.\nNo tier gating - educational baseline content."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/insights/cross-rubric/insights - Get Cross Rubric Insights",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/insights/cross-rubric/insights?slug=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "insights",
                "cross-rubric",
                "insights"
              ],
              "query": [
                {
                  "key": "slug",
                  "value": "value",
                  "description": "URPD slug (#273-#284 + #285)",
                  "disabled": false
                },
                {
                  "key": "date",
                  "value": "latest",
                  "description": "Date YYYY-MM-DD or 'latest'",
                  "disabled": true
                },
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                },
                {
                  "key": "top_n",
                  "value": "3",
                  "disabled": true
                }
              ]
            },
            "description": "Cross-rubric atemporal insights - tier Pro+.\n\nEvaluates 30 deterministic patterns crossing URPD shape × composites\n× cycle phase. Returns top N insights by descending weight. Insights\nare atemporal, AMF-compliant, recipe-leak guarded.\n\nTier gating: free/founding → 403. Pro/Performance/Team → full."
          },
          "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.\n\nCACHE (Phase 1D sprint 2026-05-28) :\nAggregates 3-4 expensive PG queries (GROUP BY + LEFT JOIN + CTE) into\na single payload. Cached under ``query:slow:macro_sentinel_status``\nwith TTL ``cache_ttl_query_slow`` (default 600s = 10 min). The Sentinel\nprobe and admin UI both consume this endpoint at intervals ≥30s, so a\n10-min cache keeps freshness aligned with pipeline cadence while\neliminating the heavy joins from the hot path. Fail-open: Redis down\n→ DB direct."
          },
          "response": []
        }
      ]
    },
    {
      "name": "market-intelligence",
      "description": "Trinity Insights REST API - endpoints under the market-intelligence tag.",
      "item": [
        {
          "name": "GET /api/v1/market-intelligence/asset/{canonical_slug} - Get Asset Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/asset/:canonical_slug",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "asset",
                ":canonical_slug"
              ],
              "variable": [
                {
                  "key": "canonical_slug",
                  "value": "value"
                }
              ]
            },
            "description": "Single asset detail - page asset cockpit (Sprint 7 Marathon Phase 3).\n\nReal DB query : fetch metadata + all metrics + 6 axes radar + TCS + freshness.\nTrinity Verdict generation via Templates Python (deterministic rules-based,\n0€/mo - cf. brainstorm §3.3). Compliance AMF : pas de label Buy/Sell, juste\ndescription factuelle statistique en français/anglais."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/asset/{canonical_slug}/ohlc - Get Asset Ohlc",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/asset/:canonical_slug/ohlc?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "asset",
                ":canonical_slug",
                "ohlc"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "1y",
                  "description": "Window. Valid: 7d, 1m, 3m, 6m, 1y, max",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "canonical_slug",
                  "value": "value"
                }
              ]
            },
            "description": "Daily OHLC candles for a single asset - fuels asset cockpit candle chart.\n\nSprint Candle Chart (2026-05-19) - founder directive \"Candle Chart Price\npremium maximum avec plusieurs timeframes\" sur cockpit detail page.\n\nSource data : `screener_asset_ohlc_daily` populé par\nsync_market_intelligence_ohlc.py (CoinGecko Pro /coins/{id}/ohlc daily,\ncron 05:30 UTC daily).\n\nTier gating : même resolver que /assets (DB-authoritative). Free voit\nquand même le chart pour BTC/ETH/SOL (top 50) - pas de blur ici puisque\nc'est un chart, pas un row count.\n\nCompliance AMF : candles déterministes (open/high/low/close), pas de\nlabel Buy/Sell, pas d'indicator technique propre Trinity exposé."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/assets - List Assets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/assets?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "assets"
              ],
              "query": [
                {
                  "key": "view",
                  "value": "overview",
                  "description": "Column preset view. Valid: overview, performance, trinity-score, derivatives",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "100",
                  "description": "Pagination limit (max 500)",
                  "disabled": true
                },
                {
                  "key": "offset",
                  "value": "0",
                  "description": "Pagination offset",
                  "disabled": true
                },
                {
                  "key": "sort",
                  "value": "market_cap_usd",
                  "description": "Sort field. Default = market_cap_usd (compliance AMF : pas de tri DESC TCS implicit top picks). Valid: market_cap_usd, volume_24h_usd, price_usd, price_change_24h_pct, price_change_7d_pct, tcs, rank",
                  "disabled": true
                },
                {
                  "key": "order",
                  "value": "desc",
                  "description": "Sort order. Valid: asc, desc",
                  "disabled": true
                }
              ]
            },
            "description": "List universe assets with tier-based limit + view-specific column preset.\n\nSprint 1 (2026-05-18) : real DB query against `screener_assets` JOIN\n`screener_asset_latest` (populated by sync_market_intelligence_main.py\nUniverseSync). Tier limit applied client-side via blur (cf. brainstorm §5.4).\n\nCompliance AMF : default sort = market_cap_usd DESC (PAS TCS DESC)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/deltas - Get Deltas",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/deltas?since=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "deltas"
              ],
              "query": [
                {
                  "key": "since",
                  "value": "value",
                  "description": "ISO 8601 timestamp (e.g. '2026-05-18T10:30:00Z'). Returns rows changed after this.",
                  "disabled": false
                }
              ]
            },
            "description": "Incremental delta endpoint - frontend polling 15-30s pattern.\n\nSCAFFOLD : returns empty delta list. Real implementation will query\n`screener_asset_latest WHERE updated_at > :since LIMIT 200` and emit only\nchanged fields (compact payload ~160 bytes/asset).\n\nAnti-pattern interdit (brainstorm §5.6) : PAS de SSE Top 200 global push 5s\npour 1K users (fragile FastAPI sans Redis). Polling 15-30s suffit au MVP."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/derivatives - Top crypto derivatives snapshot (Coinalyze aggregated cross-exchange)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/derivatives?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "derivatives"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "100",
                  "disabled": true
                },
                {
                  "key": "sort",
                  "value": "oi_usd",
                  "disabled": true
                },
                {
                  "key": "order",
                  "value": "desc",
                  "disabled": true
                }
              ]
            },
            "description": "Trinity Market Intel Derivatives tab snapshot.\n\nReturns Top N assets with aggregated derivatives metrics across exchanges :\n    - OI USD total + 24h % change\n    - Funding 8h weighted avg by OI + predicted next 8h\n    - Long/Short ratio weighted\n    - Liquidations 24h (long + short split)\n    - Conviction stars 0-5 (Phase α heuristic)\n    - TDCS placeholder 0-100 (Phase β real composite scheduled)\n    - Exchanges count + data quality flag\n\nTier gating identical to /assets endpoint :\n    - free: 50, founding: 500, pro: 500, performance: 2800, team: 2800"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/fear-greed - Canonical Fear & Greed Index (Alternative.me) - current + 90d history (Pro tier)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/fear-greed",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "fear-greed"
              ]
            },
            "description": "Canonical Fear & Greed Index (Alternative.me) + 90 days daily history.\n\nFounder LIV 2026-05-27 (Bug 3) :\n  - PRIMARY  : Alternative.me canonical index (free, commercial-OK, fetched\n               server-side so no ad-blocker / CSP can break it).\n  - FALLBACK : Trinity HL composite (`hl_fear_greed_history`) only if\n               Alternative.me is unreachable.\nCache : 1h in-process (Alternative.me updates once daily).\nTier  : Pro (inclus overlay Market Intelligence v2)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/fx-rates - Get Fx Rates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/fx-rates",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "fx-rates"
              ]
            },
            "description": "USD → EUR/GBP/JPY/CHF rates (mid-market, ECB via Frankfurter.app).\n\nSprint 3.7 multi-devise - Trinity stores prices in USD, frontend converts\nruntime via these rates. Cache backend in-memory 1h (rate FX bouge peu).\n\nNo auth required (public reference data). Rate-limited via rate_limit_public."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/img - Proxy Logo Image",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/img?url=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "img"
              ],
              "query": [
                {
                  "key": "url",
                  "value": "value",
                  "description": "CoinGecko logo URL to proxy",
                  "disabled": false
                }
              ]
            },
            "description": "Same-origin proxy for crypto logos (canvas-safe, share-safe).\n\nPublic (no tier gate) - these are public token logos used as chart\ndecoration. Bearer/password auth is intentionally NOT applied: the endpoint\nis consumed by <img>/<canvas> tags that cannot carry auth headers, and a\nstandard per-IP limiter (30/min) would break the ~500-logo first paint of a\npremium tab. The actual abuse surface is closed by a strict host allowlist\n(CoinGecko/CMC CDN only - not an open proxy), no redirect following (SSRF),\na 2 MB size cap, a raster-only content-type allowlist (anti-XSS, no SVG),\nand a 30-day immutable cache (repeat loads hit CDN/browser, not the origin)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/liquidations-history - Derivatives liquidations history aggregated cross-exchange (long + short stacked)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/liquidations-history?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "liquidations-history"
              ],
              "query": [
                {
                  "key": "asset",
                  "value": "BTC",
                  "disabled": true
                },
                {
                  "key": "interval",
                  "value": "day",
                  "disabled": true
                },
                {
                  "key": "timeframe",
                  "value": "30d",
                  "disabled": true
                },
                {
                  "key": "include_btc_price",
                  "value": "true",
                  "disabled": true
                }
              ]
            },
            "description": "Historique des liquidations long + short empilées par bucket (day ou hour).\n\nSource : Coinalyze /liquidation-history aggregated across exchanges (PHASE_ALPHA whitelist 30 cryptos).\n\nConstraints :\n    - interval=hour only valid for timeframe in {7d, 30d}\n    - timeframe=max returns up to 5 years of daily history\n    - asset must be in PHASE_ALPHA_PERPS_MAP whitelist (otherwise 404)\n\nOptional include_btc_price=true (legacy param name - actually returns the SELECTED\nASSET's price overlay, not always BTC). JOINs screener_asset_ohlc_daily for daily\ncloses, linear interpolation between adjacent closes for hourly mode.\n\nTier gating : aligned on Derivatives tab parent (no per-endpoint gating -\nPhase γ.16 LIV founder 2026-05-24 corrected). The Derivatives tab itself is\naccessible to all logged-in users (same model as Overview/Performance/Trinity\nScore), so adding per-endpoint tier restrictions was inconsistent. Result :\nTeam tier user (founder) was incorrectly blocked on 90D/180D/1Y/MAX. Fix : drop\nthe endpoint-level gating ; rely on parent tab policy. CSV download (frontend)\nis the only Performance+/Team gated feature on this surface."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/rwa - Get Rwa Assets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/rwa",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "rwa"
              ]
            },
            "description": "Real-World Assets allée institutionnelle - Sprint 8 v23 (founder 2026-05-20).\n\nRenvoie la liste curée des tokens RWA (BlackRock BUIDL, Ondo OUSG/USDY,\nHashnote USYC, Janus Anemoy JTRSY/JAAA, Spiko EUTBL/EURSAFO, Apollo Figure\nHELOC, Superstate USTB, Securitize BCAP).\n\nDifférences vs `/assets` Market Intelligence main view :\n  - Bypass filtre v18 (vol < $1M OK, ces tokens trade OTC)\n  - KPIs adaptés : AUM + sponsor + asset_class + chain + APY + expense_ratio\n  - Pas de TCS ni 6 axes radar (modèle Trinity peu signifiant pour RWA)\n  - Pas de price_change_24h_pct (les prix sont pegged ~$1 stable)\n\nSource AUM : seedé manuel depuis press releases issuers (data/rwa_allowlist.py\nupdate trimestriel). Source prix : CoinGecko spot (les rares qui trade\npubliquement bougent < 0.5%, peg stable).\n\nPas de tier gating : RWA = free access (différenciateur produit Trinity vs\nconcurrents qui ne couvrent PAS cette niche institutional). Conversion tier\nse fait via Market Intelligence main view + indicateurs Trinity Exclusive."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/rwa-perps-overview - RWA Perps Dérivés - OI + Volume by category / exchange (HIP-3 perps)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/rwa-perps-overview?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "rwa-perps-overview"
              ],
              "query": [
                {
                  "key": "dimension",
                  "value": "category",
                  "disabled": true
                },
                {
                  "key": "timeframe",
                  "value": "1y",
                  "disabled": true
                }
              ]
            },
            "description": "Aggregated OI + Volume + market count + avg funding for RWA perps."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/rwa-universe-overview - RWA Universe Overview - stacked AUM by dimension (asset_class/sponsor/chain/yield)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/rwa-universe-overview?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "rwa-universe-overview"
              ],
              "query": [
                {
                  "key": "dimension",
                  "value": "asset_class",
                  "disabled": true
                },
                {
                  "key": "timeframe",
                  "value": "1y",
                  "disabled": true
                },
                {
                  "key": "top_n",
                  "value": "10",
                  "disabled": true
                }
              ]
            },
            "description": "Trinity RWA Universe Overview snapshot for premium 4-card grid.\n\nReturns AUM time-series stacked by dimension (asset_class / sponsor / chain / yield)\n+ per-group share % + delta metrics. Used by `RWAUniverseOverview` frontend cards.\n\nSource : screener_rwa_aum_history table (backfilled via Phase 1 sync_rwa_aum_history.py).\nTier gating : aligned with RWA tab parent (no extra restriction - accessible all logged-in)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/rwa/{canonical_slug} - Get Rwa Asset Detail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/rwa/:canonical_slug?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "rwa",
                ":canonical_slug"
              ],
              "query": [
                {
                  "key": "history_days",
                  "value": "90",
                  "description": "AUM history window (days)",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "canonical_slug",
                  "value": "value"
                }
              ]
            },
            "description": "RWA token cockpit drill-down - Sprint v25 Phase C.\n\nLit screener_rwa_meta (config + latest values) + screener_rwa_aum_snapshot\n(historique AUM/APY pour growth chart). Enrichi avec :\n  - description_fr/en générée selon asset_class + sponsor\n  - sponsor_official_url (target=_blank)\n  - contract_explorer_url (Etherscan, Stellar, Centrifuge, etc.)\n  - aum_history time-series pour line chart"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/sparklines - Get Sparklines",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/sparklines?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "sparklines"
              ],
              "query": [
                {
                  "key": "window",
                  "value": "7d",
                  "description": "Sparkline window. Valid: 24h, 7d, 30d, 1y",
                  "disabled": true
                },
                {
                  "key": "ids",
                  "value": "",
                  "description": "Comma-separated asset IDs (e.g. '1,2,3'). Max 50.",
                  "disabled": true
                }
              ]
            },
            "description": "Batch sparklines for a set of assets.\n\nSCAFFOLD : returns mock-shaped response with empty `data` array. Real\nimplementation will query `screener_asset_sparklines` JSONB column with\nasset_id IN (...) filter."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/spot-perps - Top 30 perps spot vs perp pressure map snapshot (Performance tier)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/spot-perps",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "spot-perps"
              ]
            },
            "description": "Live snapshot of Top 30 perps (mark + funding + OI from Hyperliquid WS)\naggregated with CoinGecko spot price + 24h change.\n\nCache : 30s in-process (kickoff doc §3 budget = 2,880 CoinGecko calls/mo).\nTier  : Performance (kickoff doc §2 - killer feature institutional)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/spot-perps/funding-heatmap - Funding rate heatmap - 30 perps × last 24h (6h windows)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/spot-perps/funding-heatmap",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "spot-perps",
                "funding-heatmap"
              ]
            },
            "description": "Returns 30 perps × 4 windows (6h each) funding rate heatmap matrix.\n\nCache : 5 min in-process (kickoff doc §3 budget - keeps us under HL API\nrate limit even with multiple concurrent users on the dashboard).\nTier  : Performance (kickoff doc §2 - Onglet 4 killer feature, paired with\n/spot-perps endpoint).\n\nBug 1 hotfix Johann LIV 2026-05-27 :\n  - Previously frontend showed \"Coming v1.1\" placeholder because endpoint\n    was missing (sub-agent E in Phase 0 had invented the endpoint name in\n    the frontend hook without backend wiring).\n  - Now fully implemented : fetches HL fundingHistory in parallel (10 concurrent\n    semaphore) for the locked Top 30 perps, buckets into 6h UTC windows."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/stablecoin-overview - Stablecoins Overview - market cap by asset / issuer / chain / reference currency",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/stablecoin-overview?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "stablecoin-overview"
              ],
              "query": [
                {
                  "key": "dimension",
                  "value": "asset",
                  "disabled": true
                },
                {
                  "key": "timeframe",
                  "value": "1y",
                  "disabled": true
                },
                {
                  "key": "top_n",
                  "value": "20",
                  "disabled": true
                }
              ]
            },
            "description": "Aggregated stablecoin market cap by dimension. Cached 60s."
          },
          "response": []
        }
      ]
    },
    {
      "name": "market-intelligence-tokenized",
      "description": "Trinity Insights REST API - endpoints under the market-intelligence-tokenized tag.",
      "item": [
        {
          "name": "GET /api/v1/market-intelligence/tokenized/asset/{slug} - Tokenized asset drill-down detail (Performance+ tier required)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/tokenized/asset/:slug?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "tokenized",
                "asset",
                ":slug"
              ],
              "query": [
                {
                  "key": "history_days",
                  "value": "30",
                  "disabled": true
                },
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Drill-down asset detail page.\n\nReturns metadata + latest snapshot + history N days.\n\nTier gating : Performance + Team only (Pro/Free see upgrade tooltip)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/tokenized/asset/{slug}/ohlc - Tokenized asset OHLC candles (HIP-3 candleSnapshot OR CoinGecko OHLC dispatch)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/tokenized/asset/:slug/ohlc?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "tokenized",
                "asset",
                ":slug",
                "ohlc"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "7d",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "OHLC daily candles pour tokenized asset cockpit chart.\n\nPhase γ.15 (2026-05-23) - founder directive : Candle Chart Price premium\nsur cockpit detail page tokenized (identique crypto rubric #7).\n\nDispatch source par asset :\n- issuer=\"Hyperliquid HIP-3\" + hip3_dex → POST HL /info candleSnapshot\n- cg_id présent (non-null) → CG /coins/{cg_id}/ohlc\n- Sinon → sync_status=\"unsupported\" (commodity sans CG, pre-IPO sans listing public)\n\nTier gating : Pro+ (incl. Performance/Team). Free voit chart limité Treasury Top 5.\n\nCompliance AMF : candles déterministes O/H/L/C, pas d'indicator Trinity proprio."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/tokenized/compliance-map - Compliance map snapshot 4-quadrants (Free tier visible)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/tokenized/compliance-map?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "tokenized",
                "compliance-map"
              ],
              "query": [
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Compliance map 4-quadrants visualization :\nUS Permitted / EU Permitted / KYC Required / Permissionless.\n\nFree tier visible (snapshot teaser)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/tokenized/premium-watch - Live cross-wrapper premium watch (top N)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/tokenized/premium-watch?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "tokenized",
                "premium-watch"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "10",
                  "description": "Top N rows",
                  "disabled": true
                },
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Get Live Premium Watch - cross-wrapper premium/discount across wrappers\nof the same underlying.\n\nTier gating :\n- Free : top 5 snapshot\n- Pro+ : full top N"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/market-intelligence/tokenized/universe - Universe of tokenized markets assets (tier-gated)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/market-intelligence/tokenized/universe?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "market-intelligence",
                "tokenized",
                "universe"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "value",
                  "description": "Filter by asset type",
                  "disabled": true
                },
                {
                  "key": "chain",
                  "value": "value",
                  "description": "Filter by chain (solana, ethereum, etc.)",
                  "disabled": true
                },
                {
                  "key": "compliance",
                  "value": "value",
                  "description": "Filter by compliance tag (us_permitted, eu_permitted, kyc_required, permissionless)",
                  "disabled": true
                },
                {
                  "key": "issuer",
                  "value": "value",
                  "description": "Filter by issuer name",
                  "disabled": true
                },
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Get the tokenized markets universe (assets with latest snapshot data).\n\nTier gating :\n- Free : Treasury & MM Top 5 read-only\n- Pro (=Founding) + Performance + Team : all assets + filters"
          },
          "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": "mcp-api-keys",
      "description": "Trinity Insights REST API - endpoints under the mcp-api-keys tag.",
      "item": [
        {
          "name": "DELETE /api/v1/mcp/api-keys/{key_id} - Revoke an MCP API key",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/api-keys/:key_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "api-keys",
                ":key_id"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "value"
                }
              ]
            },
            "description": "Revoke an MCP API key by id.\n\nIdempotent: a second revoke on the same key returns 404 (it is no\nlonger active). The MCP server picks up the revocation within the\n60-second cache TTL."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/mcp/api-keys - List my MCP API keys",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/api-keys",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "api-keys"
              ]
            },
            "description": "List every MCP API key the current user has ever created.\n\nActive keys come first, then revoked/expired keys, both sorted by\ncreation time desc. The plaintext is never included."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/mcp/api-keys/analytics - My Trinity Data usage analytics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/api-keys/analytics?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "api-keys",
                "analytics"
              ],
              "query": [
                {
                  "key": "days",
                  "value": "30",
                  "disabled": true
                }
              ]
            },
            "description": "Usage analytics for the developer console.\n\nSourced from the call log (`mcp_tool_calls`) - both MCP tool calls and REST\nAPI calls are logged (one Trinity Data key for both). `days` is clamped to 1..90."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/mcp/api-keys/usage - My Trinity Data credit usage",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/api-keys/usage",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "api-keys",
                "usage"
              ]
            },
            "description": "Trinity Data credit balance for the current user.\n\nRead-only: per-key monthly used/remaining (+ reset date) for metered keys,\nplus the aggregate non-expired top-up balance. An empty `keys` list means no\nTrinity Data plan is provisioned yet (credit metering disabled)."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/mcp/api-keys - Create a new MCP API key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/api-keys",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "api-keys"
              ]
            },
            "description": "Issue a new MCP API key.\n\nThe plaintext value (`key_plaintext`) is included in the 201 response\nbody and shown to the user once. It is HMAC-SHA256 hashed\nserver-side with a secret pepper before persistence; the plaintext is\nnever logged, mailed, or stored anywhere else.\n\nTier enforcement:\n    - free → 403 (cannot create MCP keys)\n    - founding/pro → up to 5 active keys, 1000 req/min\n    - performance → up to 10 active keys, 10000 req/min\n    - team → up to 20 active keys, 10000 req/min",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/mcp/api-keys/{key_id}/rotate - Rotate an MCP API key",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/mcp/api-keys/:key_id/rotate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "mcp",
                "api-keys",
                ":key_id",
                "rotate"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "value"
                }
              ]
            },
            "description": "Rotate a key: mint a new secret carrying the SAME plan (tier, scopes,\nrate limit, credits + current period) and revoke the old one, atomically.\nThe new plaintext is shown once. Does not count against the key limit or\nrefill credits."
          },
          "response": []
        }
      ]
    },
    {
      "name": "narrative-intelligence",
      "description": "Trinity Insights REST API - endpoints under the narrative-intelligence tag.",
      "item": [
        {
          "name": "GET /api/v1/narrative-intelligence/catalog - List Narrative Catalog",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/narrative-intelligence/catalog?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "narrative-intelligence",
                "catalog"
              ],
              "query": [
                {
                  "key": "category",
                  "value": "value",
                  "description": "Filter by category (attention/media/...)",
                  "disabled": true
                },
                {
                  "key": "search",
                  "value": "value",
                  "description": "Search query",
                  "disabled": true
                }
              ]
            },
            "description": "List all Narrative Intelligence metrics catalog entries.\n\nPublic endpoint - returns full catalog metadata.\nData access gated separately per metric via /metrics/{id}/data."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/narrative-intelligence/categories - List Narrative Categories",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/narrative-intelligence/categories",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "narrative-intelligence",
                "categories"
              ]
            },
            "description": "List all Narrative Intelligence categories (6 sub-families Codex-style).\n\nCounts are static for Sprint 1 STAGED - will be derived from catalog at\nPhase 2 wirage when catalog-attention.ts + future catalogs are integrated."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/narrative-intelligence/metrics/{metric_id}/data - Get Narrative Metric Data",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/narrative-intelligence/metrics/:metric_id/data?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "narrative-intelligence",
                "metrics",
                ":metric_id",
                "data"
              ],
              "query": [
                {
                  "key": "timeframe",
                  "value": "all",
                  "description": "Timeframe: 90d, 180d, 1y, 2y, 5y, 10y, 22y, all",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Get time series data for a Narrative 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": "newsletter",
      "description": "Trinity Insights REST API - endpoints under the newsletter tag.",
      "item": [
        {
          "name": "GET /api/v1/newsletter/resubscribe - Resubscribe",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/newsletter/resubscribe?token=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "newsletter",
                "resubscribe"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "value",
                  "disabled": false
                }
              ]
            },
            "description": "Re-subscribe the user behind this send-token (symmetric to /unsubscribe).\n\nUsed by the \"Vous avez changé d'avis ?\" link on the unsubscribe confirmation\npage (same token), AND can be hand-shared with users who unsubscribed by\naccident. Idempotent : flipping back on an already-opted-in user is a no-op.\nThe resubscribe page does NOT offer re-unsubscribe (each weekly brief\nalready carries its own unsubscribe link)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/newsletter/unsubscribe - Unsubscribe",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/newsletter/unsubscribe?token=value",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "newsletter",
                "unsubscribe"
              ],
              "query": [
                {
                  "key": "token",
                  "value": "value",
                  "disabled": false
                }
              ]
            },
            "description": "Mark the user behind this send-token opted out of the Weekly Brief.\n\nIdempotent : re-clicking does nothing harmful. Invalid/unknown tokens get the\nsame friendly page (no enumeration leak). Test sends (user_id NULL) flip nobody.\nThe page links back to /resubscribe with the SAME token so an accidental\nclick is reversible in 1 click."
          },
          "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/cohort-conviction/{slug} - Get Cohort Conviction",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/cohort-conviction/:slug?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "cohort-conviction",
                ":slug"
              ],
              "query": [
                {
                  "key": "w",
                  "value": "150",
                  "description": "Onboarding window (days). Presets 30/90/150/180/365 sit on band edges (exact N0).",
                  "disabled": true
                },
                {
                  "key": "b",
                  "value": "99",
                  "description": "Days before the halving the cohort window opens (default 99).",
                  "disabled": true
                },
                {
                  "key": "censor",
                  "value": "true",
                  "description": "Right-censor older cohorts to the youngest epoch's follow-up horizon.",
                  "disabled": true
                },
                {
                  "key": "weighting",
                  "value": "btc",
                  "description": "btc = supply weighting ; usd = realized cap (cost-basis).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Cohort Conviction - survival of new-buyer cohorts per halving epoch.\n\nReturns, per epoch cohort, the Kaplan-Meier survival curve S(t) (``survival``),\nits 30-day rolling decay rate (``decay``), or a 0-100 conviction score\n(``conviction``), over a days-post-onboarding horizon. ``slug`` is one of the\nfour catalog charts; the engine view is derived internally. Tier gating\nmirrors ``/metrics/{id}/data``."
          },
          "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": "GET /api/v1/onchain/urpd/{slug}/{date} - Get Onchain Urpd Payload",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/urpd/:slug/:date?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "urpd",
                ":slug",
                ":date"
              ],
              "query": [
                {
                  "key": "bins",
                  "value": "1",
                  "description": "Optional server-side log-bin aggregation. When provided, the raw buckets (typically 75k-80k per snapshot, ~8 MB JSON) are pre-aggregated into N log-spaced price bins (typically 250 for snapshot charts, 600 for heatmap rows). Reduces payload size ~160x and frontend render time to near-zero. Default = no aggregation (backward compat for legacy callers). Sprint URPD Perf 2026-05-26.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                },
                {
                  "key": "date",
                  "value": "value"
                }
              ]
            },
            "description": "Return the URPD payload (2D DataFrame as JSONB) for (slug, date).\n\nSprint γ B4 legacy architecture endpoint (Phase 1 nuit 1/4) - see\n``memory/b4_legacy_architecture_kickoff_2026-05-20.md`` for the full\ndesign. Serves the 11 URPD-mode metrics whose computes return\n``pd.DataFrame`` 2D rather than time-indexed ``pd.Series``. Data is\nwritten by ``_sync_metric_urpd_payload`` in ``sync_onchain_brk.py``\n(Phase 2 nuit 2/4 onwards) into the ``on_chain_metric_payload`` table\n(migration 035).\n\nTier gating mirrors ``/metrics/{id}/data`` :\n\n  - Tier check via ``ONCHAIN_TIER_MAP[slug]`` (5 pro / 6 performance ;\n    no Free-tier URPD metric - #279 ``key-cost-basis-originals`` is the\n    Free hero but it ships as a regular Series multi-line wrapper,\n    served by ``/metrics/{id}/data``).\n  - OG image render bypass via ``X-OG-Render-Secret`` header.\n  - 403 on tier mismatch ; 404 if slug is unknown or payload row missing.\n\nPath parameters\n---------------\nslug : str\n    Canonical metric_id (must be in ``URPD_MODE_SLUGS``).\ndate : str\n    ISO date \"YYYY-MM-DD\" - typically today for snapshot mode, or a\n    date from the weekly sampling window for heatmap mode.\n\nResponse shape\n--------------\nJSON object ::\n\n    {\n      \"metric_id\": str,\n      \"date\": str,                # ISO date as requested\n      \"payload\": {                # the JSONB row from on_chain_metric_payload\n         \"date\": str,\n         \"cohort\": str,           # \"all\" | \"sth\" | \"lth\" | \"21_age_bands\"\n         \"shape\": str,            # \"snapshot\" | \"heatmap_row\"\n         \"buckets\": [...]         # list of bucket dicts (shape depends on chart)\n         \"computed_at\": str       # ISO timestamp\n      },\n      \"computed_at\": str          # ISO timestamp of the cache row\n    }"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/urpd/{slug}/clusters/{date} - Get Onchain Urpd Clusters",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/urpd/:slug/clusters/:date?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "urpd",
                ":slug",
                "clusters",
                ":date"
              ],
              "query": [
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                },
                {
                  "key": "max_clusters",
                  "value": "7",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                },
                {
                  "key": "date",
                  "value": "value"
                }
              ]
            },
            "description": "Return auto-detected significant URPD clusters with confidence.\n\nSprint δ #384 - EXCLUSIVE Trinity proprietary algorithm. Recipe-leak\nguard SOP_MCP_RECIPE_LEAK v1.0 applies. Algorithm details are not\nexposed in API responses - only the cluster annotations and confidence.\n\nTier gating : forced to ``performance`` (regardless of ONCHAIN_TIER_MAP\ndeclaration) because this endpoint is exclusive to the cycle-aware chart.\nOG render bypass via ``X-OG-Render-Secret`` header.\n\nPath parameters\n---------------\nslug : str\n    Must be ``trinity-urpd-cycle-aware`` (other slugs return 404).\ndate : str\n    ISO date \"YYYY-MM-DD\" - typically ``latest`` resolved by frontend.\n\nQuery parameters\n----------------\nlanguage : \"fr\" | \"en\"\n    Localization for cluster labels.\nmax_clusters : int\n    Maximum number of cluster annotations returned (default 7).\n\nResponse shape\n--------------\nJSON object ::\n\n    {\n      \"metric_id\": \"trinity-urpd-cycle-aware\",\n      \"date\": \"YYYY-MM-DD\",\n      \"spot_price\": float,\n      \"cycle_phase\": str,\n      \"cycle_phase_color\": str,\n      \"clusters\": [\n        {\n          \"price_level\": float,\n          \"delta_btc\": float,\n          \"cluster_type\": \"accumulation\" | \"distribution\" | \"resistance\" | \"support\",\n          \"confidence\": float,\n          \"label\": str\n        }\n      ],\n      \"color_map\": { \"<phase>\": \"<hex>\" },\n      \"compliance\": { ... }\n    }"
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/urpd/{slug}/dates - Get Onchain Urpd Dates",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/urpd/:slug/dates?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "urpd",
                ":slug",
                "dates"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "400",
                  "description": "Max dates returned, most recent first (default 400 - covers heatmap weekly 5y = 261 rows).",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Return the list of available dates for a URPD slug - no payloads.\n\nSprint URPD Perf 2026-05-26 - lightweight companion to ``/urpd/{slug}/range``.\nPre-Sprint the frontend hook ``useURPDAvailableDates`` called ``/range?limit=20``\njust to extract the date list, transferring 20 rows × ~8 MB each = ~160 MB\nof payload data ultimately discarded. This endpoint returns only the dates\n(single column SELECT) in ~10 ms with a sub-KB response.\n\nResponse shape ::\n\n    {\"metric_id\": str, \"dates\": [\"YYYY-MM-DD\", ...], \"count\": int}\n\nDates are returned in DESC order (most recent first). Frontend sorts ASC\nfor timeline rendering as needed."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/urpd/{slug}/latest_date - Get Onchain Urpd Latest Date",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/urpd/:slug/latest_date",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "urpd",
                ":slug",
                "latest_date"
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Return the most recent date available for a URPD-mode slug.\n\nSprint URPD Perf 2026-05-26 - lightweight companion to ``/urpd/{slug}/{date}``.\nPre-Sprint the frontend hook ``useOnChainURPDPayload`` resolved \"latest\" by\ncalling ``/range?limit=1000`` (potentially returning ~2.4 GB JSON theoretical)\njust to extract the last date. This endpoint returns ``{date}`` only in\n<10 ms with a single ``SELECT MAX(date)`` query.\n\nResponse shape ::\n\n    {\"metric_id\": str, \"date\": str | null}\n\nReturns ``date: null`` when no rows exist for the slug."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/onchain/urpd/{slug}/range - Get Onchain Urpd Payload Range",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/onchain/urpd/:slug/range?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "onchain",
                "urpd",
                ":slug",
                "range"
              ],
              "query": [
                {
                  "key": "from_date",
                  "value": "value",
                  "description": "Start date YYYY-MM-DD (inclusive)",
                  "disabled": true
                },
                {
                  "key": "to_date",
                  "value": "value",
                  "description": "End date YYYY-MM-DD (inclusive)",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "400",
                  "description": "Max rows returned (default 400)",
                  "disabled": true
                },
                {
                  "key": "bins",
                  "value": "1",
                  "description": "Optional server-side log-bin aggregation applied to each row's buckets. Critical for heatmap charts (#281, #282, #284) that fetch 8+ rows × ~2.4 MB each - without aggregation a single range call can hit 502 timeouts. Recommended: bins=600 for heatmap rendering. Sprint URPD Perf 2026-05-26.",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Return all URPD payload rows for a slug across a date range.\n\nSprint γ B4 legacy architecture Phase 3 (frontend nuit 3/4) - companion\nto ``/urpd/{slug}/{date}`` snapshot endpoint. Used by heatmap charts\n(#281, #282, #284) which need many date rows to build the 2D matrix\n(time × price_floor × value). Single-snapshot charts (#273-#278, #280,\n#283) can ignore this endpoint and stick to ``/urpd/{slug}/{date}``.\n\nTier gating + OG render bypass mirror ``/urpd/{slug}/{date}``.\n\nQuery parameters\n----------------\nfrom_date, to_date : str | None\n    Optional ISO date filters (inclusive). If omitted, returns all\n    rows up to ``limit``.\nlimit : int\n    Max rows returned (default 400 ; 260 covers weekly 5y sampling\n    with margin).\n\nResponse shape\n--------------\nJSON object ::\n\n    {\n      \"metric_id\": str,\n      \"from_date\": str | null,\n      \"to_date\": str | null,\n      \"rows\": [\n         {\n           \"date\": str,\n           \"payload\": {...},  # snapshot or heatmap_row shape\n           \"computed_at\": str\n         },\n         ...\n      ],\n      \"count\": int\n    }"
          },
          "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}/{metric_id}/intraday - Get Metric Intraday",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/:asset/:metric_id/intraday?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                ":asset",
                ":metric_id",
                "intraday"
              ],
              "query": [
                {
                  "key": "interval",
                  "value": "4h",
                  "description": "5m | 15m | 1h | 4h | 12h",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "1500",
                  "description": "Max candles returned",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                },
                {
                  "key": "metric_id",
                  "value": "value"
                }
              ]
            },
            "description": "Indicator computed on intraday candles (pi_klines archive).\n\nBAR_COMPUTE metrics run the Python calculator on the intraday bars\n(TradingView period convention) ; DAILY_JOIN metrics step-join the\ndaily indicator value onto each bar of its UTC day."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/price-intelligence/{asset}/klines - Get Intraday Klines",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/price-intelligence/:asset/klines?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "price-intelligence",
                ":asset",
                "klines"
              ],
              "query": [
                {
                  "key": "interval",
                  "value": "1D",
                  "description": "1h | 4h | 12h | 1D | 1W | 1M",
                  "disabled": true
                },
                {
                  "key": "from",
                  "value": "1",
                  "description": "Unix timestamp (seconds, UTC) - lower bound inclusive",
                  "disabled": true
                },
                {
                  "key": "to",
                  "value": "1",
                  "description": "Unix timestamp (seconds, UTC) - upper bound inclusive",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "1000",
                  "description": "Max candles returned (default 1000)",
                  "disabled": true
                }
              ],
              "variable": [
                {
                  "key": "asset",
                  "value": "value"
                }
              ]
            },
            "description": "Get intraday OHLCV candles for an asset at a given interval.\n\nMulti-source archive (Binance + Bybit + OKX + Coinbase fallback)\npersisted in `pi_klines` partitioned table. Sprint A.bis.\n\nFounder LIV 2026-06-09 : pattern TradingView candle interval picker."
          },
          "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 Kraken + Binance + CoinGecko, merged.\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
                },
                {
                  "key": "view",
                  "value": "value",
                  "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).\n\n``view=journal`` additionally serves the indication lifecycle view\nreconstructed from the append-only journal (statuses presumed /\nvalidated / invalidated + superseded_by + first_seen) - additive field,\nthe legacy payload is unchanged.\n\nRecipe-leak guard (2026-08-01) : per-point ``metadata`` is sanitised\nfor non-admins - sub_scores aggregated by category (same rule as\n/latest), pipeline reduced to product outputs (allocation, regime).\nAdmin keeps the raw JSONB."
          },
          "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/{indicator}/page-payload - Get Indicator Page Payload",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/scores/:indicator/page-payload",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "scores",
                ":indicator",
                "page-payload"
              ],
              "variable": [
                {
                  "key": "indicator",
                  "value": "value"
                }
              ]
            },
            "description": "Self-contained premium page payload (weekly series + walk-forward\nmarkers + meta + daily preliminary), built hourly by the pipeline cron\n(scripts/refresh_tcti_v2_payload.py) into indicator_page_payloads.\n\nAuth required; tier gate mirrors the indicator's tier_min (same rule as\n/history). 404 when the payload has not been built yet - the Next route\nfalls back to its embedded snapshot in that case."
          },
          "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": "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": "team",
      "description": "Trinity Insights REST API - endpoints under the team tag.",
      "item": [
        {
          "name": "DELETE /api/v1/team/members/{member_id} - Remove Member",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/team/members/:member_id",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "team",
                "members",
                ":member_id"
              ],
              "variable": [
                {
                  "key": "member_id",
                  "value": "value"
                }
              ]
            },
            "description": "Remove a member from the owner's team (cannot remove self / the owner)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/team/invite/{token} - Preview Invite",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/team/invite/:token",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "team",
                "invite",
                ":token"
              ],
              "variable": [
                {
                  "key": "token",
                  "value": "value"
                }
              ]
            },
            "description": "Preview an invitation by token (public - for the accept landing page).\n\nReturns only non-sensitive fields so the page can render\n\"{inviter} invited you to join {team}\". ``user`` is accepted but optional\n(anonymous visitors can see the preview before signing in)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/team/members - List Members",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/team/members",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "team",
                "members"
              ]
            },
            "description": "List the owner's team members + pending invites (owner / team tier)."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/team/invite - Create Invite",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/team/invite",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "team",
                "invite"
              ]
            },
            "description": "Invite a teammate by email (owner / team tier only).",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        },
        {
          "name": "POST /api/v1/team/invite/{invite_id}/revoke - Revoke Invite",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/team/invite/:invite_id/revoke",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "team",
                "invite",
                ":invite_id",
                "revoke"
              ],
              "variable": [
                {
                  "key": "invite_id",
                  "value": "value"
                }
              ]
            },
            "description": "Revoke a pending invitation (owner / team tier only)."
          },
          "response": []
        },
        {
          "name": "POST /api/v1/team/invite/{token}/accept - Accept Invite",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/team/invite/:token/accept",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "team",
                "invite",
                ":token",
                "accept"
              ],
              "variable": [
                {
                  "key": "token",
                  "value": "value"
                }
              ]
            },
            "description": "Accept an invitation and join the team (authenticated)."
          },
          "response": []
        }
      ]
    },
    {
      "name": "treasuries",
      "description": "Trinity Insights REST API - endpoints under the treasuries tag.",
      "item": [
        {
          "name": "GET /api/v1/treasuries/public - Get Treasuries Hub",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/treasuries/public",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "treasuries",
                "public"
              ]
            },
            "description": "Latest snapshot of all corporate BTC treasuries, ranked (public hub feed)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/treasuries/public/{slug} - Get Treasury Entity",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/treasuries/public/:slug",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "treasuries",
                "public",
                ":slug"
              ],
              "variable": [
                {
                  "key": "slug",
                  "value": "value"
                }
              ]
            },
            "description": "Full public profile for one treasury entity (entity page feed)."
          },
          "response": []
        },
        {
          "name": "GET /api/v1/treasuries/public/sparklines - Get Treasuries Sparklines",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/treasuries/public/sparklines",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "treasuries",
                "public",
                "sparklines"
              ]
            },
            "description": "90-day holdings mini-series per company, downsampled to ~30 points.\n\nSingle batch payload (~20 KB) feeding the dashboard explorer's inline\nsparklines - values only; the client normalises min/max locally."
          },
          "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": "trinity-composites",
      "description": "Trinity Insights REST API - endpoints under the trinity-composites tag.",
      "item": [
        {
          "name": "GET /api/v1/trinity-composites/live - Get Trinity Composites Live",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/trinity-composites/live?",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "trinity-composites",
                "live"
              ],
              "query": [
                {
                  "key": "language",
                  "value": "fr",
                  "disabled": true
                }
              ]
            },
            "description": "Live snapshot of the 8 Trinity composite indicators.\n\nPublic-facing alias of /api/v1/insights/cross-rubric/composites-snapshot.\n\nTier gating: free/founding → 403. Pro/Performance/Team → full.\nRecipe-leak guarded: NEVER returns sub_scores or components."
          },
          "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": "GET /api/v1/users/me/newsletter-preferences - Get Newsletter Preferences",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/newsletter-preferences",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "newsletter-preferences"
              ]
            },
            "description": "Read the authenticated user's Weekly Brief preferences."
          },
          "response": []
        },
        {
          "name": "PATCH /api/v1/users/me/newsletter-preferences - Update Newsletter Preferences",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/users/me/newsletter-preferences",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "users",
                "me",
                "newsletter-preferences"
              ]
            },
            "description": "Update the authenticated user's Weekly Brief preferences.\n\nSending `newsletter_opt_in=true` after an unsubscribe also clears\n`newsletter_unsubscribed_at` (re-subscription via the account page -\nsymétrique au lien email /api/v1/newsletter/resubscribe). Founder iter 7.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": []
        }
      ]
    }
  ]
}