{
  "info": {
    "name": "Roadie API",
    "description": "Roadie is managed Backstage - a hosted internal developer portal and software catalog. This collection covers the public REST API at https://api.roadie.so/api: the software Catalog (read), the Entity Push API (roadie-entities and idempotent entity sets), the Scaffolder v2 API (software templates), and the Tech Insights v1 API (facts, checks, scorecards). All requests require a Bearer token (User or Service Token) created in the Roadie Administration UI. Available on Cloud Hosted Roadie.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      { "key": "token", "value": "{{bearerToken}}", "type": "string" }
    ]
  },
  "variable": [
    { "key": "baseUrl", "value": "https://api.roadie.so/api", "type": "string" },
    { "key": "bearerToken", "value": "", "type": "string" }
  ],
  "item": [
    {
      "name": "Catalog",
      "item": [
        {
          "name": "List catalog entities",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/entities", "host": ["{{baseUrl}}"], "path": ["catalog", "entities"] },
            "description": "Lists software catalog entities. Supports filter, fields, limit, and offset query parameters."
          }
        },
        {
          "name": "Query catalog entities",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/entities/by-query", "host": ["{{baseUrl}}"], "path": ["catalog", "entities", "by-query"] },
            "description": "Paginated, filterable query over catalog entities returning items plus a next cursor."
          }
        },
        {
          "name": "Get entity by name",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/entities/by-name/:kind/:namespace/:name", "host": ["{{baseUrl}}"], "path": ["catalog", "entities", "by-name", ":kind", ":namespace", ":name"] },
            "description": "Retrieves a single catalog entity by kind, namespace, and name."
          }
        },
        {
          "name": "Get entity facets",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/entity-facets", "host": ["{{baseUrl}}"], "path": ["catalog", "entity-facets"] },
            "description": "Returns counts of entities grouped by a facet such as kind or spec.type."
          }
        }
      ]
    },
    {
      "name": "Entity Push",
      "item": [
        {
          "name": "Create a Roadie-managed entity",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"apiVersion\": \"backstage.io/v1alpha1\",\n  \"kind\": \"Component\",\n  \"metadata\": { \"name\": \"my-service\" },\n  \"spec\": { \"type\": \"service\", \"owner\": \"team-a\", \"lifecycle\": \"production\" }\n}" },
            "url": { "raw": "{{baseUrl}}/catalog/roadie-entities/entities", "host": ["{{baseUrl}}"], "path": ["catalog", "roadie-entities", "entities"] },
            "description": "Pushes a single Backstage-format entity into the catalog as a Roadie-owned entity."
          }
        },
        {
          "name": "Get a Roadie-managed entity",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/roadie-entities/entities/:entityId", "host": ["{{baseUrl}}"], "path": ["catalog", "roadie-entities", "entities", ":entityId"] },
            "description": "Retrieves a Roadie-owned entity by its id."
          }
        },
        {
          "name": "Delete a Roadie-managed entity",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/roadie-entities/entities/:entityId", "host": ["{{baseUrl}}"], "path": ["catalog", "roadie-entities", "entities", ":entityId"] },
            "description": "Removes a Roadie-owned entity from the catalog by its id."
          }
        },
        {
          "name": "Create or replace an entity set",
          "request": {
            "method": "PUT",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"items\": []\n}" },
            "url": { "raw": "{{baseUrl}}/catalog/roadie-entities/sets/:setName", "host": ["{{baseUrl}}"], "path": ["catalog", "roadie-entities", "sets", ":setName"] },
            "description": "Idempotently creates or replaces the complete set of entities under the named set. An empty items array clears the set."
          }
        },
        {
          "name": "Delete an entity set",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": { "raw": "{{baseUrl}}/catalog/roadie-entities/sets/:setName", "host": ["{{baseUrl}}"], "path": ["catalog", "roadie-entities", "sets", ":setName"] },
            "description": "Deletes the named entity set and all entities it manages."
          }
        }
      ]
    },
    {
      "name": "Scaffolder",
      "item": [
        {
          "name": "List scaffolder actions",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/scaffolder/v2/actions", "host": ["{{baseUrl}}"], "path": ["scaffolder", "v2", "actions"] },
            "description": "Lists the scaffolder actions available to build software templates."
          }
        },
        {
          "name": "List scaffolder tasks",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/scaffolder/v2/tasks", "host": ["{{baseUrl}}"], "path": ["scaffolder", "v2", "tasks"] },
            "description": "Lists scaffolder (template execution) tasks and their statuses."
          }
        },
        {
          "name": "Run a software template",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"templateRef\": \"template:default/create-service\",\n  \"values\": {}\n}" },
            "url": { "raw": "{{baseUrl}}/scaffolder/v2/tasks", "host": ["{{baseUrl}}"], "path": ["scaffolder", "v2", "tasks"] },
            "description": "Executes a Backstage software template by reference with input values and optional secrets. Returns a task id."
          }
        },
        {
          "name": "Get a scaffolder task",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/scaffolder/v2/tasks/:taskId", "host": ["{{baseUrl}}"], "path": ["scaffolder", "v2", "tasks", ":taskId"] },
            "description": "Retrieves the status and step output of a scaffolder task."
          }
        },
        {
          "name": "Stream scaffolder task events (SSE)",
          "request": {
            "method": "GET",
            "header": [{ "key": "Accept", "value": "text/event-stream" }],
            "url": { "raw": "{{baseUrl}}/scaffolder/v2/tasks/:taskId/eventstream", "host": ["{{baseUrl}}"], "path": ["scaffolder", "v2", "tasks", ":taskId", "eventstream"] },
            "description": "Server-Sent Events stream of log and completion events for a running task. Not a WebSocket."
          }
        },
        {
          "name": "Dry-run a software template",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"template\": {},\n  \"values\": {}\n}" },
            "url": { "raw": "{{baseUrl}}/scaffolder/v2/dry-run", "host": ["{{baseUrl}}"], "path": ["scaffolder", "v2", "dry-run"] },
            "description": "Executes a template in dry-run mode to preview output without creating anything."
          }
        }
      ]
    },
    {
      "name": "Tech Insights",
      "item": [
        {
          "name": "Retrieve facts",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/tech-insights/v1/facts", "host": ["{{baseUrl}}"], "path": ["tech-insights", "v1", "facts"] },
            "description": "Returns collected Tech Insights facts for one or more entities."
          }
        },
        {
          "name": "List checks",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/tech-insights/v1/checks", "host": ["{{baseUrl}}"], "path": ["tech-insights", "v1", "checks"] },
            "description": "Lists the Tech Insights checks defined in the tenant."
          }
        },
        {
          "name": "Run checks",
          "request": {
            "method": "POST",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"entities\": [],\n  \"checks\": []\n}" },
            "url": { "raw": "{{baseUrl}}/tech-insights/v1/checks/run", "host": ["{{baseUrl}}"], "path": ["tech-insights", "v1", "checks", "run"] },
            "description": "Evaluates one or more checks against the supplied entities and returns pass/fail results."
          }
        },
        {
          "name": "List scorecards",
          "request": {
            "method": "GET",
            "header": [],
            "url": { "raw": "{{baseUrl}}/tech-insights/v1/scorecards", "host": ["{{baseUrl}}"], "path": ["tech-insights", "v1", "scorecards"] },
            "description": "Returns Tech Insights scorecards - grouped sets of checks measuring quality across the catalog."
          }
        }
      ]
    }
  ]
}
