{
  "opencollection": "1.0.0",
  "info": {
    "name": "Coval Agents Test Sets API",
    "version": "1.0.0"
  },
  "request": {
    "auth": {
      "type": "apikey",
      "key": "x-api-key",
      "value": "{{x-api-key}}",
      "placement": "header"
    }
  },
  "items": [
    {
      "info": {
        "name": "Test Sets",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List test sets",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.coval.dev/v1/test-sets",
            "params": [
              {
                "name": "filter",
                "value": "test_set_type=SCENARIO",
                "type": "query",
                "description": "Filter expression syntax.\nValues may be unquoted or double-quoted. Values containing spaces must be quoted.\nExample: `test_set_type=SCENARIO`\n"
              },
              {
                "name": "page_size",
                "value": "",
                "type": "query",
                "description": "Maximum number of test sets to return (default 50, max 100)"
              },
              {
                "name": "page_token",
                "value": "",
                "type": "query",
                "description": "Token for retrieving the next page of results"
              },
              {
                "name": "order_by",
                "value": "-create_time",
                "type": "query",
                "description": "Field to order results by. Prefix with `-` for descending order.\nExample: `-create_time` for newest first\n"
              },
              {
                "name": "tag_filters",
                "value": "regression",
                "type": "query",
                "description": "Filter test sets by tags. A resource matches when it has ALL the listed tags (AND-semantics).\n\nRepeat the parameter for each tag (e.g., `?tag_filters=production&tag_filters=regression`).\n"
              }
            ]
          },
          "docs": "List test sets for your organization."
        },
        {
          "info": {
            "name": "Create test set",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.coval.dev/v1/test-sets",
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "Create a new test set."
        },
        {
          "info": {
            "name": "Get test set",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              }
            ]
          },
          "docs": "Retrieve a test set by ID."
        },
        {
          "info": {
            "name": "Update test set",
            "type": "http"
          },
          "http": {
            "method": "PATCH",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "Update a test set."
        },
        {
          "info": {
            "name": "Delete test set",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              }
            ]
          },
          "docs": "Delete a test set.\n"
        },
        {
          "info": {
            "name": "Duplicate a test set",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id/duplicate",
            "params": [
              {
                "name": "test_set_id",
                "value": "",
                "type": "path",
                "description": "ID of the test set to duplicate"
              }
            ]
          },
          "docs": "Clone an existing test set and its active test cases into a new test set. Returns the new test set."
        },
        {
          "info": {
            "name": "List test set versions",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id/versions",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              }
            ]
          },
          "docs": "List the prior-state version history for a test set, newest first. The live test set is the current version and is not included here. Each entry captures the test set's config and an ordered snapshot of its test-case rows."
        },
        {
          "info": {
            "name": "Revert test set version",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id/versions/:version_id/revert",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              },
              {
                "name": "version_id",
                "value": "01KKWQYSF737ZN6X1Q1RYX8M22",
                "type": "path",
                "description": "ULID of the target version to re-apply"
              }
            ]
          },
          "docs": "Re-apply a prior version's content (config + test-case grid) to the live test set. A revert is forward-only: it mints a new version (change_type=revert) and advances the test set, so the response reflects the test set's new live config. Reverting to the version the test set already points at is rejected with 400. Test cases are not included in the response; fetch them separately via GET /test-cases."
        },
        {
          "info": {
            "name": "List associated agents",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id/agents",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              }
            ]
          },
          "docs": "List the agents currently associated with a test set. Returns every associated agent (not paginated); associations are bounded per test set. An unknown test_set_id returns an empty list rather than 404."
        },
        {
          "info": {
            "name": "Associate agents with a test set",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id/agents:add",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "Associate one or more agents with a test set. The operation is idempotent: already-associated agents are a no-op, and unknown or inactive agent IDs are ignored. The response reflects the resulting association set, so callers can confirm which IDs took effect."
        },
        {
          "info": {
            "name": "Remove an agent association",
            "type": "http"
          },
          "http": {
            "method": "DELETE",
            "url": "https://api.coval.dev/v1/test-sets/:test_set_id/agents/:agent_id",
            "params": [
              {
                "name": "test_set_id",
                "value": "abc12345",
                "type": "path",
                "description": "Test set ID (8-character ID)"
              },
              {
                "name": "agent_id",
                "value": "abc123def456ghi789jklm",
                "type": "path",
                "description": "Agent ID (22-character ShortUUID)"
              }
            ]
          },
          "docs": "Remove one agent's association with a test set. Idempotent: returns 200 whether or not the association existed."
        }
      ]
    }
  ],
  "bundled": true
}