{
  "opencollection": "1.0.0",
  "info": {
    "name": "Estuary Flow Control Plane API",
    "version": "1.0"
  },
  "request": {
    "auth": {
      "type": "bearer",
      "token": "{{accessToken}}"
    }
  },
  "items": [
    {
      "info": {
        "name": "Auth",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "Exchange a refresh token for a short-lived access token.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/rpc/generate_access_token",
            "body": {
              "type": "json",
              "data": "{\"refresh_token\":{\"id\":\"\",\"secret\":\"\"}}"
            }
          },
          "docs": "PostgREST RPC that exchanges a refresh token id + secret for a signed access token used as the Authorization Bearer credential."
        },
        {
          "info": {
            "name": "List refresh tokens.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/refresh_tokens"
          },
          "docs": "List the long-lived refresh tokens owned by the authenticated user."
        },
        {
          "info": {
            "name": "Create a refresh token.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/refresh_tokens",
            "body": {
              "type": "json",
              "data": "{\"detail\":\"\",\"multi_use\":true,\"valid_for\":\"90 days\"}"
            }
          },
          "docs": "Create a new long-lived refresh token; the secret is returned once."
        },
        {
          "info": {
            "name": "Revoke a refresh token.",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.estuary.dev/refresh_tokens?id=eq.:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "The refresh token id to revoke."
              }
            ]
          },
          "docs": "Revoke a refresh token."
        },
        {
          "info": {
            "name": "List user grants.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/user_grants"
          },
          "docs": "List capability grants from users to catalog prefixes."
        },
        {
          "info": {
            "name": "List role grants.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/role_grants"
          },
          "docs": "List capability grants between catalog prefixes (roles)."
        }
      ]
    },
    {
      "info": {
        "name": "Live Specs",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List live specifications (captures, materializations, collections).",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/live_specs?spec_type=eq.capture"
          },
          "docs": "List published, running catalog entities. Filter by spec_type (capture, materialization, collection, test) and catalog_name using PostgREST operators."
        },
        {
          "info": {
            "name": "Get a single live specification.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/live_specs?id=eq.:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "The live spec flowid."
              }
            ]
          },
          "docs": "Get a single live spec by id."
        },
        {
          "info": {
            "name": "List data-flow lineage edges.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/live_spec_flows"
          },
          "docs": "List source-to-target edges between live specs."
        }
      ]
    },
    {
      "info": {
        "name": "Drafts",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List drafts.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/drafts"
          },
          "docs": "List drafts owned by the user."
        },
        {
          "info": {
            "name": "Create a draft.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/drafts",
            "body": {
              "type": "json",
              "data": "{\"detail\":\"\"}"
            }
          },
          "docs": "Create a new empty draft."
        },
        {
          "info": {
            "name": "Delete a draft.",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.estuary.dev/drafts?id=eq.:id",
            "params": [
              {
                "name": "id",
                "value": "",
                "type": "path",
                "description": "The draft id to delete."
              }
            ]
          },
          "docs": "Delete a draft and its draft specs."
        },
        {
          "info": {
            "name": "List draft specs.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/draft_specs?draft_id=eq.:draft_id",
            "params": [
              {
                "name": "draft_id",
                "value": "",
                "type": "path",
                "description": "The parent draft id."
              }
            ]
          },
          "docs": "List the capture/materialization/collection specs staged within a draft."
        },
        {
          "info": {
            "name": "Upsert a draft spec.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/draft_specs",
            "body": {
              "type": "json",
              "data": "{\"draft_id\":\"\",\"catalog_name\":\"acmeCo/source\",\"spec_type\":\"capture\",\"spec\":{}}"
            }
          },
          "docs": "Add or replace a spec in a draft. Send Prefer: resolution=merge-duplicates to update in place."
        }
      ]
    },
    {
      "info": {
        "name": "Publications",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List publications.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/publications"
          },
          "docs": "List publication jobs and their status."
        },
        {
          "info": {
            "name": "Publish a draft.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/publications",
            "body": {
              "type": "json",
              "data": "{\"draft_id\":\"\",\"dry_run\":false}"
            }
          },
          "docs": "Enqueue an asynchronous publication of a draft into the running data plane; poll the created row until job_status.type is success."
        }
      ]
    },
    {
      "info": {
        "name": "Connectors",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List connectors.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/connectors"
          },
          "docs": "List available capture and materialization connectors."
        },
        {
          "info": {
            "name": "List connector tags.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/connector_tags"
          },
          "docs": "List tagged image versions of connectors and their endpoint/resource spec schemas."
        },
        {
          "info": {
            "name": "Run schema discovery.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/discovers",
            "body": {
              "type": "json",
              "data": "{\"connector_tag_id\":\"\",\"capture_name\":\"acmeCo/source\",\"endpoint_config\":{}}"
            }
          },
          "docs": "Enqueue a discovery job to produce recommended bindings and collection schemas for a capture."
        }
      ]
    },
    {
      "info": {
        "name": "Tenants & Billing",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List tenants.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/tenants"
          },
          "docs": "List tenants (billing/ownership prefixes) the user can access."
        },
        {
          "info": {
            "name": "Read catalog usage statistics.",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.estuary.dev/catalog_stats?grain=eq.monthly"
          },
          "docs": "Read bytes and docs captured/materialized per catalog entity and grain."
        },
        {
          "info": {
            "name": "Compute a monthly billing report.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.estuary.dev/rpc/billing_report_202308",
            "body": {
              "type": "json",
              "data": "{\"billed_prefix\":\"acmeCo/\",\"billed_month\":\"2026-07-01\"}"
            }
          },
          "docs": "RPC returning data-movement GB, connector-instance line items, and total for a tenant and billed month."
        }
      ]
    }
  ],
  "bundled": true
}
