{
  "opencollection": "1.0.0",
  "info": {
    "name": "Uniform Platform Aggregates Favorites API",
    "version": "2.0"
  },
  "items": [
    {
      "info": {
        "name": "Favorites",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "GET /api/v1/favorites",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "{{baseUrl}}/api/v1/favorites",
            "params": [
              {
                "name": "projectId",
                "value": "",
                "type": "query",
                "description": "Project the favorites belong to."
              },
              {
                "name": "entityType",
                "value": "",
                "type": "query",
                "description": "Optional filter; omit to list every favorite for the project."
              },
              {
                "name": "offset",
                "value": "",
                "type": "query",
                "description": "Number of records to skip."
              },
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Maximum number of records to return."
              }
            ],
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Lists the current user's favorites for a project. Optionally filtered by entityType. Returns stale rows when the underlying entity has been deleted - clients render a gone-state with a one-click 'Remove from favorites' affordance."
        },
        {
          "info": {
            "name": "PUT /api/v1/favorites",
            "type": "http"
          },
          "http": {
            "method": "PUT",
            "url": "{{baseUrl}}/api/v1/favorites",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Idempotent upsert. Adds a favorite for the current user if none exists; returns the existing row otherwise. Identity is taken from the verified token, never the body."
        },
        {
          "info": {
            "name": "DELETE /api/v1/favorites",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "{{baseUrl}}/api/v1/favorites",
            "body": {
              "type": "json",
              "data": "{}"
            },
            "auth": {
              "type": "apikey",
              "key": "x-api-key",
              "value": "{{x-api-key}}",
              "placement": "header"
            }
          },
          "docs": "Removes a favorite. Body-keyed by `(entityType, entityId)` rather than by row id so toggling doesn't need a prior fetch. Returns 204 even if the row was already absent (delete is idempotent)."
        },
        {
          "info": {
            "name": "OPTIONS /api/v1/favorites",
            "type": "http"
          },
          "http": {
            "method": "OPTIONS",
            "url": "{{baseUrl}}/api/v1/favorites"
          },
          "docs": "Handles preflight requests. This endpoint allows CORS."
        }
      ]
    }
  ],
  "bundled": true
}