{
  "info": {
    "_postman_id": "operalta-api-v1",
    "name": "Operalta API",
    "description": "Operalta is a conversational memory platform for startups and investors. This collection covers all public API endpoints.\n\n**Setup:**\n1. Create an API key in Operalta Settings \u2192 API Keys\n2. Set `api_key` environment variable to your `op_...` token\n3. Set `company_id` to your company UUID\n4. Set `base_url` to `https://www.operalta.ai`\n\nRequests marked as browser-session routes do not use the Bearer token. For those, copy the full authenticated `Cookie` header from a logged-in Operalta browser session.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://www.operalta.ai",
      "type": "string"
    },
    {
      "key": "api_key",
      "value": "op_your_api_key_here",
      "type": "string"
    },
    {
      "key": "company_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "deal_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "list_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "artifact_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "document_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "stream_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "run_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "room_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "tracked_issue_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "grant_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "sync_target_id",
      "value": "",
      "type": "string"
    },
    {
      "key": "connection_id",
      "value": "",
      "type": "string"
    }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "Company",
      "item": [
        {
          "name": "Get Company Context",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/context?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "context"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Returns the company profile: name, industry, stage, team size, description, and other context fields."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"exists\": true,\n  \"contextType\": \"startup\",\n  \"context\": {\n    \"name\": \"Acme Corp\",\n    \"oneLiner\": \"AI-powered supply chain optimization\",\n    \"description\": \"We help manufacturers reduce waste...\",\n    \"website\": \"https://acme.com\",\n    \"founded\": \"2022\",\n    \"headquarters\": \"San Francisco, CA\",\n    \"industry\": \"Supply Chain / AI\",\n    \"stage\": \"Series A\",\n    \"teamSize\": \"28\",\n    \"businessModel\": \"B2B SaaS\",\n    \"targetCustomer\": \"Mid-market manufacturers\",\n    \"competitors\": \"Llamasoft, Logility\",\n    \"keyDifferentiator\": \"Real-time ML forecasting with zero integration\",\n    \"marketSegment\": \"Manufacturing\",\n    \"currentFocus\": \"Enterprise sales expansion\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Get Company Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/metrics?companyId={{company_id}}&period=current",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "metrics"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "period",
                  "value": "current",
                  "description": "Optional. Supported value: current"
                }
              ]
            },
            "description": "Returns the latest live actual KPI metrics. This route is intentionally live-only, not a report snapshot surface."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"metrics\": {\n    \"mrr\": 125000,\n    \"arr\": 1500000,\n    \"runway\": 18,\n    \"headcount\": 28,\n    \"customer_count\": 42,\n    \"churn_rate\": 2.1,\n    \"mrr_growth\": 12.5,\n    \"burn\": 180000,\n    \"nrr\": 118,\n    \"ltv\": 48000,\n    \"cac\": 8500,\n    \"ltv_cac_ratio\": 5.6\n  },\n  \"source\": \"company_metrics_actual\",\n  \"mode\": \"live_actual\",\n  \"periodKey\": \"2026-01\",\n  \"period\": \"current\",\n  \"asOf\": \"2026-01-15T10:30:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Get Company Structure",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/structure?companyId={{company_id}}&format=json",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "structure"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "format",
                  "value": "json",
                  "description": "markdown | json"
                },
                {
                  "key": "tree_type",
                  "value": "all",
                  "description": "all | products | organization | budgets",
                  "disabled": true
                }
              ]
            },
            "description": "Returns the organizational structure as markdown or parsed JSON trees."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"metadata\": {\n    \"id\": \"uuid\",\n    \"name\": \"Acme Inc\",\n    \"stage\": \"seed\"\n  },\n  \"content\": \"## Products\\n\\n- Core API\",\n  \"trees\": {\n    \"products\": [\n      {\n        \"id\": \"core-api\",\n        \"name\": \"Core API\",\n        \"children\": [\n          {\n            \"id\": \"feature-x\",\n            \"name\": \"Feature X\"\n          }\n        ]\n      }\n    ],\n    \"organization\": [],\n    \"budgets\": []\n  }\n}"
            }
          ]
        },
        {
          "name": "Update Company Structure",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"markdown\": \"# Structure\\n\\n## Products\\n- Product A\\n  - Feature X\\n\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/company/structure",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "structure"
              ]
            },
            "description": "Replaces the company structure markdown."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"companyId\": \"uuid\",\n  \"updatedAt\": \"2026-02-01T12:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Get Structure Node",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/structure/node?companyId={{company_id}}&node_id=product-a&include=decisions,metrics",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "structure",
                "node"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "node_id",
                  "value": "product-a"
                },
                {
                  "key": "include",
                  "value": "decisions,metrics",
                  "description": "decisions, metrics, entries (comma-separated)"
                }
              ]
            },
            "description": "Returns context for a specific node in the structure tree."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"node\": {\n    \"id\": \"product-a\",\n    \"name\": \"Product A\",\n    \"children\": [\n      {\n        \"id\": \"feature-x\",\n        \"name\": \"Feature X\"\n      }\n    ]\n  },\n  \"path\": [\"product-a\"],\n  \"decisions\": [\n    {\n      \"id\": \"uuid\",\n      \"content\": \"Decided to sunset legacy API by Q2\",\n      \"created_at\": \"2026-01-12T09:00:00Z\"\n    }\n  ],\n  \"metrics\": {\n    \"adoption_rate\": 72,\n    \"nps_score\": 48\n  },\n  \"entries\": [\n    {\n      \"id\": \"uuid\",\n      \"content\": \"Roadmap updated\",\n      \"type\": \"decision\"\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Contacts",
      "item": [
        {
          "name": "List Company Contacts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/contacts?owner_type=company&owner_id={{company_id}}&q=alice&limit=20&offset=0",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "contacts"
              ],
              "query": [
                {
                  "key": "owner_type",
                  "value": "company",
                  "description": "Bearer API keys support company owners."
                },
                {
                  "key": "owner_id",
                  "value": "{{company_id}}"
                },
                {
                  "key": "q",
                  "value": "alice",
                  "disabled": true
                },
                {
                  "key": "limit",
                  "value": "20",
                  "disabled": true
                },
                {
                  "key": "offset",
                  "value": "0",
                  "disabled": true
                }
              ]
            },
            "description": "Lists contacts for a company owner. Bearer API keys support `owner_type=company`; network-scoped contact reads stay browser-session only."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"contacts\": [\n    {\n      \"id\": \"uuid\",\n      \"personId\": \"uuid\",\n      \"email\": \"alice@example.com\",\n      \"name\": \"Alice Martin\",\n      \"phone\": null,\n      \"linkedinUrl\": \"https://www.linkedin.com/in/alice-martin\",\n      \"avatarUrl\": null,\n      \"profileId\": null,\n      \"source\": \"manual\",\n      \"tags\": [\n        \"founder\"\n      ],\n      \"createdAt\": \"2026-04-02T10:00:00Z\",\n      \"updatedAt\": \"2026-04-02T10:00:00Z\",\n      \"lastInteractionAt\": null,\n      \"companyRoles\": [\n        {\n          \"companyName\": \"Acme\",\n          \"companyId\": \"uuid\",\n          \"role\": \"founder\",\n          \"contextType\": \"startup\",\n          \"vertical\": \"saas\",\n          \"stage\": \"seed\"\n        }\n      ],\n      \"companyName\": \"Acme\",\n      \"companyDomain\": \"acme.com\",\n      \"accountId\": null,\n      \"enriched\": true,\n      \"investorType\": null,\n      \"expertise\": [\n        \"b2b\"\n      ],\n      \"location\": \"Paris\"\n    }\n  ],\n  \"total\": 1,\n  \"hasMore\": false\n}"
            }
          ]
        },
        {
          "name": "Create Company Contact",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"owner_type\": \"company\",\n  \"owner_id\": \"{{company_id}}\",\n  \"email\": \"alice@example.com\",\n  \"name\": \"Alice Martin\",\n  \"linkedin_url\": \"https://www.linkedin.com/in/alice-martin\",\n  \"tags\": [\n    \"founder\"\n  ],\n  \"source\": \"manual\",\n  \"company_name\": \"Acme\",\n  \"website_domain\": \"https://acme.com\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/contacts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "contacts"
              ]
            },
            "description": "Creates or reuses a company contact. Bearer API keys support `owner_type=company`; at least one of `email` or `linkedin_url` is required."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"contact\": {\n    \"id\": \"uuid\",\n    \"personId\": \"uuid\",\n    \"email\": \"alice@example.com\",\n    \"name\": \"Alice Martin\",\n    \"phone\": null,\n    \"linkedinUrl\": \"https://www.linkedin.com/in/alice-martin\",\n    \"avatarUrl\": null,\n    \"profileId\": null,\n    \"source\": \"manual\",\n    \"tags\": [\n      \"founder\"\n    ],\n    \"createdAt\": \"2026-04-02T10:00:00Z\",\n    \"updatedAt\": \"2026-04-02T10:00:00Z\",\n    \"lastInteractionAt\": null,\n    \"companyRoles\": [],\n    \"companyName\": \"Acme\",\n    \"companyDomain\": \"acme.com\",\n    \"accountId\": null,\n    \"enriched\": false,\n    \"investorType\": null,\n    \"expertise\": [],\n    \"location\": null\n  },\n  \"existed\": false\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Streams (Memory)",
      "item": [
        {
          "name": "List Strategic Decisions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/streams/decisions?companyId={{company_id}}&limit=10",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "streams",
                "decisions"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "limit",
                  "value": "10"
                },
                {
                  "key": "domain",
                  "value": "product",
                  "disabled": true,
                  "description": "product | go-to-market | hiring | finance | legal"
                }
              ]
            },
            "description": "Returns recent strategic decisions from the company's memory stream."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "[\n  {\n    \"id\": \"uuid\",\n    \"content\": \"We are pausing enterprise sales to focus on SMB for Q1\",\n    \"domain\": \"go-to-market\",\n    \"made_at\": \"2026-01-10T14:00:00Z\",\n    \"context\": \"Enterprise deals taking 9+ months, SMB closes in 3 weeks\"\n  }\n]"
            }
          ]
        },
        {
          "name": "Search Stream Entries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/streams/search?companyId={{company_id}}&query=pricing+decision&limit=10",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "streams",
                "search"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "query",
                  "value": "pricing decision"
                },
                {
                  "key": "limit",
                  "value": "10"
                },
                {
                  "key": "domain",
                  "value": "product",
                  "disabled": true
                }
              ]
            },
            "description": "Full-text search across all stream entries."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "[\n  {\n    \"id\": \"uuid\",\n    \"title\": \"Pricing tier restructure\",\n    \"content\": \"Moved from 3 tiers to usage-based pricing with a starter flat fee.\",\n    \"type\": \"decisions\",\n    \"domain\": \"product\",\n    \"lifecycle\": \"strategy\",\n    \"reversibility\": \"costly\",\n    \"confidence\": \"validated\",\n    \"priority\": \"high\",\n    \"status\": \"active\",\n    \"superseded_by\": null,\n    \"superseded_at\": null,\n    \"created_at\": \"2026-01-08T16:30:00Z\",\n    \"updated_at\": \"2026-01-08T16:30:00Z\"\n  },\n  {\n    \"id\": \"uuid\",\n    \"title\": \"Enterprise pricing approved\",\n    \"content\": \"Board approved enterprise tier at $2,500/mo minimum commit.\",\n    \"type\": \"decisions\",\n    \"domain\": \"growth\",\n    \"lifecycle\": \"strategy\",\n    \"reversibility\": null,\n    \"confidence\": \"validated\",\n    \"priority\": \"high\",\n    \"status\": \"active\",\n    \"superseded_by\": null,\n    \"superseded_at\": null,\n    \"created_at\": \"2025-12-15T10:00:00Z\",\n    \"updated_at\": \"2025-12-15T10:00:00Z\"\n  }\n]"
            }
          ]
        },
        {
          "name": "List Stream Entries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/streams/entries?companyId={{company_id}}&limit=20",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "streams",
                "entries"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "limit",
                  "value": "20"
                },
                {
                  "key": "type",
                  "value": "decisions",
                  "disabled": true,
                  "description": "decisions | hypotheses | experiments | blockers | wins | learnings"
                }
              ]
            },
            "description": "Returns stream entries for a company."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"entries\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Hired VP of Engineering\",\n      \"content\": \"Jane Doe starts March 1st, coming from Stripe.\",\n      \"type\": \"wins\",\n      \"domain\": \"people\",\n      \"lifecycle\": \"execution\",\n      \"reversibility\": null,\n      \"confidence\": \"validated\",\n      \"priority\": \"high\",\n      \"status\": \"active\",\n      \"superseded_by\": null,\n      \"superseded_at\": null,\n      \"created_at\": \"2026-02-20T09:00:00Z\",\n      \"updated_at\": \"2026-02-20T09:00:00Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Churn risk: Acme Manufacturing\",\n      \"content\": \"Acme flagged integration issues, considering competitor switch.\",\n      \"type\": \"blockers\",\n      \"domain\": \"growth\",\n      \"lifecycle\": \"execution\",\n      \"reversibility\": \"reversible\",\n      \"confidence\": \"hypothesis\",\n      \"priority\": \"medium\",\n      \"status\": \"active\",\n      \"superseded_by\": null,\n      \"superseded_at\": null,\n      \"created_at\": \"2026-02-18T14:30:00Z\",\n      \"updated_at\": \"2026-02-18T14:30:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create Stream Entry",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"streamId\": \"{{stream_id}}\",\n  \"title\": \"Decision: Pause feature X\",\n  \"content\": \"We decided to pause feature X development until Q2 due to resource constraints.\",\n  \"type\": \"decisions\",\n  \"domain\": \"product\",\n  \"lifecycle\": \"execution\",\n  \"reversibility\": \"reversible\",\n  \"confidence\": \"hypothesis\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/streams/entries",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "streams",
                "entries"
              ]
            },
            "description": "Creates a new stream entry (for example decisions, hypotheses, experiments, blockers, wins, or learnings)."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"id\": \"uuid\",\n  \"success\": true\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Artifacts",
      "item": [
        {
          "name": "Create Artifact",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Q4 Strategy Memo\",\n  \"content\": \"# Q4 Strategy\\n\\n## Executive Summary\\n...\",\n  \"type\": \"general_draft\",\n  \"description\": \"Strategic memo for Q4 planning\",\n  \"tags\": [\"strategy\", \"q4\"],\n  \"origin_type\": \"cli\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/artifacts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts"
              ]
            },
            "description": "Creates a new artifact (document, analysis, deck, etc.)."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"id\": \"uuid\",\n  \"company_id\": \"uuid\",\n  \"title\": \"Q4 Strategy Memo\",\n  \"description\": \"Strategic memo for Q4 planning\",\n  \"content\": \"# Q4 Strategy\\n\\n## Executive Summary\\n...\",\n  \"type\": \"general_draft\",\n  \"version\": 1,\n  \"origin_type\": \"cli\",\n  \"content_type\": null,\n  \"content_format\": \"markdown\",\n  \"conversation_id\": null,\n  \"status\": \"final\",\n  \"tags\": [\"strategy\", \"q4\"],\n  \"file_path\": null,\n  \"artifact_group_id\": \"uuid\",\n  \"parent_artifact_id\": null,\n  \"is_final_version\": true,\n  \"generated_by\": \"human\",\n  \"created_at\": \"2026-02-25T12:00:00Z\",\n  \"updated_at\": \"2026-02-25T12:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Generate Artifact",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"prompt\": \"Write a board memo for our Series A process\",\n  \"title\": \"Series A Board Memo\",\n  \"type\": \"document_draft\",\n  \"webSearch\": true,\n  \"thinkingBudget\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/artifacts/generate",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "generate"
              ]
            },
            "description": "Creates a generating placeholder artifact and dispatches background document generation. Use the returned artifactId with the stream endpoint to follow live output."
          },
          "response": [
            {
              "name": "202 Accepted",
              "status": "Accepted",
              "code": 202,
              "body": "{\n  \"runId\": \"uuid\",\n  \"artifactId\": \"uuid\",\n  \"status\": \"started\",\n  \"title\": \"Series A Board Memo\",\n  \"type\": \"document_draft\",\n  \"streamUrl\": \"/api/artifacts/uuid/stream\"\n}"
            }
          ]
        },
        {
          "name": "Get Artifact",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "description": "Required when using Bearer token"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/artifacts/{{artifact_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "{{artifact_id}}"
              ]
            },
            "description": "Fetches a single artifact by ID."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"uuid\",\n  \"company_id\": \"uuid\",\n  \"title\": \"Q4 Strategy Memo\",\n  \"description\": \"Strategic memo for Q4 planning\",\n  \"content\": \"# Q4 Strategy\\n\\n## Executive Summary\\nOur Q4 goals focus on...\",\n  \"type\": \"general_draft\",\n  \"version\": 1,\n  \"origin_type\": \"cli\",\n  \"content_type\": null,\n  \"content_format\": \"markdown\",\n  \"conversation_id\": null,\n  \"status\": \"final\",\n  \"tags\": [\"strategy\", \"q4\"],\n  \"file_path\": null,\n  \"artifact_group_id\": \"uuid\",\n  \"parent_artifact_id\": null,\n  \"is_final_version\": true,\n  \"generated_by\": \"human\",\n  \"created_at\": \"2026-02-25T12:00:00Z\",\n  \"updated_at\": \"2026-02-25T12:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Find Artifact By Path",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "description": "Required when using Bearer token"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/artifacts/by-path?path=docs/roadmap.md",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "by-path"
              ],
              "query": [
                {
                  "key": "path",
                  "value": "docs/roadmap.md"
                }
              ]
            },
            "description": "Finds the latest non-deleted artifact by file path in the authenticated company context."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"artifact\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"title\": \"Roadmap\",\n    \"description\": null,\n    \"content\": \"# Roadmap\\n\\nUpdated plan...\",\n    \"type\": \"general_draft\",\n    \"version\": 2,\n    \"origin_type\": \"cli\",\n    \"content_type\": null,\n    \"content_format\": \"markdown\",\n    \"conversation_id\": null,\n    \"status\": \"final\",\n    \"tags\": [\"planning\"],\n    \"file_path\": \"docs/roadmap.md\",\n    \"artifact_group_id\": \"uuid\",\n    \"parent_artifact_id\": null,\n    \"is_final_version\": true,\n    \"generated_by\": \"human\",\n    \"created_at\": \"2026-02-25T12:00:00Z\",\n    \"updated_at\": \"2026-02-26T09:00:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Update Artifact",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Updated Title\",\n  \"content\": \"# Updated content\\n...\",\n  \"tags\": [\"updated\", \"strategy\"]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/artifacts/{{artifact_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "{{artifact_id}}"
              ]
            },
            "description": "Updates an artifact's title, content, description, or tags."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"uuid\",\n  \"company_id\": \"uuid\",\n  \"title\": \"Updated Title\",\n  \"description\": null,\n  \"content\": \"# Updated content\\n...\",\n  \"type\": \"general_draft\",\n  \"version\": 1,\n  \"origin_type\": \"cli\",\n  \"content_type\": null,\n  \"content_format\": \"markdown\",\n  \"conversation_id\": null,\n  \"status\": \"final\",\n  \"tags\": [\"updated\", \"strategy\"],\n  \"file_path\": null,\n  \"artifact_group_id\": \"uuid\",\n  \"parent_artifact_id\": null,\n  \"is_final_version\": true,\n  \"generated_by\": \"human\",\n  \"created_at\": \"2026-02-25T12:00:00Z\",\n  \"updated_at\": \"2026-02-25T13:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Sync Artifact By Path",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"file_path\": \"docs/roadmap.md\",\n  \"title\": \"Roadmap\",\n  \"content\": \"# Roadmap\\n\\nUpdated plan...\",\n  \"tags\": [\"planning\"]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/artifacts/sync",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "sync"
              ]
            },
            "description": "Creates or updates a CLI-style artifact keyed by `file_path`."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"artifact\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"title\": \"Roadmap\",\n    \"description\": null,\n    \"content\": \"# Roadmap\\n\\nUpdated plan...\",\n    \"type\": \"general_draft\",\n    \"version\": 4,\n    \"origin_type\": \"cli\",\n    \"content_type\": null,\n    \"content_format\": \"markdown\",\n    \"conversation_id\": null,\n    \"status\": \"final\",\n    \"tags\": [\"planning\"],\n    \"file_path\": \"docs/roadmap.md\",\n    \"artifact_group_id\": \"uuid\",\n    \"parent_artifact_id\": null,\n    \"is_final_version\": true,\n    \"generated_by\": \"human\",\n    \"created_at\": \"2026-02-25T12:00:00Z\",\n    \"updated_at\": \"2026-02-26T09:00:00Z\"\n  },\n  \"created\": false\n}"
            }
          ]
        },
        {
          "name": "Stream Artifact Generation",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "description": "Required when using Bearer token"
              },
              {
                "key": "Accept",
                "value": "text/event-stream"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/artifacts/{{artifact_id}}/stream",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "{{artifact_id}}",
                "stream"
              ]
            },
            "description": "Opens an SSE stream for a generating artifact. Events emit chunk, complete, or error payloads until the background run ends."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "data: {\"type\":\"chunk\",\"artifactId\":\"uuid\",\"text\":\"# Memo\",\"accumulated\":\"# Memo\"}\n\ndata: {\"type\":\"complete\",\"artifactId\":\"uuid\",\"text\":\"# Memo\\n\\nFinal body\"}\n\n"
            },
            {
              "name": "409 Not Generating",
              "status": "Conflict",
              "code": 409,
              "body": "Not generating"
            }
          ]
        },
        {
          "name": "Delete Artifact",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "description": "Required when using Bearer token"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/artifacts/{{artifact_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "{{artifact_id}}"
              ]
            },
            "description": "Soft-deletes an artifact."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"id\": \"uuid\",\n  \"deleted_at\": \"2026-02-25T14:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Move Artifact Between Rooms",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [
              {
                "key": "Cookie",
                "value": "sb-<project-ref>-auth-token=<session-cookie>; ...",
                "description": "Copy the full Cookie header from a logged-in browser session."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"artifact_id\": \"{{artifact_id}}\",\n  \"from_room_id\": \"{{room_id}}\",\n  \"to_room_id\": \"{{target_room_id}}\",\n  \"company_id\": \"{{company_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/artifacts/move",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "move"
              ]
            },
            "description": "Browser-session route. Moves the same artifact identity between rooms without creating a fork."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"deduped\": false\n}"
            }
          ]
        },
        {
          "name": "Copy Artifact To Room",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "POST",
            "header": [
              {
                "key": "Cookie",
                "value": "sb-<project-ref>-auth-token=<session-cookie>; ...",
                "description": "Copy the full Cookie header from a logged-in browser session."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"artifact_id\": \"{{artifact_id}}\",\n  \"from_room_id\": \"{{room_id}}\",\n  \"to_room_id\": \"{{target_room_id}}\",\n  \"company_id\": \"{{company_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/artifacts/copy",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "artifacts",
                "copy"
              ]
            },
            "description": "Browser-session route. Copies an artifact into another room by creating a fork with a new artifact identity."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"artifactId\": \"uuid\",\n  \"artifactGroupId\": \"uuid\",\n  \"parentArtifactId\": \"uuid\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Documents",
      "item": [
        {
          "name": "List Source Documents",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/source-documents?companyId={{company_id}}&limit=20&offset=0",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "source-documents"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "limit",
                  "value": "20"
                },
                {
                  "key": "offset",
                  "value": "0"
                }
              ]
            },
            "description": "Dual-auth route. Lists uploaded source documents for reuse with simple offset pagination."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"documents\": [\n    {\n      \"id\": \"uuid\",\n      \"fileName\": \"board-pack.pdf\",\n      \"mimeType\": \"application/pdf\",\n      \"documentType\": \"board_material\",\n      \"createdAt\": \"2026-01-01T00:00:00.000Z\"\n    }\n  ],\n  \"total\": 1,\n  \"limit\": 20,\n  \"offset\": 0\n}"
            }
          ]
        },
        {
          "name": "Upload Document (Direct Multipart)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "formdata",
              "formdata": [
                {
                  "key": "file",
                  "type": "file",
                  "src": []
                },
                {
                  "key": "companyId",
                  "value": "{{company_id}}",
                  "type": "text"
                },
                {
                  "key": "origin",
                  "value": "sync",
                  "type": "text"
                },
                {
                  "key": "targetRoomId",
                  "value": "{{room_id}}",
                  "type": "text"
                },
                {
                  "key": "documentType",
                  "value": "board_material",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{base_url}}/api/uploads",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "uploads"
              ]
            },
            "description": "Canonical API-key compatible file upload. This is the same path used by CLI room sync and generic document ingestion."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"documentId\": \"uuid\",\n  \"artifactId\": \"uuid\",\n  \"extractUrl\": \"/api/extract/uuid\",\n  \"message\": \"Upload complete. Call extractUrl for streaming extraction.\"\n}"
            }
          ]
        },
        {
          "name": "Initialize Signed Upload",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"fileName\": \"board-pack.pdf\",\n  \"mimeType\": \"application/pdf\",\n  \"fileSize\": 1048576,\n  \"companyId\": \"{{company_id}}\",\n  \"origin\": \"api\",\n  \"targetRoomId\": \"{{room_id}}\",\n  \"documentType\": \"board_material\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/uploads",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "uploads"
              ]
            },
            "description": "Initializes a signed upload flow and returns uploadUrl, storagePath, and extractUrl."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"documentId\": \"uuid\",\n  \"uploadUrl\": \"https://...\",\n  \"storagePath\": \"uuid/documents/uuid/board-pack.pdf\",\n  \"extractUrl\": \"/api/extract/uuid\",\n  \"message\": \"Upload URL generated. After upload, call /api/uploads/{documentId}/confirm then extractUrl for streaming extraction.\"\n}"
            }
          ]
        },
        {
          "name": "Confirm Signed Upload",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/uploads/{{document_id}}/confirm",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "uploads",
                "{{document_id}}",
                "confirm"
              ]
            },
            "description": "Dual-auth route. Confirms the file already exists in storage and starts the async document pipeline. The collection uses API-key auth; a browser Cookie header also works. Retries return the current processing status instead of dispatching twice."
          },
          "response": [
            {
              "name": "202 Accepted",
              "status": "Accepted",
              "code": 202,
              "body": "{\n  \"documentId\": \"uuid\",\n  \"eventId\": \"inngest-event-id\",\n  \"extractUrl\": \"/api/extract/uuid\",\n  \"message\": \"Upload confirmed. Call extractUrl to stream extraction.\"\n}"
            },
            {
              "name": "202 Accepted (Already Running)",
              "status": "Accepted",
              "code": 202,
              "body": "{\n  \"documentId\": \"uuid\",\n  \"status\": \"pending\",\n  \"extractUrl\": \"/api/extract/uuid\",\n  \"message\": \"Upload is already being processed.\"\n}"
            }
          ]
        },
        {
          "name": "Get Document Status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/uploads/{{document_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "uploads",
                "{{document_id}}"
              ]
            },
            "description": "Dual-auth route. Returns document processing status, progress, and public metadata."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"uuid\",\n  \"file_name\": \"board-pack.pdf\",\n  \"processing_status\": \"classifying\",\n  \"progress\": 50,\n  \"isComplete\": false,\n  \"isFailed\": false,\n  \"extraction_artifact_id\": \"uuid\"\n}"
            }
          ]
        },
        {
          "name": "Stream Document Extraction",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              },
              {
                "key": "Accept",
                "value": "text/event-stream"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/extract/{{document_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "extract",
                "{{document_id}}"
              ]
            },
            "description": "Dual-auth SSE route for TTFT extraction. Direct CLI/API uploads must call this to move the document beyond pending. Emits start, progress, chunk, complete, already_extracted, image_skipped, or error events."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "data: {\"type\":\"start\",\"documentId\":\"uuid\",\"extractionRunId\":\"uuid\"}\n\ndata: {\"type\":\"progress\",\"textLength\":5120,\"chunkIndex\":3}\n\ndata: {\"type\":\"chunk\",\"chunk\":\"Quarterly revenue reached ...\",\"format\":\"markdown\"}\n\ndata: {\"type\":\"complete\",\"textLength\":12842,\"chunkCount\":9}\n\n"
            }
          ]
        },
        {
          "name": "Open Uploaded Document File",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/uploads/{{document_id}}/file",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "uploads",
                "{{document_id}}",
                "file"
              ]
            },
            "description": "Dual-auth route that redirects to a short-lived signed URL for the original uploaded file. Add ?mode=json or Accept: application/json for signed URL metadata instead of a redirect."
          },
          "response": [
            {
              "name": "307 Temporary Redirect",
              "status": "Temporary Redirect",
              "code": 307,
              "body": ""
            },
            {
              "name": "200 OK (JSON Mode)",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"downloadUrl\": \"https://storage.operalta.ai/signed/doc-1\",\n  \"fileName\": \"board-pack.pdf\",\n  \"mimeType\": \"application/pdf\",\n  \"fileSize\": 1048576\n}"
            }
          ]
        },
        {
          "name": "Delete Uploaded Document",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/uploads/{{document_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "uploads",
                "{{document_id}}"
              ]
            },
            "description": "Dual-auth route. Deletes the uploaded file and its source document record. Requires manage access."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true\n}"
            }
          ]
        },
        {
          "name": "Link Document To Room",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"documentId\": \"{{document_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/artifacts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "artifacts"
              ]
            },
            "description": "Attaches an existing source document to a room by creating or reusing its extraction artifact."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"artifactId\": \"uuid\",\n  \"artifactGroupId\": \"uuid\"\n}"
            }
          ]
        },
        {
          "name": "Generate Room Artifact Preview",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"sourceArtifactId\": \"{{artifact_id}}\",\n  \"title\": \"Board Pack (Preview)\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/artifacts/generate-preview-from-artifact",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "artifacts",
                "generate-preview-from-artifact"
              ]
            },
            "description": "Dual-auth route. Creates a markdown preview artifact from a binary or structured room artifact."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"artifactId\": \"uuid\",\n  \"artifactGroupId\": \"uuid\"\n}"
            },
            {
              "name": "409 Already Readable",
              "status": "Conflict",
              "code": 409,
              "body": "{\n  \"error\": \"This artifact is already readable and does not need a generated preview\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Auth",
      "item": [
        {
          "name": "OAuth Authorize (PKCE)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/oauth/authorize?client_id=operalta-cli&response_type=code&redirect_uri=http://localhost:8847/callback&scope=write&state=1234567890123456&code_challenge=pkce_challenge&code_challenge_method=S256",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "oauth",
                "authorize"
              ],
              "query": [
                {
                  "key": "client_id",
                  "value": "operalta-cli"
                },
                {
                  "key": "response_type",
                  "value": "code"
                },
                {
                  "key": "redirect_uri",
                  "value": "http://localhost:8847/callback"
                },
                {
                  "key": "scope",
                  "value": "write"
                },
                {
                  "key": "state",
                  "value": "1234567890123456"
                },
                {
                  "key": "code_challenge",
                  "value": "pkce_challenge"
                },
                {
                  "key": "code_challenge_method",
                  "value": "S256"
                }
              ]
            },
            "description": "Starts the OAuth PKCE flow. This request redirects the browser to the consent screen."
          },
          "response": []
        },
        {
          "name": "OAuth Consent Redirect",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"company_id\": \"{{company_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/oauth/authorize",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "oauth",
                "authorize"
              ]
            },
            "description": "Browser-session route used after consent. Returns a canonical `{ redirect_url }` payload for the CLI callback."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"redirect_url\": \"http://localhost:8847/callback?code=authorization_code&state=1234567890123456\"\n}"
            }
          ]
        },
        {
          "name": "OAuth Token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/x-www-form-urlencoded"
              }
            ],
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "grant_type",
                  "value": "client_credentials",
                  "type": "text"
                },
                {
                  "key": "client_id",
                  "value": "{{oauth_client_id}}",
                  "type": "text"
                },
                {
                  "key": "client_secret",
                  "value": "{{oauth_client_secret}}",
                  "type": "text"
                },
                {
                  "key": "scope",
                  "value": "context:read",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{base_url}}/api/oauth/token",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "oauth",
                "token"
              ]
            },
            "description": "OAuth token endpoint for `authorization_code`, `refresh_token`, and `client_credentials` grants."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"access_token\": \"op_abc123def456ghi789jkl012mno345pq\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 3600,\n  \"scope\": \"context:read\",\n  \"refresh_token\": \"refresh_token_value\"\n}"
            }
          ]
        },
        {
          "name": "OAuth Revoke",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/x-www-form-urlencoded"
              }
            ],
            "body": {
              "mode": "urlencoded",
              "urlencoded": [
                {
                  "key": "token",
                  "value": "{{api_key}}",
                  "type": "text"
                },
                {
                  "key": "client_id",
                  "value": "{{oauth_client_id}}",
                  "type": "text"
                }
              ]
            },
            "url": {
              "raw": "{{base_url}}/api/oauth/revoke",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "oauth",
                "revoke"
              ]
            },
            "description": "RFC 7009 token revocation. Always returns HTTP 200 with an empty JSON object."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{}"
            }
          ]
        },
        {
          "name": "Issue Legacy CLI Token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/cli/authorize",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "authorize"
              ]
            },
            "description": "Browser-session route. Issues a legacy CLI token for smoke tests and compatibility flows. Prefer OAuth PKCE for the standard CLI login path."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"token\": {\n    \"accessToken\": \"op_abc123def456ghi789jkl012mno345pq\",\n    \"refreshToken\": \"refresh_token_value\",\n    \"expiresAt\": 1775356800000,\n    \"userId\": \"uuid\",\n    \"email\": \"founder@acme.com\",\n    \"companyId\": \"uuid\",\n    \"companyName\": \"Acme Corp\",\n    \"scope\": \"write\",\n    \"scopes\": [\"write\"]\n  }\n}"
            }
          ]
        },
        {
          "name": "Validate Legacy CLI Token",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/cli/authorize?touch=false",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "authorize"
              ],
              "query": [
                {
                  "key": "touch",
                  "value": "false"
                }
              ]
            },
            "description": "Bearer route. Validates the presented legacy CLI token and returns the canonical identity + scope DTO."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"valid\": true,\n  \"userId\": \"uuid\",\n  \"email\": \"founder@acme.com\",\n  \"companyId\": \"uuid\",\n  \"companyName\": \"Acme Corp\",\n  \"expiresAt\": 1775356800000,\n  \"scope\": \"write\",\n  \"scopes\": [\"write\"]\n}"
            }
          ]
        },
        {
          "name": "Revoke Legacy CLI Token",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{api_key}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/cli/authorize",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "authorize"
              ]
            },
            "description": "Bearer route. Revokes the presented legacy CLI token."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"message\": \"Token revoked\"\n}"
            }
          ]
        },
        {
          "name": "List API Keys",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/cli/tokens",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "tokens"
              ]
            },
            "description": "Returns all API keys for the authenticated user."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"tokens\": [\n    {\n      \"id\": \"uuid\",\n      \"label\": \"My Integration Key\",\n      \"user_agent\": \"My Integration Key\",\n      \"scope\": \"context:read reports:write\",\n      \"scopes\": [\"context:read\", \"reports:write\"],\n      \"company_id\": \"uuid\",\n      \"company_name\": \"Acme Corp\",\n      \"last_used_at\": \"2026-02-24T18:00:00Z\",\n      \"expires_at\": \"2026-04-10T09:00:00Z\",\n      \"created_at\": \"2026-01-10T09:00:00Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"label\": \"Read-only Dashboard\",\n      \"user_agent\": \"Read-only Dashboard\",\n      \"scope\": \"read\",\n      \"scopes\": [\"read\"],\n      \"company_id\": \"uuid\",\n      \"company_name\": \"Acme Corp\",\n      \"last_used_at\": null,\n      \"expires_at\": \"2026-05-01T11:00:00Z\",\n      \"created_at\": \"2026-02-01T11:00:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create API Key",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"My Integration Key\",\n  \"companyId\": \"{{company_id}}\",\n  \"expiresInDays\": 90,\n  \"scopes\": [\"context:read\", \"reports:write\"]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/cli/tokens",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "tokens"
              ]
            },
            "description": "Creates a new API key. The token is returned once \u2014 store it securely."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"apiKey\": \"op_abc123def456ghi789jkl012mno345pq\",\n  \"token\": {\n    \"id\": \"uuid\",\n    \"label\": \"My Integration Key\",\n    \"user_agent\": \"My Integration Key\",\n    \"company_id\": \"uuid\",\n    \"company_name\": \"Acme Corp\",\n    \"scope\": \"context:read reports:write\",\n    \"scopes\": [\"context:read\", \"reports:write\"],\n    \"created_at\": \"2026-02-25T10:00:00Z\",\n    \"expires_at\": \"2026-05-26T10:00:00Z\",\n    \"last_used_at\": \"2026-02-25T10:00:00Z\"\n  },\n  \"message\": \"API key created. Copy it now - it won't be shown again.\"\n}"
            }
          ]
        },
        {
          "name": "Revoke API Key",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/cli/tokens/{{token_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "tokens",
                "{{token_id}}"
              ]
            },
            "description": "Revokes an API key owned by the authenticated user."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"tokenId\": \"uuid\",\n  \"message\": \"Token revoked\"\n}"
            }
          ]
        },
        {
          "name": "CLI Sync",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filePath\": \"docs/roadmap.md\",\n  \"content\": \"# Product Roadmap\\n\\n## Q1 2026\\n- Launch v2 API\\n- Expand to EU market\\n\\n## Q2 2026\\n- Mobile app beta\\n- Enterprise SSO\",\n  \"fileType\": \"roadmap\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/cli/sync",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "cli",
                "sync"
              ]
            },
            "description": "Syncs a local file to Operalta. Extracts structured entries from the file content and updates the company memory."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"entriesCreated\": 5,\n  \"entriesUpdated\": 2\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Pipeline",
      "item": [
        {
          "name": "List Pipeline Deals",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline?investment_stage=&investment_decision=&account_type=&context_type=",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline"
              ],
              "query": [
                {
                  "key": "investment_stage",
                  "value": ""
                },
                {
                  "key": "investment_decision",
                  "value": ""
                },
                {
                  "key": "account_type",
                  "value": ""
                },
                {
                  "key": "context_type",
                  "value": ""
                }
              ]
            },
            "description": "List pipeline deals. Optional filters: stage, decision, account type, context type."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"companies\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Acme AI\",\n      \"domain\": \"acme.ai\",\n      \"normalized_domain\": \"acme.ai\",\n      \"lifecycle_state\": \"pipeline\",\n      \"type\": \"startup\",\n      \"context_type\": \"startup\",\n      \"stage\": \"warm\",\n      \"is_lead\": false,\n      \"is_active\": true,\n      \"investment_stage\": \"screening\",\n      \"investment_decision\": null,\n      \"investment_rationale\": \"Strong team, large TAM.\",\n      \"research_notes\": null,\n      \"research_sources\": null,\n      \"dd_notes\": null,\n      \"dd_checklist\": null,\n      \"deck_url\": null,\n      \"metrics_url\": null,\n      \"source\": \"manual\",\n      \"confidence\": 0.84,\n      \"firm_id\": \"uuid\",\n      \"company_id\": null,\n      \"created_by\": \"uuid\",\n      \"created_by_profile\": {\n        \"id\": \"uuid\",\n        \"name\": \"Created By\",\n        \"avatar_url\": null\n      },\n      \"owner_id\": \"uuid\",\n      \"owner_profile\": {\n        \"id\": \"uuid\",\n        \"name\": \"Owner\",\n        \"avatar_url\": null\n      },\n      \"created_at\": \"2026-01-20T10:00:00Z\",\n      \"updated_at\": \"2026-02-15T14:30:00Z\",\n      \"last_seen_at\": null,\n      \"firms\": {\n        \"id\": \"uuid\",\n        \"name\": \"Acme AI\",\n        \"context_type\": \"startup\",\n        \"enrichment_level\": \"deep\",\n        \"enrichment_data\": {},\n        \"enriched_at\": \"2026-02-15T14:30:00Z\",\n        \"context_markdown\": null,\n        \"linked_company_id\": null\n      },\n      \"operaltaMatch\": null,\n      \"list_id\": \"uuid\",\n      \"list_name\": \"Series A Pipeline\",\n      \"metric_summary\": {\n        \"mrr\": 125000,\n        \"runway\": 16\n      },\n      \"metric_summary_updated_at\": \"2026-02-15T14:30:00Z\"\n    }\n  ],\n  \"lists\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Series A Pipeline\",\n      \"slug\": \"series-a-pipeline\",\n      \"created_by\": \"uuid\",\n      \"created_at\": \"2026-01-05T10:00:00Z\"\n    }\n  ],\n  \"networkId\": \"uuid\",\n  \"companyId\": null,\n  \"metadata\": {}\n}"
            }
          ]
        },
        {
          "name": "Get Deal",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/{{deal_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "{{deal_id}}"
              ]
            },
            "description": "Get full detail for one pipeline deal by ID."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"account\": {\n    \"id\": \"uuid\",\n    \"name\": \"Acme AI\",\n    \"domain\": \"acme.ai\",\n    \"normalized_domain\": \"acme.ai\",\n    \"lifecycle_state\": \"pipeline\",\n    \"type\": \"startup\",\n    \"context_type\": \"startup\",\n    \"investment_stage\": \"screening\",\n    \"investment_decision\": null,\n    \"investment_rationale\": \"Strong team, large TAM.\",\n    \"research_notes\": null,\n    \"research_sources\": null,\n    \"dd_notes\": null,\n    \"dd_checklist\": null,\n    \"deck_url\": null,\n    \"metrics_url\": null,\n    \"source\": \"manual\",\n    \"confidence\": 0.84,\n    \"firm_id\": \"uuid\",\n    \"company_id\": null,\n    \"created_by\": \"uuid\",\n    \"owner_id\": \"uuid\",\n    \"created_at\": \"2026-01-20T10:00:00Z\",\n    \"updated_at\": \"2026-02-15T14:30:00Z\",\n    \"last_seen_at\": null,\n    \"firm\": {\n      \"id\": \"uuid\",\n      \"name\": \"Acme AI\",\n      \"context_type\": \"startup\",\n      \"enrichment_level\": \"deep\",\n      \"enrichment_data\": {},\n      \"enriched_at\": \"2026-02-15T14:30:00Z\",\n      \"context_markdown\": null,\n      \"linked_company_id\": null\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Update Deal",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"investmentStage\": \"diligence\",\n  \"investmentDecision\": \"invest\",\n  \"investmentRationale\": \"Strong partner-fit and traction.\",\n  \"listId\": \"{{list_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/{{deal_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "{{deal_id}}"
              ]
            },
            "description": "Update stage/decision/rationale/list assignment for a deal."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"company\": {\n    \"id\": \"uuid\",\n    \"name\": \"Acme AI\",\n    \"domain\": \"acme.ai\",\n    \"normalized_domain\": \"acme.ai\",\n    \"lifecycle_state\": \"pipeline\",\n    \"type\": \"startup\",\n    \"context_type\": \"startup\",\n    \"investment_stage\": \"due_diligence\",\n    \"investment_decision\": \"invest\",\n    \"investment_rationale\": \"Strong partner-fit and traction.\",\n    \"research_notes\": null,\n    \"research_sources\": null,\n    \"dd_notes\": null,\n    \"dd_checklist\": null,\n    \"deck_url\": null,\n    \"metrics_url\": null,\n    \"source\": \"manual\",\n    \"confidence\": 0.84,\n    \"firm_id\": \"uuid\",\n    \"company_id\": null,\n    \"created_by\": \"uuid\",\n    \"owner_id\": \"uuid\",\n    \"created_at\": \"2026-01-20T10:00:00Z\",\n    \"updated_at\": \"2026-02-25T15:00:00Z\",\n    \"last_seen_at\": null,\n    \"firm\": {\n      \"id\": \"uuid\",\n      \"name\": \"Acme AI\",\n      \"context_type\": \"startup\",\n      \"enrichment_level\": \"deep\",\n      \"enrichment_data\": {},\n      \"enriched_at\": \"2026-02-15T14:30:00Z\",\n      \"context_markdown\": null,\n      \"linked_company_id\": null\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Get Deal Metrics",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/{{deal_id}}/metrics",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "{{deal_id}}",
                "metrics"
              ]
            },
            "description": "Get the normalized metric timeline for a pipeline deal."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"accountId\": \"uuid\",\n  \"companyId\": \"uuid\",\n  \"metricsUrl\": \"/metrics.csv\",\n  \"timeline\": [\n    {\n      \"periodKey\": \"2026-Q1\",\n      \"periodType\": \"quarter\",\n      \"label\": \"2026 Q1\",\n      \"items\": [\n        {\n          \"metricId\": \"runway\",\n          \"label\": \"Runway\",\n          \"activeObservation\": {\n            \"id\": \"uuid\",\n            \"metricId\": \"runway\",\n            \"label\": \"Runway\",\n            \"value\": 16,\n            \"formattedValue\": \"16.0 mo\",\n            \"periodKey\": \"2026-Q1\",\n            \"periodType\": \"quarter\",\n            \"source\": \"founder_company_metrics\",\n            \"sourceLabel\": \"Founder Actual\",\n            \"status\": \"verified\",\n            \"origin\": \"company\",\n            \"confidence\": null,\n            \"notes\": null,\n            \"updatedAt\": \"2026-03-15T10:00:00Z\"\n          },\n          \"observations\": [],\n          \"hasMultipleSources\": false\n        }\n      ]\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Add Deal Metric",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"metricId\": \"mrr\",\n  \"value\": 85000,\n  \"periodKey\": \"2026-03\",\n  \"periodType\": \"month\",\n  \"source\": \"manual\",\n  \"status\": \"pending\",\n  \"confidence\": 0.9,\n  \"notes\": \"Imported from board pack\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/{{deal_id}}/metrics",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "{{deal_id}}",
                "metrics"
              ]
            },
            "description": "Upsert a metric observation for a pipeline deal."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"metric\": {\n    \"id\": \"uuid\",\n    \"metricId\": \"mrr\",\n    \"label\": \"MRR\",\n    \"value\": 85000,\n    \"formattedValue\": \"$85,000\",\n    \"periodKey\": \"2026-03\",\n    \"periodType\": \"month\",\n    \"source\": \"manual\",\n    \"sourceLabel\": \"Manual\",\n    \"status\": \"pending\",\n    \"origin\": \"account\",\n    \"confidence\": 0.9,\n    \"notes\": \"Imported from board pack\",\n    \"updatedAt\": \"2026-03-11T10:00:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Add Deal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Acme AI\",\n  \"website\": \"https://acme.ai\",\n  \"contextType\": \"startup\",\n  \"investmentStage\": \"research\",\n  \"source\": \"manual\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline"
              ]
            },
            "description": "Create a new pipeline deal. If website is provided, enrichment can run in background."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"company\": {\n    \"id\": \"uuid\",\n    \"name\": \"Acme AI\",\n    \"domain\": \"acme.ai\",\n    \"normalized_domain\": \"acme.ai\",\n    \"lifecycle_state\": \"pipeline\",\n    \"type\": \"startup\",\n    \"context_type\": \"startup\",\n    \"investment_stage\": \"screening\",\n    \"investment_decision\": null,\n    \"investment_rationale\": null,\n    \"research_notes\": null,\n    \"research_sources\": null,\n    \"dd_notes\": null,\n    \"dd_checklist\": null,\n    \"deck_url\": null,\n    \"metrics_url\": null,\n    \"source\": \"manual\",\n    \"confidence\": null,\n    \"firm_id\": \"uuid\",\n    \"company_id\": null,\n    \"created_by\": \"uuid\",\n    \"owner_id\": \"uuid\",\n    \"created_at\": \"2026-02-25T16:00:00Z\",\n    \"updated_at\": \"2026-02-25T16:00:00Z\",\n    \"last_seen_at\": null,\n    \"firm\": {\n      \"id\": \"uuid\",\n      \"name\": \"Acme AI\",\n      \"context_type\": \"startup\",\n      \"enrichment_level\": \"none\",\n      \"enrichment_data\": null,\n      \"enriched_at\": null,\n      \"context_markdown\": null,\n      \"linked_company_id\": null\n    }\n  },\n  \"alreadyExists\": false,\n  \"placement\": {\n    \"listId\": \"uuid\",\n    \"listName\": \"Startup\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Archive Deal",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/{{deal_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "{{deal_id}}"
              ]
            },
            "description": "Archive (soft-delete) a pipeline deal."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"id\": \"uuid\",\n  \"archived_at\": \"2026-02-25T17:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "List Pipeline Lists",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/lists",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "lists"
              ]
            },
            "description": "List all pipeline lists in current scope."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"lists\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Top Q2 Targets\",\n      \"slug\": \"top-q2-targets\",\n      \"created_by\": \"uuid\",\n      \"created_at\": \"2026-01-05T10:00:00Z\"\n    }\n  ],\n  \"communicationLane\": {\n    \"type\": \"network\",\n    \"id\": \"uuid\",\n    \"name\": \"Fund I Pipeline\",\n    \"surfaceLabel\": \"Fund\",\n    \"surfaceLabelPlural\": \"Funds\",\n    \"description\": \"Invites, updates, and shared reporting flow through this fund.\"\n  },\n  \"communicationLanes\": [\n    {\n      \"type\": \"network\",\n      \"id\": \"uuid\",\n      \"name\": \"Fund I Pipeline\",\n      \"surfaceLabel\": \"Fund\",\n      \"surfaceLabelPlural\": \"Funds\",\n      \"description\": \"Invites, updates, and shared reporting flow through this fund.\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create Pipeline List",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Top Q2 Targets\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/portfolio/pipeline/lists",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "portfolio",
                "pipeline",
                "lists"
              ]
            },
            "description": "Create a new named pipeline list."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"list\": {\n    \"id\": \"uuid\",\n    \"name\": \"Top Q2 Targets\",\n    \"slug\": \"top-q2-targets-k9s8a\",\n    \"created_by\": \"uuid\",\n    \"created_at\": \"2026-02-25T18:00:00Z\"\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Lists",
      "item": [
        {
          "name": "List Custom Lists",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/lists?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}",
                  "description": "Optional. Scope list ownership to a company instead of the first active network membership."
                }
              ]
            },
            "description": "Returns custom lists for the authenticated browser session. The response uses a flat `list_attributes_count` field."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "[\n  {\n    \"id\": \"{{list_id}}\",\n    \"network_id\": null,\n    \"company_id\": \"{{company_id}}\",\n    \"name\": \"Investment Pipeline\",\n    \"slug\": \"investment-pipeline\",\n    \"description\": \"Tracked deals and follow-ups\",\n    \"icon\": null,\n    \"color\": null,\n    \"entity_type\": \"account\",\n    \"context_type\": null,\n    \"is_system\": false,\n    \"position\": 0,\n    \"created_by\": \"uuid\",\n    \"created_at\": \"2026-04-02T14:00:00Z\",\n    \"updated_at\": \"2026-04-02T14:00:00Z\",\n    \"list_attributes_count\": 3\n  }\n]"
            }
          ]
        },
        {
          "name": "Create Custom List",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Investment Pipeline\",\n  \"description\": \"Tracked deals and follow-ups\",\n  \"entity_type\": \"account\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/lists?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Creates a custom list in the authenticated owner context."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"id\": \"{{list_id}}\",\n  \"network_id\": null,\n  \"company_id\": \"{{company_id}}\",\n  \"name\": \"Investment Pipeline\",\n  \"slug\": \"investment-pipeline\",\n  \"description\": \"Tracked deals and follow-ups\",\n  \"icon\": null,\n  \"color\": null,\n  \"entity_type\": \"account\",\n  \"context_type\": null,\n  \"is_system\": false,\n  \"position\": 0,\n  \"created_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:00:00Z\",\n  \"list_attributes_count\": 0\n}"
            }
          ]
        },
        {
          "name": "Get Custom List",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}"
              ]
            },
            "description": "Returns one custom list with its configured attributes."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"{{list_id}}\",\n  \"network_id\": null,\n  \"company_id\": \"{{company_id}}\",\n  \"name\": \"Investment Pipeline\",\n  \"slug\": \"investment-pipeline\",\n  \"description\": \"Tracked deals and follow-ups\",\n  \"icon\": null,\n  \"color\": null,\n  \"entity_type\": \"account\",\n  \"context_type\": null,\n  \"is_system\": false,\n  \"position\": 0,\n  \"created_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:00:00Z\",\n  \"list_attributes\": [\n    {\n      \"id\": \"{{list_attribute_id}}\",\n      \"list_id\": \"{{list_id}}\",\n      \"name\": \"Stage\",\n      \"slug\": \"stage\",\n      \"attribute_type\": \"status\",\n      \"config\": {\n        \"options\": [\n          {\n            \"id\": \"todo\",\n            \"label\": \"To Do\",\n            \"tone\": \"steel\"\n          }\n        ]\n      },\n      \"is_required\": true,\n      \"position\": 0,\n      \"created_at\": \"2026-04-02T14:00:00Z\",\n      \"updated_at\": \"2026-04-02T14:00:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Update Custom List",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Top Priority Pipeline\",\n  \"description\": \"Only active priority deals\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}"
              ]
            },
            "description": "Updates list metadata and returns the canonical summary DTO."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"{{list_id}}\",\n  \"network_id\": null,\n  \"company_id\": \"{{company_id}}\",\n  \"name\": \"Top Priority Pipeline\",\n  \"slug\": \"investment-pipeline\",\n  \"description\": \"Only active priority deals\",\n  \"icon\": null,\n  \"color\": null,\n  \"entity_type\": \"account\",\n  \"context_type\": null,\n  \"is_system\": false,\n  \"position\": 0,\n  \"created_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:30:00Z\",\n  \"list_attributes_count\": 0\n}"
            }
          ]
        },
        {
          "name": "Delete Custom List",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}"
              ]
            },
            "description": "Deletes a custom list."
          },
          "response": [
            {
              "name": "204 No Content",
              "status": "No Content",
              "code": 204,
              "body": ""
            }
          ]
        },
        {
          "name": "List Custom List Entries",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/entries?limit=50&offset=0",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "entries"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "50"
                },
                {
                  "key": "offset",
                  "value": "0"
                }
              ]
            },
            "description": "Returns entries for one custom list."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "[\n  {\n    \"id\": \"{{list_entry_id}}\",\n    \"list_id\": \"{{list_id}}\",\n    \"title\": \"Acme AI\",\n    \"values\": {\n      \"stage\": \"todo\",\n      \"owner\": \"Raphael\"\n    },\n    \"position\": 0,\n    \"archived\": false,\n    \"linked_entity_type\": \"account\",\n    \"linked_entity_id\": \"uuid\",\n    \"created_by\": \"uuid\",\n    \"created_at\": \"2026-04-02T14:00:00Z\",\n    \"updated_at\": \"2026-04-02T14:00:00Z\"\n  }\n]"
            }
          ]
        },
        {
          "name": "Create Custom List Entry",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Acme AI\",\n  \"values\": {\n    \"stage\": \"todo\",\n    \"owner\": \"Raphael\"\n  },\n  \"linked_entity_type\": \"account\",\n  \"linked_entity_id\": \"uuid\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/entries",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "entries"
              ]
            },
            "description": "Creates a new entry at the end of the list."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"id\": \"{{list_entry_id}}\",\n  \"list_id\": \"{{list_id}}\",\n  \"title\": \"Acme AI\",\n  \"values\": {\n    \"stage\": \"todo\",\n    \"owner\": \"Raphael\"\n  },\n  \"position\": 4,\n  \"archived\": false,\n  \"linked_entity_type\": \"account\",\n  \"linked_entity_id\": \"uuid\",\n  \"created_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Update Custom List Entry",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id\": \"{{list_entry_id}}\",\n  \"values\": {\n    \"stage\": \"done\"\n  },\n  \"archived\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/entries",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "entries"
              ]
            },
            "description": "Updates a list entry. `values` are merged with the existing payload."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"{{list_entry_id}}\",\n  \"list_id\": \"{{list_id}}\",\n  \"title\": \"Acme AI\",\n  \"values\": {\n    \"stage\": \"done\",\n    \"owner\": \"Raphael\"\n  },\n  \"position\": 4,\n  \"archived\": false,\n  \"linked_entity_type\": \"account\",\n  \"linked_entity_id\": \"uuid\",\n  \"created_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:30:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Delete Custom List Entry",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/entries?entryId={{list_entry_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "entries"
              ],
              "query": [
                {
                  "key": "entryId",
                  "value": "{{list_entry_id}}"
                }
              ]
            },
            "description": "Deletes a list entry."
          },
          "response": [
            {
              "name": "204 No Content",
              "status": "No Content",
              "code": 204,
              "body": ""
            }
          ]
        },
        {
          "name": "Create Custom List Attribute",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Stage\",\n  \"attribute_type\": \"status\",\n  \"config\": {\n    \"options\": [\n      {\n        \"id\": \"todo\",\n        \"label\": \"To Do\",\n        \"tone\": \"steel\"\n      },\n      {\n        \"id\": \"done\",\n        \"label\": \"Done\",\n        \"tone\": \"sage\"\n      }\n    ]\n  },\n  \"is_required\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/attributes",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "attributes"
              ]
            },
            "description": "Creates a new column on the list."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"id\": \"{{list_attribute_id}}\",\n  \"list_id\": \"{{list_id}}\",\n  \"name\": \"Stage\",\n  \"slug\": \"stage\",\n  \"attribute_type\": \"status\",\n  \"config\": {\n    \"options\": [\n      {\n        \"id\": \"todo\",\n        \"label\": \"To Do\",\n        \"tone\": \"steel\"\n      },\n      {\n        \"id\": \"done\",\n        \"label\": \"Done\",\n        \"tone\": \"sage\"\n      }\n    ]\n  },\n  \"is_required\": true,\n  \"position\": 1,\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Update Custom List Attribute",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id\": \"{{list_attribute_id}}\",\n  \"config\": {\n    \"options\": [\n      {\n        \"id\": \"todo\",\n        \"label\": \"To Do\",\n        \"tone\": \"steel\"\n      },\n      {\n        \"id\": \"in_progress\",\n        \"label\": \"In Progress\",\n        \"tone\": \"cobalt\"\n      },\n      {\n        \"id\": \"done\",\n        \"label\": \"Done\",\n        \"tone\": \"sage\"\n      }\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/attributes",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "attributes"
              ]
            },
            "description": "Updates list attribute config or metadata."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"{{list_attribute_id}}\",\n  \"list_id\": \"{{list_id}}\",\n  \"name\": \"Stage\",\n  \"slug\": \"stage\",\n  \"attribute_type\": \"status\",\n  \"config\": {\n    \"options\": [\n      {\n        \"id\": \"todo\",\n        \"label\": \"To Do\",\n        \"tone\": \"steel\"\n      },\n      {\n        \"id\": \"in_progress\",\n        \"label\": \"In Progress\",\n        \"tone\": \"cobalt\"\n      },\n      {\n        \"id\": \"done\",\n        \"label\": \"Done\",\n        \"tone\": \"sage\"\n      }\n    ]\n  },\n  \"is_required\": true,\n  \"position\": 1,\n  \"created_at\": \"2026-04-02T14:00:00Z\",\n  \"updated_at\": \"2026-04-02T14:30:00Z\"\n}"
            }
          ]
        },
        {
          "name": "Delete Custom List Attribute",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/lists/{{list_id}}/attributes?attributeId={{list_attribute_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "lists",
                "{{list_id}}",
                "attributes"
              ],
              "query": [
                {
                  "key": "attributeId",
                  "value": "{{list_attribute_id}}"
                }
              ]
            },
            "description": "Deletes a list attribute."
          },
          "response": [
            {
              "name": "204 No Content",
              "status": "No Content",
              "code": 204,
              "body": ""
            }
          ]
        }
      ]
    },
    {
      "name": "Agent Orchestration",
      "item": [
        {
          "name": "List Agent Runs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/agent/runs?companyId={{company_id}}&limit=10&status=completed",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "agent",
                "runs"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "limit",
                  "value": "10"
                },
                {
                  "key": "status",
                  "value": "completed"
                }
              ]
            },
            "description": "Lists recent top-level canonical runs for the authenticated company. Child runs remain nested under each parent status payload."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runs\": [\n    {\n      \"runId\": \"uuid\",\n      \"status\": \"completed\",\n      \"phase\": \"synthesizing\",\n      \"objective\": \"Write a strategic pricing memo\",\n      \"skillTrigger\": \"@council\",\n      \"pattern\": \"parallel\",\n      \"intent\": \"generate\",\n      \"metrics\": {\n        \"totalTokens\": 321,\n        \"childRunsSpawned\": 2\n      },\n      \"error\": null,\n      \"createdAt\": \"2026-04-05T20:00:00.000Z\",\n      \"completedAt\": \"2026-04-05T20:02:00.000Z\",\n      \"parentRunId\": null,\n      \"role\": null,\n      \"target\": {\n        \"type\": \"objective\",\n        \"label\": \"pricing-memo\"\n      },\n      \"budget\": {\n        \"maxChildren\": 4\n      },\n      \"writePolicy\": \"artifact_allowed\",\n      \"toolClasses\": [\n        \"read\",\n        \"analyze\",\n        \"write\"\n      ],\n      \"riskClass\": \"sensitive_write\",\n      \"childRunCount\": 2,\n      \"activeToolClasses\": [],\n      \"activeRiskClass\": null,\n      \"canCreateArtifacts\": false,\n      \"canWriteStreamEntries\": false\n    }\n  ],\n  \"limit\": 10\n}"
            }
          ]
        },
        {
          "name": "Run Agent",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"objective\": \"Analyze our competitive landscape and identify key threats\",\n  \"companyId\": \"{{company_id}}\",\n  \"pattern\": \"parallel\",\n  \"effort\": \"high\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/agent/run",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "agent",
                "run"
              ]
            },
            "description": "Starts an agent orchestration run. The agent will break down the objective into sub-tasks, execute them (optionally in parallel), and synthesize results. Returns immediately with a run ID for polling."
          },
          "response": [
            {
              "name": "202 Accepted",
              "status": "Accepted",
              "code": 202,
              "body": "{\n  \"success\": true,\n  \"runId\": \"uuid\",\n  \"progressUrl\": \"/api/agent/run/{runId}/progress\",\n  \"statusUrl\": \"/api/agent/run/{runId}\"\n}"
            }
          ]
        },
        {
          "name": "Get Agent Run Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/agent/run/{{run_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "agent",
                "run",
                "{{run_id}}"
              ]
            },
            "description": "Returns the current status and results of an agent orchestration run."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runId\": \"uuid\",\n  \"status\": \"completed\",\n  \"input\": {\n    \"objective\": \"Analyze our competitive landscape and identify key threats\",\n    \"companyId\": \"uuid\",\n    \"pattern\": \"parallel\",\n    \"effort\": \"high\"\n  },\n  \"output\": \"Final analysis: Based on the current competitive landscape, the three primary threats are...\",\n  \"metrics\": {\n    \"pattern\": \"parallel\",\n    \"effort\": \"high\",\n    \"totalTokens\": 8500\n  },\n  \"workerResults\": [],\n  \"evalHistory\": [],\n  \"error\": null,\n  \"createdAt\": \"2026-02-17T10:30:00Z\",\n  \"completedAt\": \"2026-02-17T10:31:00Z\",\n  \"parentRunId\": null,\n  \"role\": null,\n  \"target\": null,\n  \"budget\": null,\n  \"writePolicy\": null,\n  \"childRuns\": [\n    {\n      \"runId\": \"child-run-uuid\",\n      \"parentRunId\": \"uuid\",\n      \"role\": \"finance\",\n      \"taskClass\": \"finance\",\n      \"objective\": \"Review runway assumptions\",\n      \"status\": \"completed\",\n      \"phase\": \"complete\",\n      \"activeToolClasses\": [],\n      \"activeRiskClass\": null,\n      \"toolClasses\": [\n        \"read\",\n        \"analyze\"\n      ],\n      \"riskClass\": \"financial_analysis\",\n      \"output\": \"Runway supports waiting one quarter.\",\n      \"error\": null,\n      \"createdAt\": \"2026-02-17T10:30:05Z\",\n      \"completedAt\": \"2026-02-17T10:30:40Z\",\n      \"canCreateArtifacts\": false,\n      \"canWriteStreamEntries\": false\n    }\n  ],\n  \"phase\": \"complete\",\n  \"activeToolClasses\": [],\n  \"activeRiskClass\": null,\n  \"canCreateArtifacts\": false,\n  \"canWriteStreamEntries\": false\n}"
            }
          ]
        },
        {
          "name": "Get Agent Run Progress",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/agent/run/{{run_id}}/progress?channel=true",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "agent",
                "run",
                "{{run_id}}",
                "progress"
              ],
              "query": [
                {
                  "key": "channel",
                  "value": "true"
                }
              ]
            },
            "description": "Returns cached progress events by default, or streams real-time progress updates when `channel=true` is provided. Connect with an EventSource client for SSE mode; omit the query parameter to poll the current event buffer."
          },
          "response": [
            {
              "name": "200 OK (Polling)",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runId\": \"uuid\",\n  \"phase\": \"planning\",\n  \"events\": [\n    {\n      \"type\": \"init\",\n      \"runId\": \"uuid\",\n      \"pattern\": \"parallel\",\n      \"effort\": \"high\",\n      \"intent\": \"research\",\n      \"executionMode\": \"genesis-exploratory\",\n      \"traceMode\": \"compact\",\n      \"writePolicy\": \"artifact_allowed\",\n      \"toolClasses\": [\n        \"read\",\n        \"analyze\",\n        \"write\"\n      ],\n      \"riskClass\": \"sensitive_write\",\n      \"phase\": \"planning\",\n      \"activeToolClasses\": [],\n      \"activeRiskClass\": null,\n      \"canCreateArtifacts\": false,\n      \"canWriteStreamEntries\": false\n    },\n    {\n      \"type\": \"planning\",\n      \"objective\": \"Analyze our expansion readiness\",\n      \"workersPlanned\": 4\n    },\n    {\n      \"type\": \"phase\",\n      \"phase\": \"executing\",\n      \"activeToolClasses\": [\n        \"read\",\n        \"analyze\"\n      ],\n      \"activeRiskClass\": \"standard\",\n      \"canCreateArtifacts\": false,\n      \"canWriteStreamEntries\": false\n    },\n    {\n      \"type\": \"subagents_status\",\n      \"planned\": 4,\n      \"spawned\": 0,\n      \"unspawned\": 4,\n      \"queued\": 4,\n      \"pending\": 0,\n      \"running\": 0,\n      \"completed\": 0,\n      \"failed\": 0,\n      \"maxConcurrentChildren\": 2,\n      \"taskClasses\": [\n        {\n          \"taskClass\": \"finance\",\n          \"planned\": 1,\n          \"spawned\": 0,\n          \"unspawned\": 1,\n          \"queued\": 1,\n          \"pending\": 0,\n          \"running\": 0,\n          \"completed\": 0,\n          \"failed\": 0\n        },\n        {\n          \"taskClass\": \"growth\",\n          \"planned\": 3,\n          \"spawned\": 0,\n          \"unspawned\": 3,\n          \"queued\": 3,\n          \"pending\": 0,\n          \"running\": 0,\n          \"completed\": 0,\n          \"failed\": 0\n        }\n      ]\n    },\n    {\n      \"type\": \"subagent_progress\",\n      \"runId\": \"child-1\",\n      \"role\": \"finance\",\n      \"taskClass\": \"finance\",\n      \"status\": \"running\",\n      \"phase\": \"executing\",\n      \"activeToolClasses\": [\n        \"read\",\n        \"analyze\"\n      ],\n      \"activeRiskClass\": \"financial_analysis\",\n      \"canCreateArtifacts\": false,\n      \"canWriteStreamEntries\": false\n    }\n  ],\n  \"activeToolClasses\": [],\n  \"activeRiskClass\": null,\n  \"canCreateArtifacts\": false,\n  \"canWriteStreamEntries\": false\n}"
            },
            {
              "name": "200 OK (SSE)",
              "status": "OK",
              "code": 200,
              "body": ": connected to progress stream\n\nevent: progress\ndata: {\"type\":\"init\",\"runId\":\"uuid\",\"pattern\":\"parallel\",\"effort\":\"high\",\"phase\":\"planning\",\"intent\":\"research\",\"executionMode\":\"genesis-exploratory\",\"traceMode\":\"compact\",\"writePolicy\":\"artifact_allowed\",\"toolClasses\":[\"read\",\"analyze\",\"write\"],\"riskClass\":\"sensitive_write\",\"activeToolClasses\":[],\"activeRiskClass\":null,\"canCreateArtifacts\":false,\"canWriteStreamEntries\":false}\n\nevent: progress\ndata: {\"type\":\"phase\",\"phase\":\"executing\",\"activeToolClasses\":[\"read\",\"analyze\"],\"activeRiskClass\":\"standard\",\"canCreateArtifacts\":false,\"canWriteStreamEntries\":false}\n\nevent: progress\ndata: {\"type\":\"subagents_status\",\"planned\":4,\"spawned\":0,\"unspawned\":4,\"queued\":4,\"pending\":0,\"running\":0,\"completed\":0,\"failed\":0,\"maxConcurrentChildren\":2,\"taskClasses\":[{\"taskClass\":\"finance\",\"planned\":1,\"spawned\":0,\"unspawned\":1,\"queued\":1,\"pending\":0,\"running\":0,\"completed\":0,\"failed\":0},{\"taskClass\":\"growth\",\"planned\":3,\"spawned\":0,\"unspawned\":3,\"queued\":3,\"pending\":0,\"running\":0,\"completed\":0,\"failed\":0}]}\n\nevent: progress\ndata: {\"type\":\"subagent_progress\",\"runId\":\"child-1\",\"role\":\"finance\",\"taskClass\":\"finance\",\"status\":\"running\",\"phase\":\"executing\",\"activeToolClasses\":[\"read\",\"analyze\"],\"activeRiskClass\":\"financial_analysis\",\"canCreateArtifacts\":false,\"canWriteStreamEntries\":false}\n\nevent: progress\ndata: {\"type\":\"complete\",\"metrics\":{\"totalTokens\":8500}}\n\nevent: done\ndata: {}"
            }
          ]
        },
        {
          "name": "Save Agent Run",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Pricing memo snapshot\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/agent/run/{{run_id}}/save?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "agent",
                "run",
                "{{run_id}}",
                "save"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Saves the completed text output of a canonical run as a generic artifact. Only completed runs with text output are accepted."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"artifactId\": \"uuid\",\n  \"artifactGroupId\": \"uuid\",\n  \"versionNumber\": 1,\n  \"annotationCount\": 1\n}"
            }
          ]
        },
        {
          "name": "Invoke Council",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"question\": \"Should we raise a Series A now?\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/council/invoke",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "council",
                "invoke"
              ]
            },
            "description": "Compatibility wrapper that starts a Council run on the canonical agent/run substrate and returns a run ID for polling."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runId\": \"uuid\",\n  \"status\": \"pending\"\n}"
            }
          ]
        },
        {
          "name": "Get Council Result",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/council/result?runId={{run_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "council",
                "result"
              ],
              "query": [
                {
                  "key": "runId",
                  "value": "{{run_id}}"
                }
              ]
            },
            "description": "Convenience poll endpoint that reshapes a canonical Council run into the public Council output shape."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"status\": \"complete\",\n  \"answer\": \"Wait one quarter before raising.\",\n  \"confidence\": 0.5,\n  \"dissent\": null,\n  \"perspectives\": [\n    {\n      \"agent\": \"Finance\",\n      \"summary\": \"Runway supports waiting.\",\n      \"score\": 1,\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  ],\n  \"citations\": [],\n  \"metadata\": {\n    \"tier\": \"starter\",\n    \"duration_ms\": 2100,\n    \"tokens_used\": 1200,\n    \"credits_used\": 1\n  }\n}"
            }
          ]
        },
        {
          "name": "Invoke Panel",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"question\": \"Should we expand into Germany now or wait?\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/panel/invoke",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "panel",
                "invoke"
              ]
            },
            "description": "Compatibility wrapper that starts a Panel run on the canonical agent/run substrate and returns a run ID for polling."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runId\": \"uuid\",\n  \"status\": \"pending\"\n}"
            }
          ]
        },
        {
          "name": "Get Panel Result",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/panel/result?runId={{run_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "panel",
                "result"
              ],
              "query": [
                {
                  "key": "runId",
                  "value": "{{run_id}}"
                }
              ]
            },
            "description": "Convenience poll endpoint that reshapes a canonical Panel run into the public Panel output shape."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"status\": \"complete\",\n  \"answer\": \"Wait one quarter before expanding.\",\n  \"confidence\": 0.5,\n  \"conflicts\": \"Legal wants stronger GDPR localization first.\",\n  \"perspectives\": [\n    {\n      \"agent\": \"Expansion\",\n      \"summary\": \"Demand is sufficient if onboarding stays strong.\",\n      \"score\": 1,\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  ],\n  \"metadata\": {\n    \"tier\": \"starter\",\n    \"duration_ms\": 2100,\n    \"tokens_used\": 1200,\n    \"credits_used\": 1\n  }\n}"
            }
          ]
        },
        {
          "name": "Invoke Research Panel",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"topic\": \"How are enterprise buyers evaluating AI copilots?\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/research-panel/invoke",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "research-panel",
                "invoke"
              ]
            },
            "description": "Starts a research-panel run and returns a run ID for polling."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runId\": \"uuid\",\n  \"status\": \"pending\"\n}"
            }
          ]
        },
        {
          "name": "Get Research Panel Result",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/research-panel/result?runId={{run_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "research-panel",
                "result"
              ],
              "query": [
                {
                  "key": "runId",
                  "value": "{{run_id}}"
                }
              ]
            },
            "description": "Polls the normalized research-panel result shape."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"status\": \"complete\",\n  \"summary\": \"Enterprise buyers now lead with security reviews.\",\n  \"confidence\": \"0.74\",\n  \"findings\": [\n    \"Security reviews dominate cycle time\"\n  ],\n  \"contradictions\": [\n    \"Mid-market still optimizes for speed\"\n  ],\n  \"liabilityMode\": \"analysis_only\",\n  \"requiresHumanReview\": false,\n  \"requiresCautionNote\": true,\n  \"liabilityNote\": \"Note: treat this as model-generated analysis that still requires human judgment before acting on it.\",\n  \"metadata\": {\n    \"tier\": \"starter\",\n    \"duration_ms\": 1800,\n    \"tokens_used\": 320,\n    \"credits_used\": 1,\n    \"models_used\": [\n      \"claude-sonnet-4-6\"\n    ]\n  }\n}"
            }
          ]
        },
        {
          "name": "Invoke Deep Research",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"query\": \"Recent pricing changes by competitor X\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/deep-research/invoke",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "deep-research",
                "invoke"
              ]
            },
            "description": "Starts a deep-research run and returns a run ID for polling."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"runId\": \"uuid\",\n  \"status\": \"pending\"\n}"
            }
          ]
        },
        {
          "name": "Get Deep Research Result",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/deep-research/result?runId={{run_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "deep-research",
                "result"
              ],
              "query": [
                {
                  "key": "runId",
                  "value": "{{run_id}}"
                }
              ]
            },
            "description": "Polls the normalized deep-research result shape."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"status\": \"complete\",\n  \"summary\": \"Two major launches landed this month.\",\n  \"pagesScraped\": 5,\n  \"sourcesFound\": 11,\n  \"liabilityMode\": \"analysis_only\",\n  \"requiresHumanReview\": false,\n  \"requiresCautionNote\": true,\n  \"liabilityNote\": \"Note: treat this as synthesized external research; verify key claims and sources before acting on it.\",\n  \"metadata\": {\n    \"tier\": \"growth\",\n    \"duration_ms\": 2800,\n    \"credits_used\": 2,\n    \"models_used\": [\n      \"claude-sonnet-4-6\"\n    ]\n  }\n}"
            }
          ]
        },
        {
          "name": "Route Question",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{api_key}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"question\": \"Should we raise now or wait six months?\",\n  \"contextSummary\": \"B2B fintech compliance platform with 18 months of runway.\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/orchestrate/route",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "orchestrate",
                "route"
              ]
            },
            "description": "Routes a question to council, panel, research-panel, or deep-research before invoking a run."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"agent\": \"council\",\n  \"needsWebEnrichment\": false,\n  \"contextSufficient\": true,\n  \"reason\": \"This is a strategic decision with trade-offs, so council is the best fit.\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Knowledge Trees",
      "item": [
        {
          "name": "Get Knowledge Trees",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/knowledge-trees?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "knowledge-trees"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Returns all knowledge tree domains for a company, including their sections and content. Knowledge trees are auto-generated structured summaries of company knowledge organized by domain (Finance, Product, GTM, etc.)."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"companyId\": \"uuid\",\n  \"domains\": [\n    {\n      \"domainId\": \"finance\",\n      \"domainLabel\": \"Finance/Funding\",\n      \"hasTree\": true,\n      \"artifactId\": \"uuid\",\n      \"vertical\": \"SaaS\",\n      \"sections\": [\n        {\n          \"topicId\": \"fundraising\",\n          \"topicName\": \"Fundraising\",\n          \"topicDescription\": \"Capital raising history and strategy\",\n          \"content\": \"Series A closed at $8M led by Sequoia. Currently exploring Series B timing for Q3 2026.\"\n        }\n      ],\n      \"generatedAt\": \"2026-02-15T10:00:00Z\",\n      \"updatedAt\": \"2026-02-15T10:00:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Generate Knowledge Trees",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"company_id\": \"{{company_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/company/knowledge-trees/generate",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "knowledge-trees",
                "generate"
              ]
            },
            "description": "Triggers async generation of knowledge trees from all company conversations. Processes conversations and extracts structured domain knowledge. Returns immediately with an event ID for tracking."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"event_id\": \"inngest-event-id\",\n  \"conversation_id\": \"uuid\",\n  \"message\": \"Knowledge tree generation started from your conversations.\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Rooms",
      "item": [
        {
          "name": "List Rooms",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/rooms?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Returns all rooms for a company. Rooms are organizational containers for artifacts, stream entries, and conversations."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"rooms\": [\n    {\n      \"id\": \"uuid\",\n      \"label\": \"engineering\",\n      \"name\": \"Engineering\",\n      \"description\": \"Technical architecture, code reviews, and engineering decisions\",\n      \"icon\": null,\n      \"visibility\": \"team\",\n      \"created_at\": \"2026-01-15T10:00:00Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"label\": \"fundraising\",\n      \"name\": \"Fundraising\",\n      \"description\": \"Investor conversations, pitch materials, and term sheets\",\n      \"icon\": null,\n      \"visibility\": \"private\",\n      \"created_at\": \"2026-01-20T14:00:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create Room",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"label\": \"strategy\",\n  \"name\": \"Strategy Room\",\n  \"description\": \"Strategic planning and company direction\",\n  \"visibility\": \"team\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/rooms",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms"
              ]
            },
            "description": "Creates a new room for organizing artifacts and knowledge."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"room\": {\n    \"id\": \"uuid\",\n    \"label\": \"strategy\",\n    \"name\": \"Strategy Room\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Get Room",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}"
              ]
            },
            "description": "Returns details for a single room by ID. Supports API keys and browser sessions; unscoped API keys must include X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"room\": {\n    \"id\": \"uuid\",\n    \"label\": \"engineering\",\n    \"name\": \"Engineering\",\n    \"description\": \"Technical architecture, code reviews, and engineering decisions\",\n    \"icon\": null,\n    \"visibility\": \"team\",\n    \"company_id\": \"uuid\",\n    \"artifact_count\": 23,\n    \"member_count\": 8,\n    \"last_activity_at\": \"2026-02-24T16:00:00Z\",\n    \"created_by\": \"uuid\",\n    \"created_at\": \"2026-01-15T10:00:00Z\",\n    \"updated_at\": \"2026-02-24T16:00:00Z\",\n    \"charter\": null\n  }\n}"
            }
          ]
        },
        {
          "name": "List Room Saved Views",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/views",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "views"
              ]
            },
            "description": "Returns saved views for a room, ordered by pinned state and position. Browser-session route."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"views\": [\n    {\n      \"id\": \"uuid\",\n      \"room_id\": \"{{room_id}}\",\n      \"company_id\": \"{{company_id}}\",\n      \"created_by\": \"uuid\",\n      \"name\": \"Financial Briefs\",\n      \"description\": \"Only live finance artifacts\",\n      \"icon\": \"folder\",\n      \"filters\": {\n        \"content_type\": [\"brief\"],\n        \"domain\": [\"finance\"],\n        \"status\": [\"active\"]\n      },\n      \"position\": 0,\n      \"is_pinned\": true,\n      \"created_at\": \"2026-04-02T14:00:00Z\",\n      \"updated_at\": \"2026-04-02T14:00:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create Room Saved View",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Financial Briefs\",\n  \"description\": \"Only live finance artifacts\",\n  \"icon\": \"folder\",\n  \"filters\": {\n    \"content_type\": [\"brief\"],\n    \"domain\": [\"finance\"],\n    \"status\": [\"active\"]\n  },\n  \"is_pinned\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/views",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "views"
              ]
            },
            "description": "Creates a saved view for a room. Browser-session route."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"view\": {\n    \"id\": \"uuid\",\n    \"room_id\": \"{{room_id}}\",\n    \"company_id\": \"{{company_id}}\",\n    \"created_by\": \"uuid\",\n    \"name\": \"Financial Briefs\",\n    \"description\": \"Only live finance artifacts\",\n    \"icon\": \"folder\",\n    \"filters\": {\n      \"content_type\": [\"brief\"],\n      \"domain\": [\"finance\"],\n      \"status\": [\"active\"]\n    },\n    \"position\": 1,\n    \"is_pinned\": true,\n    \"created_at\": \"2026-04-02T14:10:00Z\",\n    \"updated_at\": \"2026-04-02T14:10:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Get Room Saved View",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/views/{{view_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "views",
                "{{view_id}}"
              ]
            },
            "description": "Returns one saved view for a room. Browser-session route."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"view\": {\n    \"id\": \"{{view_id}}\",\n    \"room_id\": \"{{room_id}}\",\n    \"company_id\": \"{{company_id}}\",\n    \"created_by\": \"uuid\",\n    \"name\": \"Financial Briefs\",\n    \"description\": \"Only live finance artifacts\",\n    \"icon\": \"folder\",\n    \"filters\": {\n      \"content_type\": [\"brief\"],\n      \"domain\": [\"finance\"],\n      \"status\": [\"active\"]\n    },\n    \"position\": 0,\n    \"is_pinned\": true,\n    \"created_at\": \"2026-04-02T14:00:00Z\",\n    \"updated_at\": \"2026-04-02T14:00:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Update Room Saved View",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Pinned Financial Briefs\",\n  \"is_pinned\": true,\n  \"position\": 0,\n  \"filters\": {\n    \"content_type\": [\"brief\"],\n    \"domain\": [\"finance\"],\n    \"status\": [\"active\", \"archived\"]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/views/{{view_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "views",
                "{{view_id}}"
              ]
            },
            "description": "Updates one saved view. Only the creator can modify it."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"view\": {\n    \"id\": \"{{view_id}}\",\n    \"room_id\": \"{{room_id}}\",\n    \"company_id\": \"{{company_id}}\",\n    \"created_by\": \"uuid\",\n    \"name\": \"Pinned Financial Briefs\",\n    \"description\": \"Only live finance artifacts\",\n    \"icon\": \"folder\",\n    \"filters\": {\n      \"content_type\": [\"brief\"],\n      \"domain\": [\"finance\"],\n      \"status\": [\"active\", \"archived\"]\n    },\n    \"position\": 0,\n    \"is_pinned\": true,\n    \"created_at\": \"2026-04-02T14:00:00Z\",\n    \"updated_at\": \"2026-04-02T14:30:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Delete Room Saved View",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/views/{{view_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "views",
                "{{view_id}}"
              ]
            },
            "description": "Deletes one saved view. Only the creator can delete it."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true\n}"
            }
          ]
        },
        {
          "name": "List Room Artifacts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/artifacts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "artifacts"
              ]
            },
            "description": "Returns all artifacts assigned to a room."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"artifacts\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"System Architecture v2\",\n      \"artifact_type\": \"technical_spec\",\n      \"description\": \"Updated microservices architecture proposal\",\n      \"tags\": [\"architecture\", \"backend\"],\n      \"is_final_version\": true,\n      \"created_at\": \"2026-02-10T09:00:00Z\",\n      \"updated_at\": \"2026-02-20T11:00:00Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"title\": \"API Design Guidelines\",\n      \"artifact_type\": \"general_draft\",\n      \"description\": \"REST API conventions and standards\",\n      \"tags\": [\"api\", \"standards\"],\n      \"is_final_version\": false,\n      \"created_at\": \"2026-01-28T14:00:00Z\",\n      \"updated_at\": \"2026-02-15T16:30:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "List Room Stream Entries",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/streams?companyId={{company_id}}&limit=20",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "streams"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "limit",
                  "value": "20"
                }
              ]
            },
            "description": "Returns stream entries scoped to a specific room."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"entries\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Adopted gRPC for service mesh\",\n      \"content\": \"Moving inter-service communication from REST to gRPC for performance.\",\n      \"type\": \"decisions\",\n      \"domain\": \"product\",\n      \"lifecycle\": \"strategy\",\n      \"reversibility\": \"costly\",\n      \"confidence\": \"validated\",\n      \"priority\": \"high\",\n      \"status\": \"active\",\n      \"superseded_by\": null,\n      \"superseded_at\": null,\n      \"created_at\": \"2026-02-18T10:00:00Z\",\n      \"updated_at\": \"2026-02-18T10:00:00Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"title\": \"P99 latency dropped below 50ms\",\n      \"content\": \"After the caching layer rollout, API P99 latency is now consistently under 50ms.\",\n      \"type\": \"wins\",\n      \"domain\": \"product\",\n      \"lifecycle\": \"execution\",\n      \"reversibility\": null,\n      \"confidence\": \"validated\",\n      \"priority\": \"medium\",\n      \"status\": \"active\",\n      \"superseded_by\": null,\n      \"superseded_at\": null,\n      \"created_at\": \"2026-02-14T15:00:00Z\",\n      \"updated_at\": \"2026-02-14T15:00:00Z\"\n    }\n  ],\n  \"total\": 2\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Search",
      "item": [
        {
          "name": "Semantic Search",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"query\": \"fundraising strategy\",\n  \"companyId\": \"{{company_id}}\",\n  \"limit\": 10,\n  \"threshold\": 0.5\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/search",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "search"
              ]
            },
            "description": "Performs semantic (vector) search across artifacts and conversations. Uses pgvector embeddings to find the most relevant results by meaning, not just keyword matching."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"artifacts\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Series A Pitch Deck\",\n      \"artifactType\": \"pitch_deck\",\n      \"contentPreview\": \"Our Series A deck highlights $1.5M ARR, 118% NRR, and a $4B addressable market...\",\n      \"similarity\": 0.87\n    }\n  ],\n  \"conversations\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"Fundraising Discussion\",\n      \"summary\": \"Discussed Series A timing, target raise of $10M, and key investor conversations with Sequoia and a16z.\",\n      \"createdAt\": \"2026-02-07T14:30:00Z\",\n      \"similarity\": 0.82\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Initiatives",
      "item": [
        {
          "name": "List Initiatives",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/initiatives?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "initiatives"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Returns all initiatives for a company. Initiatives are high-level goals or projects that can be linked to accounts and contacts."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"initiatives\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Close Series A\",\n      \"status\": \"active\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Launch EU Market\",\n      \"status\": \"active\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"name\": \"SOC 2 Certification\",\n      \"status\": \"completed\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create Initiative Link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"initiativeId\": \"uuid\",\n  \"initiativeName\": \"Close Series A\",\n  \"leadAccountId\": \"uuid\",\n  \"accountIds\": [],\n  \"contactIds\": []\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/company/initiative-links",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "initiative-links"
              ]
            },
            "description": "Links accounts and contacts to an initiative. Used to track which entities are involved in a strategic initiative."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"initiativeId\": \"uuid\",\n  \"linksCreated\": 1,\n  \"linked\": {\n    \"leadAccountId\": \"uuid\",\n    \"accountIds\": [\"uuid\"],\n    \"contactIds\": []\n  }\n}"
            }
          ]
        },
        {
          "name": "Get Initiative Links",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/company/initiative-links?companyId={{company_id}}&initiativeId=uuid",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "company",
                "initiative-links"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                },
                {
                  "key": "initiativeId",
                  "value": "uuid"
                }
              ]
            },
            "description": "Returns all entities (accounts, contacts) linked to a specific initiative."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"initiativeId\": \"uuid\",\n  \"initiative\": {\n    \"name\": \"Close Series A\"\n  },\n  \"leadAccount\": {\n    \"id\": \"uuid\",\n    \"name\": \"Sequoia Capital\",\n    \"domain\": \"sequoiacap.com\",\n    \"type\": \"investor\",\n    \"stage\": null,\n    \"investment_stage\": \"series_a\"\n  },\n  \"accounts\": [\n    {\n      \"id\": \"uuid\",\n      \"name\": \"Sequoia Capital\",\n      \"domain\": \"sequoiacap.com\",\n      \"type\": \"investor\",\n      \"stage\": null,\n      \"investment_stage\": \"series_a\"\n    }\n  ],\n  \"contacts\": [\n    {\n      \"id\": \"uuid\",\n      \"account_id\": \"uuid\",\n      \"name\": \"Jane Smith\",\n      \"email\": \"jane@sequoiacap.com\"\n    }\n  ],\n  \"relationCount\": 2\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "GitHub",
      "item": [
        {
          "name": "Track GitHub Issue",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"room_id\": \"{{room_id}}\",\n  \"issue_url\": \"https://github.com/rapha9l/operalta-app/issues/1\",\n  \"issue_number\": 1,\n  \"title\": \"Ship DTO cleanup\",\n  \"issue_type\": \"task\",\n  \"decision_content\": \"Stabilize public contract\",\n  \"stream_entry_id\": \"{{stream_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/github/issues",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "github",
                "issues"
              ]
            },
            "description": "Creates a tracked GitHub issue linked to a room and optional stream entry."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"id\": \"uuid\",\n  \"company_id\": \"uuid\",\n  \"room_id\": \"uuid\",\n  \"issue_url\": \"https://github.com/rapha9l/operalta-app/issues/1\",\n  \"issue_number\": 1,\n  \"title\": \"Ship DTO cleanup\",\n  \"issue_type\": \"task\",\n  \"state\": \"open\",\n  \"decision_content\": \"Stabilize public contract\",\n  \"stream_entry_id\": \"uuid\",\n  \"origin\": \"cli\",\n  \"tracked_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T12:00:00Z\",\n  \"updated_at\": \"2026-04-02T12:00:00Z\"\n}"
            }
          ]
        },
        {
          "name": "List Room GitHub Issues",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/rooms/{{room_id}}/github-issues?state=open&type=task&limit=10",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "rooms",
                "{{room_id}}",
                "github-issues"
              ],
              "query": [
                {
                  "key": "state",
                  "value": "open"
                },
                {
                  "key": "type",
                  "value": "task"
                },
                {
                  "key": "limit",
                  "value": "10"
                }
              ]
            },
            "description": "Lists tracked GitHub issues attached to a room."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"issues\": [\n    {\n      \"id\": \"uuid\",\n      \"company_id\": \"uuid\",\n      \"room_id\": \"uuid\",\n      \"issue_url\": \"https://github.com/rapha9l/operalta-app/issues/1\",\n      \"issue_number\": 1,\n      \"title\": \"Ship DTO cleanup\",\n      \"issue_type\": \"task\",\n      \"state\": \"open\",\n      \"decision_content\": \"Stabilize public contract\",\n      \"stream_entry_id\": \"uuid\",\n      \"origin\": \"cli\",\n      \"tracked_by\": \"uuid\",\n      \"created_at\": \"2026-04-02T12:00:00Z\",\n      \"updated_at\": \"2026-04-02T12:00:00Z\"\n    }\n  ],\n  \"total\": 1\n}"
            }
          ]
        },
        {
          "name": "Update Tracked GitHub Issue",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "X-Company-Id",
                "value": "{{company_id}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"state\": \"closed\",\n  \"decision_content\": \"Implemented\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/github/issues/{{tracked_issue_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "github",
                "issues",
                "{{tracked_issue_id}}"
              ]
            },
            "description": "Updates tracked GitHub issue state, title, or decision content."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"id\": \"uuid\",\n  \"company_id\": \"uuid\",\n  \"room_id\": \"uuid\",\n  \"issue_url\": \"https://github.com/rapha9l/operalta-app/issues/1\",\n  \"issue_number\": 1,\n  \"title\": \"Ship DTO cleanup\",\n  \"issue_type\": \"task\",\n  \"state\": \"closed\",\n  \"decision_content\": \"Implemented\",\n  \"stream_entry_id\": \"uuid\",\n  \"origin\": \"cli\",\n  \"tracked_by\": \"uuid\",\n  \"created_at\": \"2026-04-02T12:00:00Z\",\n  \"updated_at\": \"2026-04-02T13:00:00Z\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Metrics Sharing",
      "item": [
        {
          "name": "Create Metrics Grant",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"scope\": [\"metrics\", \"context\"],\n  \"recipientCompanyId\": \"uuid\",\n  \"includeHistorical\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/metrics/grants",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "metrics",
                "grants"
              ]
            },
            "description": "Creates a metrics sharing grant, allowing a recipient company or user to view your selected scopes. Scope controls what is shared."
          },
          "response": [
            {
              "name": "201 Created",
              "status": "Created",
              "code": 201,
              "body": "{\n  \"grant\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"granted_by\": \"uuid\",\n    \"recipient_company_id\": \"uuid\",\n    \"recipient_user_id\": null,\n    \"scope\": [\"metrics\", \"context\"],\n    \"metric_ids\": [],\n    \"include_historical\": true,\n    \"status\": \"active\",\n    \"note\": null,\n    \"expires_at\": null,\n    \"revoked_at\": null,\n    \"revoked_by\": null,\n    \"created_at\": \"2026-02-25T10:00:00Z\",\n    \"updated_at\": \"2026-02-25T10:00:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "List Metrics Grants",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/metrics/grants?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "metrics",
                "grants"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Returns all metrics sharing grants issued by the authenticated company, including active and revoked grants."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"grants\": [\n    {\n      \"id\": \"uuid\",\n      \"company_id\": \"uuid\",\n      \"granted_by\": \"uuid\",\n      \"recipient_company_id\": \"uuid\",\n      \"recipient_user_id\": null,\n      \"scope\": [\"metrics\", \"context\"],\n      \"metric_ids\": [],\n      \"include_historical\": true,\n      \"status\": \"active\",\n      \"note\": null,\n      \"expires_at\": null,\n      \"revoked_at\": null,\n      \"revoked_by\": null,\n      \"created_at\": \"2026-02-10T09:00:00Z\",\n      \"updated_at\": \"2026-02-10T09:00:00Z\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Revoke Metrics Grant",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/metrics/grants/{{grant_id}}/revoke?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "metrics",
                "grants",
                "{{grant_id}}",
                "revoke"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Revokes an active metrics sharing grant. The recipient will immediately lose access to the shared data."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"grant\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"granted_by\": \"uuid\",\n    \"recipient_company_id\": \"uuid\",\n    \"recipient_user_id\": null,\n    \"scope\": [\"metrics\", \"context\"],\n    \"metric_ids\": [],\n    \"include_historical\": true,\n    \"status\": \"revoked\",\n    \"note\": null,\n    \"expires_at\": null,\n    \"revoked_at\": \"2026-02-25T12:00:00Z\",\n    \"revoked_by\": \"uuid\",\n    \"created_at\": \"2026-02-10T09:00:00Z\",\n    \"updated_at\": \"2026-02-25T12:00:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Read Published Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/metrics/published/{{company_id}}?period=2026-02",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "metrics",
                "published",
                "{{company_id}}"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "2026-02",
                  "description": "Optional. Pin a specific published period key instead of the latest allowed report send."
                }
              ]
            },
            "description": "Reads published metrics shared with you by another company. Requires an active grant from the target company. Returns only report snapshots, never live company_metrics. The response includes grant metadata, company metadata, summary metrics, period snapshots, and the latest publication metadata."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"grantId\": \"uuid\",\n  \"scope\": [\"metrics\"],\n  \"expiresAt\": null,\n  \"mode\": \"published_grant\",\n  \"source\": \"report_metric_snapshots\",\n  \"company\": {\n    \"id\": \"uuid\",\n    \"name\": \"Portfolio Co Alpha\",\n    \"vertical\": \"b2b-saas\",\n    \"stage\": \"series_a\"\n  },\n  \"metrics\": {\n    \"summary\": {\n      \"mrr\": 85000,\n      \"arr\": 1020000,\n      \"runway\": 14,\n      \"headcount\": 18,\n      \"customer_count\": 31,\n      \"churn_rate\": 3.2,\n      \"mrr_growth\": 8.7\n    },\n    \"periods\": [\n      {\n        \"periodKey\": \"2026-02\",\n        \"periodType\": \"month\",\n        \"reportId\": \"uuid\",\n        \"versionNumber\": 3,\n        \"sentAt\": \"2026-02-20T10:00:00Z\",\n        \"data\": {\n          \"mrr\": 85000,\n          \"arr\": 1020000,\n          \"runway\": 14,\n          \"headcount\": 18\n        }\n      }\n    ]\n  },\n  \"publication\": {\n    \"reportId\": \"uuid\",\n    \"periodKey\": \"2026-02\",\n    \"versionNumber\": 3,\n    \"sentAt\": \"2026-02-20T10:00:00Z\",\n    \"shareToken\": \"share_abc123\",\n    \"viewerPolicy\": {\n      \"watermarkExternal\": true\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "List Reports",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports?companyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports"
              ],
              "query": [
                {
                  "key": "companyId",
                  "value": "{{company_id}}",
                  "description": "Required for browser and unbound Bearer callers. Bound Bearer tokens may send X-Company-Id instead."
                }
              ]
            },
            "description": "Lists draft and published reports for a company. Supports browser sessions and Bearer callers with reports:read."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"reports\": [\n    {\n      \"id\": \"uuid\",\n      \"title\": \"February Investor Update\",\n      \"template_id\": \"monthly-update\",\n      \"date_range_start\": \"2026-02-01\",\n      \"date_range_end\": \"2026-02-29\",\n      \"date_preset\": \"month\",\n      \"generation_time_ms\": 18420,\n      \"total_entries\": 32,\n      \"created_at\": \"2026-03-01T09:12:00Z\",\n      \"created_by\": \"uuid\",\n      \"report_json\": {\n        \"summary\": {\n          \"markdown\": \"# Summary\"\n        }\n      },\n      \"markdown_summary\": \"# Summary\",\n      \"status\": \"draft\",\n      \"annotations_enabled\": true\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Create Draft Report",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"companyId\": \"{{company_id}}\",\n  \"title\": \"February Investor Update\",\n  \"templateId\": \"monthly-update\",\n  \"markdownBundle\": {\n    \"summary\": \"# Summary\",\n    \"detailed\": \"# Detailed\"\n  },\n  \"reportJson\": {\n    \"summary\": {},\n    \"detailed\": {}\n  },\n  \"dateRangeStart\": \"2026-02-01\",\n  \"dateRangeEnd\": \"2026-02-29\",\n  \"datePreset\": \"month\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/reports",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports"
              ]
            },
            "description": "Creates a draft report. Supports browser sessions and Bearer callers with reports:write; Bearer callers can bind the company from the request body or X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"report\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"title\": \"February Investor Update\",\n    \"template_id\": \"monthly-update\",\n    \"markdown\": \"# Summary\",\n    \"markdown_bundle\": {\n      \"summary\": \"# Summary\",\n      \"detailed\": \"# Detailed\"\n    },\n    \"report_json\": {\n      \"summary\": {},\n      \"detailed\": {}\n    },\n    \"date_range_start\": \"2026-02-01\",\n    \"date_range_end\": \"2026-02-29\",\n    \"date_preset\": \"month\",\n    \"generation_time_ms\": 18420,\n    \"total_entries\": 32,\n    \"created_by\": \"uuid\",\n    \"created_at\": \"2026-03-01T09:12:00Z\",\n    \"updated_at\": \"2026-03-01T09:12:00Z\",\n    \"status\": \"draft\",\n    \"variant\": null,\n    \"edited_markdown\": null,\n    \"markdown_summary\": null,\n    \"markdown_executive\": null,\n    \"markdown_detailed\": null,\n    \"annotations_enabled\": true,\n    \"memorized_at\": null,\n    \"sent_at\": null,\n    \"error_message\": null,\n    \"source_type\": null,\n    \"source_attachment_id\": null,\n    \"parent_report_id\": null,\n    \"child_report_ids\": null,\n    \"rollup_summary\": null,\n    \"content\": null,\n    \"metadata\": null,\n    \"source_entry_ids\": null,\n    \"source_query\": null,\n    \"company\": {\n      \"id\": \"uuid\",\n      \"name\": \"Acme\",\n      \"slug\": \"acme\",\n      \"vertical\": \"b2b-saas\"\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Update Draft Report",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reportId\": \"{{report_id}}\",\n  \"editedMarkdown\": \"# Updated summary\",\n  \"variant\": \"summary\",\n  \"changeDescription\": \"Refresh summary\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/reports",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports"
              ]
            },
            "description": "Updates a draft report variant and stores a version snapshot first. Bearer callers use reports:write and should pass X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"version\": 3,\n  \"report\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"title\": \"February Investor Update\",\n    \"template_id\": \"monthly-update\",\n    \"status\": \"draft\",\n    \"variant\": \"summary\",\n    \"edited_markdown\": \"# Updated summary\",\n    \"markdown_summary\": \"# Updated summary\",\n    \"markdown_executive\": \"# Executive\",\n    \"markdown_detailed\": \"# Detailed\",\n    \"created_at\": \"2026-03-01T09:12:00Z\",\n    \"updated_at\": \"2026-03-01T10:05:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Get Report",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}"
              ]
            },
            "description": "Returns a single saved report. Supports browser sessions and Bearer callers with reports:read; Bearer callers should pass X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"report\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"title\": \"February Investor Update\",\n    \"template_id\": \"monthly-update\",\n    \"markdown\": \"# Summary\",\n    \"markdown_bundle\": {\n      \"summary\": \"# Summary\",\n      \"executive\": \"# Executive\",\n      \"detailed\": \"# Detailed\"\n    },\n    \"report_json\": {\n      \"summary\": {},\n      \"executive\": {},\n      \"detailed\": {}\n    },\n    \"date_range_start\": \"2026-02-01\",\n    \"date_range_end\": \"2026-02-29\",\n    \"date_preset\": \"month\",\n    \"generation_time_ms\": 18420,\n    \"total_entries\": 32,\n    \"created_by\": \"uuid\",\n    \"created_at\": \"2026-03-01T09:12:00Z\",\n    \"updated_at\": \"2026-03-01T09:12:00Z\",\n    \"status\": \"draft\",\n    \"variant\": \"detailed\",\n    \"edited_markdown\": null,\n    \"edited_at\": null,\n    \"edited_by\": null,\n    \"last_autosave_at\": null,\n    \"markdown_summary\": \"# Summary\",\n    \"markdown_executive\": \"# Executive\",\n    \"markdown_detailed\": \"# Detailed\",\n    \"annotations_enabled\": true,\n    \"memorized_at\": null,\n    \"sent_at\": null,\n    \"error_message\": null,\n    \"source_type\": null,\n    \"source_attachment_id\": null,\n    \"parent_report_id\": null,\n    \"child_report_ids\": null,\n    \"rollup_summary\": null,\n    \"content\": null,\n    \"metadata\": null,\n    \"source_entry_ids\": null,\n    \"source_query\": null,\n    \"company\": {\n      \"id\": \"uuid\",\n      \"name\": \"Acme\",\n      \"slug\": \"acme\",\n      \"vertical\": \"b2b-saas\"\n    }\n  }\n}"
            }
          ]
        },
        {
          "name": "Delete Report",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}"
              ]
            },
            "description": "Deletes a report only if it is still draft and has never been sent. Supports browser sessions and Bearer callers with reports:write; Bearer callers should pass X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true\n}"
            }
          ]
        },
        {
          "name": "Autosave Report",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"editedMarkdown\": \"# Updated summary\",\n  \"variant\": \"summary\",\n  \"createVersion\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}/autosave",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}",
                "autosave"
              ]
            },
            "description": "Autosaves draft report content without creating a formal version snapshot unless createVersion=true. Supports browser sessions and Bearer callers with reports:write."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"autosavedAt\": \"2026-03-23T10:00:00Z\",\n  \"versionCreated\": false\n}"
            }
          ]
        },
        {
          "name": "List Report Versions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}/versions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}",
                "versions"
              ]
            },
            "description": "Lists version history for a report. Supports browser sessions and Bearer callers with reports:read; Bearer callers should pass X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"versions\": [\n    {\n      \"id\": \"uuid\",\n      \"report_id\": \"uuid\",\n      \"markdown\": \"# Summary\",\n      \"variant\": \"summary\",\n      \"version_number\": 3,\n      \"created_by\": \"uuid\",\n      \"created_at\": \"2026-03-01T10:05:00Z\",\n      \"change_description\": \"Manual edit\",\n      \"created_by_profile\": {\n        \"name\": \"Alex Founder\",\n        \"email\": \"alex@example.com\"\n      }\n    }\n  ],\n  \"total\": 1\n}"
            }
          ]
        },
        {
          "name": "Restore Report Version",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"versionNumber\": 3\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}/versions",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}",
                "versions"
              ]
            },
            "description": "Restores a previous version into the current draft report. Supports browser sessions and Bearer callers with reports:write; Bearer callers should pass X-Company-Id."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"restoredFromVersion\": 3,\n  \"report\": {\n    \"id\": \"uuid\",\n    \"company_id\": \"uuid\",\n    \"title\": \"February Investor Update\",\n    \"template_id\": \"monthly-update\",\n    \"status\": \"draft\",\n    \"variant\": \"summary\",\n    \"edited_markdown\": \"# Summary\",\n    \"markdown_summary\": \"# Summary\",\n    \"created_at\": \"2026-03-01T09:12:00Z\",\n    \"updated_at\": \"2026-03-01T10:10:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Read Report Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}/metrics",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}",
                "metrics"
              ]
            },
            "description": "Reads the frozen report_metric_snapshots for a specific report. This route is snapshot-only and never falls back to live company_metrics."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"metrics\": [\n    {\n      \"id\": \"uuid\",\n      \"report_id\": \"uuid\",\n      \"metric_id\": \"mrr\",\n      \"metric_source\": \"datapack\",\n      \"company_id\": \"uuid\",\n      \"stage\": \"series_a\",\n      \"vertical\": \"saas\",\n      \"value\": 85000,\n      \"formatted_value\": \"$85K\",\n      \"status\": \"green\",\n      \"benchmark_target\": \">60K typical\",\n      \"previous_value\": 72000,\n      \"delta_percent\": 18.1,\n      \"benchmark_percentile\": 81,\n      \"source_period_key\": \"2026-02\",\n      \"calculation_params\": {\n        \"source\": \"actuals\"\n      },\n      \"captured_at\": \"2026-02-20T10:00:00Z\"\n    },\n    {\n      \"id\": \"uuid\",\n      \"report_id\": \"uuid\",\n      \"metric_id\": \"runway\",\n      \"metric_source\": \"stream\",\n      \"company_id\": \"uuid\",\n      \"stage\": \"series_a\",\n      \"vertical\": \"saas\",\n      \"value\": 14,\n      \"formatted_value\": \"14 months\",\n      \"status\": \"na\",\n      \"benchmark_target\": null,\n      \"previous_value\": 12,\n      \"delta_percent\": 16.7,\n      \"benchmark_percentile\": null,\n      \"source_period_key\": \"2026-02\",\n      \"calculation_params\": {\n        \"source\": \"derived\"\n      },\n      \"captured_at\": \"2026-02-20T10:00:00Z\"\n    }\n  ],\n  \"source\": \"report_metric_snapshots\"\n}"
            }
          ]
        },
        {
          "name": "Publish Report",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}/publish",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}",
                "publish"
              ]
            },
            "description": "Marks a draft report as published and queues report memorization. This route does not create or return a public share token; use /api/reports/share for public links."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"report\": {\n    \"id\": \"uuid\",\n    \"status\": \"published\"\n  },\n  \"memorizeQueued\": true,\n  \"memorizeJobId\": \"job_123\"\n}"
            }
          ]
        },
        {
          "name": "Send Report",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"audience\": {\n    \"emails\": [\"investor@example.com\"]\n  },\n  \"emailOptions\": {\n    \"layout\": \"standard\",\n    \"summaryType\": \"executive\",\n    \"showMetrics\": true\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/reports/{{report_id}}/send",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "{{report_id}}",
                "send"
              ]
            },
            "description": "Creates a frozen send record for a report and, in audience mode, queues delivery to recipients. Supports browser sessions and Bearer callers with reports:write."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"sendId\": \"uuid\",\n  \"shareUrl\": \"https://www.operalta.ai/reports/public/acme/2026-02/v1/share_abc123\",\n  \"periodKey\": \"2026-02\",\n  \"periodLabel\": \"February 2026\",\n  \"versionNumber\": 1,\n  \"recipients\": [\"investor@example.com\"],\n  \"recipientCount\": 1,\n  \"mode\": \"audience\",\n  \"viewerPolicy\": {\n    \"watermarkExternal\": true\n  }\n}"
            }
          ]
        },
        {
          "name": "Create Report Public Link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"id\": \"{{report_id}}\",\n  \"access\": \"anyone-view\",\n  \"expiresInDays\": 30\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/reports/share",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "share"
              ]
            },
            "description": "Creates or reuses a public link for a published report. Use `access: restricted` for the internal app URL only, `access: anyone-view` for a tokenized public link, optional `expiresInDays` to set expiry, or `action: revoke` to revoke the active public link."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"token\": \"share_abc123\",\n  \"url\": \"https://www.operalta.ai/reports/public/acme/2026-02/v1/share_abc123\",\n  \"viewerPolicy\": {\n    \"watermarkExternal\": true\n  }\n}"
            }
          ]
        },
        {
          "name": "Read Public Report",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/public/{{company_slug}}/{{period}}/v{{version}}/{{share_token}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "public",
                "{{company_slug}}",
                "{{period}}",
                "v{{version}}",
                "{{share_token}}"
              ]
            },
            "description": "Reads a frozen public report by share URL. No account is required. The response includes the rendered report content, send metadata, and supersession hints."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"report\": {\n    \"id\": \"uuid\",\n    \"title\": \"February Investor Update\",\n    \"markdown\": \"# February Investor Update\\n\\nRevenue grew 12%...\",\n    \"templateId\": \"monthly-update\",\n    \"datePreset\": \"month\",\n    \"dateRangeStart\": \"2026-02-01\",\n    \"dateRangeEnd\": \"2026-02-29\",\n    \"totalEntries\": 18,\n    \"createdAt\": \"2026-03-01T10:00:00Z\",\n    \"company\": {\n      \"id\": \"uuid\",\n      \"name\": \"Portfolio Co Alpha\",\n      \"slug\": \"portfolio-co-alpha\"\n    }\n  },\n  \"send\": {\n    \"id\": \"uuid\",\n    \"sentAt\": \"2026-03-01T10:00:00Z\",\n    \"isCorrection\": false,\n    \"status\": \"active\",\n    \"periodKey\": \"2026-02\",\n    \"versionNumber\": 2,\n    \"viewerPolicy\": {\n      \"watermarkExternal\": true\n    }\n  },\n  \"meta\": {\n    \"periodLabel\": \"February 2026\",\n    \"isSuperseded\": false,\n    \"nextVersionUrl\": null\n  }\n}"
            }
          ]
        },
        {
          "name": "Read Typed Public Report",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{base_url}}/api/reports/public/typed/{{report_type}}/{{company_slug}}/{{period}}/v{{version}}/{{share_token}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "reports",
                "public",
                "typed",
                "{{report_type}}",
                "{{company_slug}}",
                "{{period}}",
                "v{{version}}",
                "{{share_token}}"
              ]
            },
            "description": "Reads a frozen public report by a template-aware URL prefix such as monthly-updates or lp-reports. The response includes reportTypeLabel metadata and validates that the typed prefix matches the underlying report template."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"success\": true,\n  \"report\": {\n    \"id\": \"uuid\",\n    \"title\": \"February Investor Update\",\n    \"markdown\": \"# February Investor Update\\n\\nRevenue grew 12%...\",\n    \"templateId\": \"monthly-update\",\n    \"datePreset\": \"month\",\n    \"dateRangeStart\": \"2026-02-01\",\n    \"dateRangeEnd\": \"2026-02-29\",\n    \"totalEntries\": 18,\n    \"createdAt\": \"2026-03-01T10:00:00Z\",\n    \"company\": {\n      \"id\": \"uuid\",\n      \"name\": \"Portfolio Co Alpha\",\n      \"slug\": \"portfolio-co-alpha\"\n    }\n  },\n  \"send\": {\n    \"id\": \"uuid\",\n    \"sentAt\": \"2026-03-01T10:00:00Z\",\n    \"isCorrection\": false,\n    \"status\": \"active\",\n    \"periodKey\": \"2026-02\",\n    \"versionNumber\": 2,\n    \"viewerPolicy\": {\n      \"watermarkExternal\": true\n    }\n  },\n  \"meta\": {\n    \"periodLabel\": \"February 2026\",\n    \"reportTypeLabel\": \"Monthly Update\",\n    \"isSuperseded\": false,\n    \"nextVersionUrl\": null\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Metrics Preferences",
      "item": [
        {
          "name": "Get Metric Preferences",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Cookie",
                "value": "sb-your-project-auth-token=...",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/metrics/preferences?vcCompanyId={{company_id}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "metrics",
                "preferences"
              ],
              "query": [
                {
                  "key": "vcCompanyId",
                  "value": "{{company_id}}"
                }
              ]
            },
            "description": "Browser-session route that returns the saved metric display preferences for the VC company. If no preferences exist yet, the server returns the default display configuration."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"preferences\": {\n    \"id\": \"uuid\",\n    \"vcCompanyId\": \"uuid\",\n    \"requestedMetrics\": [\n      \"mrr\",\n      \"runway\"\n    ],\n    \"tableColumns\": [\n      \"mrr\",\n      \"runway\"\n    ],\n    \"cardPages\": [\n      {\n        \"id\": \"overview\",\n        \"title\": \"Overview\",\n        \"metricIds\": [\n          \"mrr\",\n          \"runway\"\n        ]\n      }\n    ],\n    \"createdAt\": \"2026-04-02T10:00:00Z\",\n    \"updatedAt\": \"2026-04-02T11:00:00Z\"\n  }\n}"
            }
          ]
        },
        {
          "name": "Save Metric Preferences",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Cookie",
                "value": "sb-your-project-auth-token=...",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"vcCompanyId\": \"{{company_id}}\",\n  \"requestedMetrics\": [\n    \"mrr\",\n    \"runway\"\n  ],\n  \"tableColumns\": [\n    \"mrr\",\n    \"runway\",\n    \"headcount\"\n  ],\n  \"cardPages\": [\n    {\n      \"id\": \"overview\",\n      \"title\": \"Overview\",\n      \"metricIds\": [\n        \"mrr\",\n        \"runway\"\n      ]\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{base_url}}/api/metrics/preferences",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "metrics",
                "preferences"
              ]
            },
            "description": "Browser-session route that creates or updates the VC metric display preferences and returns the canonical preferences envelope."
          },
          "response": [
            {
              "name": "200 OK",
              "status": "OK",
              "code": 200,
              "body": "{\n  \"preferences\": {\n    \"id\": \"uuid\",\n    \"vcCompanyId\": \"uuid\",\n    \"requestedMetrics\": [\n      \"mrr\",\n      \"runway\"\n    ],\n    \"tableColumns\": [\n      \"mrr\",\n      \"runway\",\n      \"headcount\"\n    ],\n    \"cardPages\": [\n      {\n        \"id\": \"overview\",\n        \"title\": \"Overview\",\n        \"metricIds\": [\n          \"mrr\",\n          \"runway\"\n        ]\n      }\n    ],\n    \"createdAt\": \"2026-04-02T10:00:00Z\",\n    \"updatedAt\": \"2026-04-02T11:00:00Z\"\n  }\n}"
            }
          ]
        }
      ]
    }
  ]
}
